ドミノを描いて


35

チャレンジ

2桁の0-9を入力として、2つの面にこれらの数のピップ(ドット)を持つドミノ(ダブルナインドミノセットから)を出力します。10の可能な面は次のようになります(パイプで区切られています):

     |     |    o|    o|o   o|o   o|o o o|o o o|o o o|o o o
     |  o  |     |  o  |     |  o  |     |  o  |o   o|o o o
     |     |o    |o    |o   o|o   o|o o o|o o o|o o o|o o o

または別の行に:

     
     
     
-----
     
  o  
     
-----
    o
     
o    
-----
    o
  o  
o    
-----
o   o
     
o   o
-----
o   o
  o  
o   o
-----
o o o
     
o o o
-----
o o o
  o  
o o o
-----
o o o
o   o
o o o
-----
o o o
o o o
o o o

入力フォーマット

以下を含むがこれらに限定されない、合理的な形式で入力を行うことができます。

  • 2つの個別の整数、文字列、またはシングルトン配列。
  • 0〜99の単一の整数。
  • 2つの整数の配列。
  • 2桁の文字列。

出力形式

  • 2つの面は、次のようにパイプで区切られて水平方向に整列する場合があります。
    o|o   o
     |  o  
o    |o   o
  • または、次のようにハイフンで区切って垂直に並べることができます。
    o
     
o    
-----
o   o
  o  
o   o
  • 必要に応じて、ドミノの周囲に境界線を出力できます。
  • 行のリスト、2つの面のリスト、またはこれらの組み合わせを出力することもできます。
  • ピップには空白以外の文字を使用できます(私は使用しましたo)。
  • 本当に望むなら0、空白と1ピップ、または配列を出力する場合はFalse/ True(または言語の同等物)に使用できます。
  • 列間の空白を削除できます。これは、7、7の有効な出力です。
ooo|ooo
 o | o 
ooo|ooo
  • どの面も90度回転できます。これは、7、7の有効な出力でもあります。
o   o|o o o
o o o|  o  
o   o|o o o
  • 出力の主要部分が他の制約に適合している限り、好きなだけ多くの/少ない先頭/末尾の空白を使用できます。
  • 行が空であっても、各面の高さは3行でなければなりません。0、1の場合、これを出力できませんでした。
-----

  o

しかし、あなたこれを出力することができます:




-----

  o

同様に、行の2つのリストのリストを出力する場合、できますが、できませ[["", "", ""], ["", " o", ""]][[""], [" o "]]

得点

これはであるため、各言語のバイト単位の最短コードが優先されます。


したがって、入力については[2, 1]、出力できます[[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]か?
デニス

@Dennis正しい。
ETHproductions

2
面の間のセパレータはダッシュにする必要がありますか、それとも他の一貫した値にすることができますか?
ジョーキング

@JoKingすでに使用しているキャラクター以外の一貫したキャラクターを使用できると言います。
ETHproductions

[0,5,21,29,31]ここで私の友人はすべて重要な数字です。
魔法のタコ

回答:


14

パイソン2101の 97 92 68 64バイト

lambda*a:[[[n>3,n>5,n>1],[n>7,n%2,n>7],[n>1,n>5,n>3]]for n in a]

オンラインでお試しください!

クレジット


@ Mr.Xcoderが再度更新されました。
ニール

1
フォーマットはオプションです。マトリックスのペアを返すと、少なくとも22バイト節約されます。
デニス

1
フォーマットなしの68バイト0およびFalsePythonで等しいため、問題ないはずです)。
ジョナサンアラン

@JonathanAllan非常に賢く、更新されました。
ニール

64バイト。ラムダを作成する必要がある場合、リストの理解はおそらく短くなります。
完全に人間の

12

C(gcc)252 242 269 262 241 235 220バイト

これがポップアップ表示されたとき、私はPythonのソケットのスタックオーバーフローにいましたが、なぜそうではなかったのですか?最初にゴルフをコーディングするので、ルールを100%守ったかどうかは完全にはわかりません(そうでない場合、誰かが私のことわざであるCookieを盗んでそれを修正したいので)。「o」と「」を使用すると、255 245 272 265 244 238 228バイト。+48を* 79 + 32に置き換えます。

