入力:
n
範囲内の整数2 <= n <= 10
- 正の整数のリスト
出力:
整数をバイナリ表現(先行ゼロなし)に変換し、それらをすべて結合します。
次にn
、フェンスポストの量を使用して、「バイナリフェンス」を形成するすべてのバイナリサブストリングを決定します。各フェンスポスト間のスペース(ゼロ)は無関係(少なくとも1)ですが、フェンスポスト自体はすべて同じ幅にする必要があります。
ここで、バイナリ部分文字列がそれぞれに一致する正規表現n
:
n Regex to match to be a 'binary fence' Some examples
2 ^(1+)0+\1$ 101; 1100011; 1110111;
3 ^(1+)0+\10+\1$ 10101; 1000101; 110011011;
4 ^(1+)0+\10+\10+\1$ 1010101; 110110011011; 11110111100001111001111;
etc. etc. You get the point
n=4
例を見ます:
1010101
^ ^ ^ ^ All fence posts have a width of one 1
^ ^ ^ with one or more 0s in between them
110110011011
^^ ^^ ^^ ^^ All fence posts have a width of two 1s
^ ^^ ^ with one or more 0s in between them
11110111100001111001111
^^^^ ^^^^ ^^^^ ^^^^ All fence posts have a width of four 1s
^ ^^^^ ^^ with one or more 0s in between them
次に、一致する「バイナリフェンス」の2進数を使用する数値を出力します。
例:
入力:n=4
、L=[85,77,71]
結合されたこれらの整数のバイナリ表現は次のとおりです
1010101 1001101 1000111
(注:スペースは例の説明としてのみ追加されています)。
以来n=4
、我々は正規表現にマッチする部分文字列を探して、(1+)0+\10+\10+\1
我々は2見つけることができ、その場合には、:
1010101
(位置で(1010101) 1001101 1000111
)。および11001101100011
(位置101010(1 1001101 100011)1
)
最初のバイナリフェンスはからの2進数のみを使用85
し、2番目のバイナリフェンスは3つの整数すべてからの2進数を使用します。したがって、この場合の出力は次のようになります。
[[85],[85,77,71]]
チャレンジルール:
- 上記の例でも言及されていますが、最後の文は重要な文です。「バイナリフェンス」の部分文字列で使用されるバイナリの数字を出力します。
- I / Oは柔軟です。入力は、整数のリスト/配列/ストリーム、スペース/コンマ/改行で区切られた文字列などです。出力は、2D整数リスト、単一で区切られた文字列、文字列リスト、STDOUTに印刷された改行などです。あなた次第ですが、答えに何を使ったかを述べてください。
- リスト自体の出力順序は関係ありませんが、各内部リストの出力はもちろん入力リストと同じ順序です。したがって、上記の例で
[[85,77,71],[85]]
は、有効な出力でもありますが、そうで[[85],[77,85,71]]
はありません。 - 例(
85
)で既にお気付きのように、2進数は複数回使用できます。 - 正規表現は部分文字列に完全に一致する必要があります。そう
110101
か010101
、これまで有効な「バイナリフェンス」ではありません(10101
IFF、しかしでありますn=3
)。 - output-listの項目は一意ではなく、「バイナリフェンス」のバイナリ位置のみが一意です。同じ整数で複数の「バイナリフェンス」を作成できる場合は、それらをoutput-listに複数回追加します。
例えば:n=2
、L=[109, 45]
(バイナリ1101101 101101
)これらの「バイナリフェンス」サブストリングを形成することができる:11011
(位置(11011)01 101101
)。101
(位置1(101)101 101101
);11011
(位置110(1101 1)01101
);101
(位置1101(101) 101101
);11011
(位置110110(1 1011)01
);101
(位置1101101 (101)101
);101
(位置1101101 101(101)
)であるため、出力はになります[[109],[109],[109,45],[109],[109,45],[45],[45]]
。
別の例:n=2
、L=[8127]
(バイナリ1111110111111
)これらの「バイナリフェンス」サブストリングを形成することができる:1111110111111
(位置(1111110111111)
)。11111011111
(位置1(11111011111)1
);111101111
(位置11(111101111)11
);1110111
(位置111(1110111)111
);11011
(位置1111(11011)1111
);101
(位置11111(101)11111
)であるため、出力はになります[[8127],[8127],[8127],[8127],[8127],[8127]]
。 - 有効な出力が可能でない場合は、(空のリストまたはfalsey出力のいくつかの他の種類を返すことができ
null
、false
などここでも、あなたの呼び出し、エラーがスローされます)。
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、非コードゴルフ言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - 回答には標準的な規則が適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを備えた関数/メソッドを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテスト(TIOなど)へのリンクを追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
Input: Output
(the binary below the output are added as clarification,
where the parenthesis indicate the substring matching the regex):
4, [85,77,71] [[85],[85,77,71]]
(1010101) 1001101 1000111; 101010(1 1001101 100011)1
2, [109,45] [[109],[109],[109,45],[109],[109,45],[45],[45]]
(11011)01 101101; 1(101)101 101101; 110(1101 1)01101; 1101(101) 101101; 110110(1 1011)01; 1101101 (101)101; 1101101 101(101)
3, [990,1,3,3023,15,21] [[990,1,3,3023],[990,1,3,3023],[1,3,3023],[21]]
(1111011110 1 11 1)01111001111 1111 10101; 11110(11110 1 11 101111)001111 1111 10101; 1111011110 (1 11 101111001111) 1111 10101; 1111011110 1 11 101111001111 1111 (10101)
2, [1,2,3,4,5,6,7,8,9,10] [[1,2,3],[2,3],[4,5],[5],[5,6,7],[6,7],[6,7],[8,9],[9],[10]]
(1 10 11) 100 101 110 111 1000 1001 1010; 1 (10 1)1 100 101 110 111 1000 1001 1010; 1 10 11 (100 1)01 110 111 1000 1001 1010; 1 10 11 100 (101) 110 111 1000 1001 1010; 1 10 11 100 10(1 110 111) 1000 1001 1010; 1 10 11 100 101 (110 11)1 1000 1001 1010; 1 10 11 100 101 1(10 1)11 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1)001 1010; 1 10 11 100 101 110 111 1000 (1001) 1010; 1 10 11 100 101 110 111 1000 1001 (101)0
3, [1,2,3,4,5,6,7,8,9,10] [[4,5],[8,9]]
1 10 11 (100 101 )110 111 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1001) 1010
10, [1,2,3,4,5,6,7,8,9,10] []
No binary fences are possible for this input
6, [445873,2075] [[445873,2075],[445873,2075],[445873,2075]]
(1101100110110110001 1)00000011011; 110(1100110110110001 100000011)011; 1101100(110110110001 100000011011)
2, [8127] [[8127],[8127],[8127],[8127],[8127],[8127]]
(1111110111111); 1(11111011111)1; 11(111101111)11; 111(1110111)111; 1111(11011)1111; 11111(101)11111
2, [10,10] [[10],[10,10],[10]]
(101)0 1010; 10(10 1)010; 1010 (101)0
4, [10,10,10] [[10,10],[10,10,10],[10,10]]
(1010 101)0 1010; 10(10 1010 1)010; 1010 (1010 101)0
[1,2,3]
テストケース4 では無効ですか?フェンスが見える(1 10 11)
2, [10, 10]
の結果べき[[10],[10,10],[10]]
私はチャレンジcorrectl.yを理解していれば