入力:
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、これまで有効な「バイナリフェンス」ではありません(10101IFF、しかしであります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を理解していれば