#define Q(P,R)(R>>P&1)+48
char a[11];i=0;f(char*c){char b=c[0];a[3]=a[7]='\n';a[5]=Q(0,b);a[1]=a[9]=Q(3,b);a[2]=a[8]=Q(2,b)|a[1];a[0]=a[10]=Q(1,b)|a[2];a[4]=a[6]=a[1]|Q(2,b)&Q(1,b);puts(a);if(i++<1){puts("---");f(c+1);}}

オンラインでお試しください!

使い方:
ビットシフトとビット単位を使用して、スポットがクリアかピップかを確認し、0または1を正しいASCII値にオフセットします。4と5で台無しになったため、修正が必要でした。実際に数バイト追加しました。マスクを削除して1(doh)を使用するだけで数バイトを削除できました

余分な#define
変更を削除して7バイト少ないことをMr. Xcoderに感謝します:memset -21バイトを削除しました。6、4、2のビットロジックを、それぞれ8 | 4&2、8 | 4、8 | 4 | 2に依存するように変更しました。-6バイト。また、printfの代わりにputsを使用して余分な改行を削除しました。これも短くなっています。配列を11に短縮し、余分な割り当てを削除しました。-15バイト。今、私はそれが私ができる最善だと思います。


7
PPCGへようこそ!
シャギー

こんにちは、PPCGへようこそ!コードをもう少し短くすることができます。245バイト
Mr. Xcoder

'\n'に置き換えることができます10。(Cでは、charデータ型も整数データ型であるため)一部charはおそらくに置き換えることができintます。(または完全に省略)
user202729

ここでは 184バイトまでですが、それは現在のCゴルフよりも大きいためです。
アンドリューバウマー


10

ゼリー、20バイト

“¤o.ƤẸʠṚ’B¬s5ŒBị@s€3

オンラインでお試しください!

代替バージョン、元の出力、33 32 31バイト

“¤o.ƤẸʠṚ’ṃ⁾ os5ŒBị@s€3K€€Zj€”|Y

1バイトのゴルフをしてくれた@ user202729に感謝します!

オンラインでお試しください!

使い方

まず、“¤o.ƤẸʠṚ’-全単射250の整数リテラル-戻り値を1086123479729183に設定します。

次に、戻り値をバイナリに変換し、各桁の論理否定を取り、配列を生成します

00001001000010110100101011110011101111101111100000

次に、s5ŒBその配列を長さ5のチャンクに分割し、各チャンクをバウンスしabcdeabcdedcbaに変換して

000010000 001000100 001010100 101000101 101010101

111000111 111010111 111101111 111111111 000000000

ここで、この配列ị@j 番目k 番目の項目を取得します。j、kはプログラムの最初の引数です。インデックス付けは1ベースでモジュール式であるため、0番目の要素も10番目であることに注意してください。

最後に、s€3長さ9の各チャンクを長さ3の3つのチャンクに分割します。


1
私にはまだ魔法のように見えますが、説明の試みに感謝しています。私はちょうど卑しいPHPのWeb開発者ですと、障害はおそらく私のものです認める
ArtisticPhoenix

3使用されて0いない、ピップのために1他のすべてのように。
ジョナサンアラン

“¤o.ƤẸʠṚ’動作するはずです。
ジョナサンアラン

@JonathanAllanありがとう!わからないことが起こったのか...
デニス・

8

ゼリー、13バイト

⁽½ÑD<;ḂŒBs3µ€

オンラインでお試しください!

組み合わせデニス「を使用してのアイデアŒBで(バウンス)この回答Xcaliでの観測を」この答えは、 13のバイトを取得します。


ゼリー、28バイト

(きれいな印刷で)

今だけ私はゼリー文字列リテラルが自動的に終了することを知っています...

⁽½ÑD<;ḂŒBị⁾o Ks6Yµ€j“¶-----¶

オンラインでお試しください!


どうやら私のアプローチの⁽½ÑDEriktheOutgolferの答え未満:バイトまでのリード線“¤¦¢¬‘ 、ここで
user202729

13バイト(golf Dennisを超える)がトップになり、より簡単に表示できるように、関数を並べ替えるのが最善ではないでしょうか?
ザカリー

@Zacharý一時的なソリューション。後で修正します。
user202729

6

PHP 155、150バイト

function d($a){foreach($a as$n){$o="---";for($i=0;$x=2**$i,$i<9;++$i)$o.=([0,16,68,84,325,341,365,381,495,511])[$n]&$x?0:' ';echo chunk_split($o,3);}}

入力として整数の配列を取ります。検査用の:

d([1,2]);

echo "=========\n";

d([0,1,2,3,4,5,6,7,8,9]);

出力フォーマット:

---

 0 

---
  0

0  

ここでライブでチェックしてください

私のソリューション

私のソリューションでは、ビット単位の数値(2のべき乗)で構成される行列を使用しました。次のように視覚化できます。

 1  |  2  |  4
 8  | 16  | 32
 64 | 128 | 256

そして、番号付きインデックスで関連付けられた各ドミノのピップのビット位置で構成されるストレージ配列:

[0,16,68,84,325,341,365,381,495,511]

明確にするために:

  • 例0:インデックス0または値0は空白のドミノで、常にfalseです。
  • 例1:インデックス1または値16は、ナンバーワンのドミノであり、中央にあるマトリックス内にあります16
  • 例2:インデックス2または値68は、2番目のドミノで、右上4と左下のマトリックスにある64 か、または4|64
  • 例3:インデックス5または値341は5番目のドミノであり、1|4|16|64|256
  • 例4:インデックス9または値511は9番のドミノで、マトリックスではすべてのビットの組み合わせになります。

一度確立されると、マトリックス内の9つの位置をループし、次のべき乗に設定$xするのはかなり簡単です。2$i

for($i=0;$x=2**$i,$i<9;++$i)

その後、ビット単位で実行し、&それらのスポットを繰り返し処理します。したがって、例では上記の例2を使用しx、視覚的にわかりやすくするためにスペースを代わりに使用します。

  • 反復1の68 & 1 ? 0 : 'x'結果'x'
  • 反復2、68 & 2 ? 0 : 'x'その結果'x'
  • 反復3、68 & 4 ? 0 : 'x'その結果0
  • 反復4の68 & 8 ? 0 : 'x'結果'x'
  • 反復5、68 & 16 ? 0 : 'x'で結果'x'
  • 反復6、68 & 32 ? 0 : 'x'結果'x'
  • 反復7、68 & 64 ? 0 : 'x'その結果0
  • 反復8、68 & 128 ? 0 : 'x'その結果'x'
  • 反復9、68 & 256 ? 0 : 'x'その結果'x'

ループが完了すると、この文字列で終了します"xx0xxx0xx"

次に、境界線を追加"---xx0xxx0xx"します(実際には境界線から始めますが、何でも)

最後に、3でchunk_split()実行します。

---
xx0
xxx
0xx

ご意見をお聞かせください。


php.net/manual/en/language.operators.arithmetic.phpの**代わりにPHP 5.6で導入されたべき乗演算子を使用して、さらに短縮することができますpow()
Daniel

@Daniel-おかげで5バイト節約できました!私は彼らがそれを追加したことを知りませんでした、私は常に使用しようとしますが^、そのビット単位のXOR ... lol
ArtisticPhoenix

余分な境界線を印刷することは許可されていないと思います。
12Me21

OPでそれをリモートで示唆している場所を教えてください。
ArtisticPhoenix

これは動作時間が短くなると思い$argvます。PHPの関数オーバーヘッドは通常13バイトです。
タイタス

6

Perl 5の107 76 70 + 1( -a = 70バイト

Perl 5バイト

$,="
---
";say map{$_='351
7 7
153'=~s/\d/$_>$&||0/ger=~s/ /$_%2/er}<>

オンラインでお試しください!

空白には0を、ピップには1を使用します。非常に簡単な方法:数字が上がると、ピップが「オン」になると、中央のピップ以外は「オフ」にならないことに注意してください。中央の位置では、すべての奇数でオンになります。したがって、各位置について、桁がオフになっている最後の桁より大きいかどうかを確認するだけです。||0条件がfalseの場合、出力を作成します。Perlでは、falseはundefnullとして出力されます。


4

JavaScript(ES6)、79 78バイト

@ETHproductionsのおかげで1バイト節約

カリー化構文の入力(a)(b)を受け取り、垂直ASCIIドミノを出力します。

a=>b=>(g=n=>`351
707
153`.replace(/./g,d=>' o'[(+d?n>d:n)&1]))(a)+`
---
`+g(b)

デモ


水平バージョン、80 79バイト

@ETHproductionsのおかげで1バイト節約

入力を2つの整数の配列として受け取り、水平ASCIIドミノを出力します。

a=>`240|351
686|797
042|153`.replace(/\d/g,d=>' o'[(d<8?(x=a[d&1])>(d|1):x)&1])

デモ


素敵な、私が持っていたものに非常に似ています。いずれかのバイト保存n>d|0または(+d?n>d:n)&1
ETHproductions

4

APL(Dyalog)、25バイト

2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨

オンラインでお試しください!

-2ありがとう ngnにます

出力形式は少し奇妙です。この関数は、それぞれ0と1を含む2つのshape-3,3配列を含む配列を返します。


-2バイトの書き換え:2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨
ngn

@ngnありがとう、それは賢いです:p
エリック・ザ・アウトゴルファー


2

Javascript(ES6)、87バイト

a=>b=>[(s=n=>[[n>3,n>5,n>1],[n>7,n%2,n>7],[n>1,n>5,n>3]].map(c=>c.map(b=>+b)))(a),s(b)]

f=a=>b=>[(s=n=>[[n>3,n>5,n>1],[n>7,n%2,n>7],[n>1,n>5,n>3]].map(c=>c.map(b=>+b)))(a),s(b)]
<div oninput="o.innerText=JSON.stringify(f(a.value)(b.value))"><input id=a type=number min=1 max=9 value=1><input id=b type=number min=1 max=9 value=1><pre id=o>


素敵なDOMinoes ...
エソランジングフルーツ

2

Haskell-88文字

map$zipWith(zipWith($))[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]].repeat.repeat

面を示す2つの数字のリストを受け取り、boolのリストのリストのリストを返します。それほど短くはありませんが、このソリューションは興味深いものです。


andのmap代わりに使用できます:オンラインで試してみてください!repeatzipWithmap$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)
ライコニ

non-pointfreeはさらに2バイトを節約します:オンラインで試してみてください!
ライコニ

2

ピップ32 27 24 21バイト

@DLoscのおかげで-3バイト

FcgP[Yc>_M3517c%2RVy]

オンラインでお試しください!

説明:

F                      For each
 c                       character $c
  g                      in the list of inputs:
   P                     Print
    [               ]      an array consisting of
                             an array of bits representing whether
      c>                       $c is greater than
        _M                       each of
          3517                     3, 5, 1, and 7
     Y                       (call this bit array $y),
              c%2            $c mod 2,
                 RV          and the reverse
                   y           of $y.

1
ピップ賞金を獲得しておめでとうございます!バウンティ期間が終了したので、次のように伝えることができます。list 3517ではなくスカラーにマッピングすることで3バイトを節約できます[3 5o7]。;)
DLosc

1

> <>、57 + 3 = 60バイト

>{:3)$:5)$:1)$:7)$:2%$\ao \
\?%cl999)3$)5:$)1:$)7:/nnn<rp

オンラインで試す。次のように、ドットが1、空白が0、セパレータが9の垂直ドミノとして出力されます。

001
000
100
999
111
111
111

技術的には、これは最大12個の入力値に拡張できます。

旧バージョン:

> <>、76 + 3 = 79バイト

>{:3)$:5)$:1)$a$:7)$:2%$:7)\&?o~?!n\
\?(*a3la"---"a)3$)5:$)1:$a$/$&:)9::<r~p

オンラインでお試しください。次のように、ドットが1で空白が0の垂直ドミノとして出力されます。

001
000
100
---
111
111
111

1

46 44 43 39バイト

EE²℅§@APQTUVW^_NE⪪E⁹§ o÷ιX²↔⁻⁴λ³⪫λ M⁵↑⁵

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:

EE²℅§@APQTUVW^_N

2つの整数を読み取り、ルックアップテーブルにマッピングします。次に、結果をマップします。(これにより、結果が一時的に効果的にキャプチャされます。)

  E⁹                Loop `l` (!) from 0 to 8
            ⁻⁴λ     Subtract from 4
           ↔        Absolute value
         X²         Power of 2
       ÷ι           Divide into the looked-up value `i`
    § o             Convert to space or o
 ⪪             ³    Split into (3) groups of 3
E                   Map over each group
                ⪫λ  Join the 3 characters with spaces

結果は暗黙的に個別の行に印刷され、結果はネストされているため、各面の間に余分な空白行が追加されます。

M⁵↑⁵

上に移動して、面の間に分割線を描画します。

以前の43バイトの水平バージョン:

↶P³M⁷←FE²℅§@APQTUVW^_NF⁹«F¬﹪κ³⸿⸿§ o÷ιX²↔⁻⁴κ

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:

垂直に作業します。

P³

分割線を印刷します。

M⁷←

最初の面の開始位置。

FE²℅§@APQTUVW^_N

2つの整数を読み取り、それらをルックアップテーブルにマッピングします。

F⁹«

最大9 o秒の出力を準備します。

F¬﹪κ³⸿⸿

ただし、3 o秒ごとに新しい列を開始します。

§ o÷ιX²↔⁻⁴κ

ASCIIコードの下位5ビットをバイナリに変換し、残りの4 o秒間出力をミラーリングします。


出力形式はかなり自由で、数バイト節約できます。
デニス

1
この魔術は何ですか
ArtisticPhoenix

@Dennis実際には、元の出力形式が最も役立ちます。これは、分割線を自動的に描画する余地があるからです。
ニール

ああ、2つのニールがあります。
ザカリー

2
あなたが名前ニールが含まれている...人含まれている場合、@ザカリーは、実際のユーザーのページによると8、または40がある
ニール・

1

ゼリー、16バイト

>⁽¤xb8¤;ḂŒḄs3
Ç€

オンラインでお試しください!

中古 ニールの戦略と値を生成するために、ベース解凍を。バイナリ配列として出力します。入力としてリストを受け取ります。

説明:

Ç€
 € for €ach input,
Ç  execute the previous line.

>⁽¤xb8¤;ḂŒḄs3
 ⁽¤xb8¤       the array [3, 5, 1, 7]
>             1 if the input is greater than each element, 0 otherwise
       ;Ḃ     append input % 2
         ŒḄ   bounce array
           s3 split into chunks of 3

0

APL + WIN、 49 47バイト

4⌽'|',⌽⍉6 3⍴,⍉(9⍴2)⊤(+\∊0 241 52 24 114,¨16)[⎕]

Adamのコメントに従って編集されました。ありがとうございます。インデックスの原点がゼロで実行されます。

各面に1つの整数のベクトルとして画面入力を要求します。

出力の形式は次のとおりです。

1 1 1 | 0 0 1    0 0 0 | 1 0 1
0 1 0 | 0 1 0    0 0 0 | 0 1 0
1 1 1 | 1 0 0    0 0 0 | 1 0 1

入力のために7 30 5

説明:

(+\∊0 241 52 24 114,¨16) create a vector of integers whose binaries
                         represent the dots on the domino faces

[1+⎕] take input integers as indices to select from above vector

⍉6 3⍴,⍉(9⍴2)⊤ convert selected integers to a 9x2 binary matrix and reshape
              to match the orientation of the domino faces

4⌽'|',⌽ rotate, concatenate centre line markers and rotate again to centre 

なぜ⎕IO←0自分を救うために使用しないの1+ですか?
アダム

@アダムなぜそうではない-怠け者;)
グラハム

0

Python 2、121バイト

lambda x,y,d="001155777702020202570044557777":[("%03d"%int(bin(int(o))[2:]),"---")[o=="3"]for o in d[x::10]+"3"+d[y::10]]

オンラインでお試しください!

戻ってルールを読み直した後、ラムダを使用して121に削減されました。行のリストを出力するようになりました。

きれいにフォーマットされた出力を持つ以前のバージョン:

パイソン2156の 153 147 141バイト

x,y=input()
d="001155777702020202570044557777"
a=["%03d"%int(bin(int(o))[2:])for o in d[x::10]+d[y::10]]
for x in a[:3]+["---"]+a[3:]:print x

オンラインでお試しください!

-3 @NieDzejkobのおかげで

入力を2つの整数として受け取り、0 =スペースおよび1 =ドットの垂直形式で出力します。



0

PYT220 154バイト

2回目の試行(154バイト)

46281ᴇ8264áĐ9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ⇹9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ5⑴9△*Ƈǰ⇹Ƈǰ64ȘƇǰ6↔ŕ↔ŕ↔

説明:

46281ᴇ8264áĐ                                    Pattern matching for every cell but the middle
9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș                              Non-pip characters
←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ⇹     Make top cell
9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș                              Non-pip characters
←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ      Make bottom cell
5⑴9△*Ƈǰ⇹Ƈǰ64ȘƇǰ6↔ŕ↔ŕ↔                          Make boundary and combine



最初の試行(220バイト):

2`↔←Đ4≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ6≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ2≥Đ6²⁺3**⇹¬5«+1ᴇ⇹3ȘĐ8≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ2%Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ8≥Đ6²⁺3**⇹¬5«+1ᴇ⇹3ȘĐ2≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ6≥Đ6²⁺3**⇹¬5«+2⁵⇹3Ș4≥Đ6²⁺3**⇹¬5«+1ᴇ9△ĐĐĐĐ1ᴇ↔⁻łŕ↔ŕŕŕŕŕŕáƇǰ

説明:

2                           Push 2 (this is how many 'cells' to make)
`     ... ł                 While the top of the stack is not zero, loop
↔                           Flip the stack (useless at the beginning, undoes the flip at the end of the loop)
←Đ4≥Đ6²⁺3**⇹¬5«+            Set top-left pip
2⁵⇹3Ș                       Space
Đ6≥Đ6²⁺3**⇹¬5«+             Set top-middle pip
2⁵⇹3Ș                       Space
Đ2≥Đ6²⁺3**⇹¬5«+             Set top-right pip
1ᴇ⇹3Ș                       New line
Đ8≥Đ6²⁺3**⇹¬5«+             Set middle-left pip
2⁵⇹3Ș                       Space
Đ2%Đ6²⁺3**⇹¬5«+             Set center pip
2⁵⇹3Ș                       Space
Đ8≥Đ6²⁺3**⇹¬5«+             Set middle-right pip
1ᴇ⇹3Ș                       New line
Đ2≥Đ6²⁺3**⇹¬5«+             Set bottom-left pip
2⁵⇹3Ș                       Space
Đ6≥Đ6²⁺3**⇹¬5«+             Set bottom-middle pip
2⁵⇹3Ș                       Space
4≥Đ6²⁺3**⇹¬5«+              Set bottom-right pip
1ᴇ                          New line
9△ĐĐĐĐ                      Add 5 dashes
1ᴇ                          New line
↔⁻ł                         Decrement counter (if >0, loop; otherwise, exit loop)
ŕ↔ŕŕŕŕŕŕ                    Remove all unnecessary items on the stack
áƇǰ                         Push stack to an array, get characters at unicode codepoints given by values in the array, join characters with empty string


オンラインでお試しください!


0

05AB1E、34バイト

•ΩõIº•R2ô¹2÷è¹È-bDg5s-ú.∞3ô»TR„ o‡

オンラインでお試しください!


05AB1Eのパディングが悪いため、これは困難でした。


基本的な説明:

  • ここには、2、4、6、8の4つの重要なパターンがあります。
  • 3,5,7および9は、その他のパタ​​ーンに1を加えたものです。
  • 1は対称性のため重要ではありません。入力が偶数の場合、1を減算して中間ビットを切り替えます。
  • LSBを切り替えると、ミラーリングのために中間ビットを反転できます。

0

SmileBASIC、92 69バイト

INPUT N,M
DEF Q?N>3;N>5;N>1?N>7;1AND N;N>7?N>1;N>5;N>3
END
Q?777N=M
Q

例:

? 7,2
111
010
111
777
001
000
100

これは、ルールが厳密でない場合に発生することです。


0

FALSE、116 80 78 70 69 66 63 61 59 58バイト

[$3[>_$.\$]$p:!5p;!1p;!"
"7p;!%1&.."
"..."
"]$s:!"---
"s;!

まだこれに取り組んでいます...


0

チップ142 135バイト

! CvDvB
>v-]-x.
|Z-]-]e
|Z]xe|
|ZR(-'
|Zx.AD
|Zxx]x.
|Zx^-]e
|Z<,(-.
|Zx]xe|
|Zx-]-]e
|Zx-]-x'
|Z<C^D^B
|>x~s
|Zx.
|Zx<
|Zxb
|Z+^~f
`zd

オンラインでお試しください!

入力は数字の文字列です。ピップとしてゼロを使用します。1つの数値のピップを描画し、次の入力バイトを読み取ります。次のバイトがない場合は終了し、そうでない場合は仕切りを描画して開始します。

Z(またはz)は出力の1文字に対応し、上から下に順番に起動するように配置されます。大文字でABC、およびD入力の下位4ビットに対応(私たちは見てすべてなので"34" == "CD" == "st" ...)。小文字bdef出力の様々なビットに対応します。

無限長のドミノも作成できます。0123456789入力として与えてみてください。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.