Memasukkan:
- Bilangan bulat
n
dalam kisaran2 <= n <= 10
- Daftar bilangan bulat positif
Keluaran:
Konversikan bilangan bulat ke representasi biner mereka (tanpa angka nol di depan), dan gabungkan semuanya.
Kemudian tentukan semua substring biner yang membentuk 'pagar biner' menggunakan n
jumlah tiang pagar. Ruang (nol) di antara setiap tiang pagar tidak relevan (setidaknya 1), tetapi tiang pagar itu sendiri harus memiliki lebar yang sama.
Di sini regex substring biner harus cocok untuk masing-masing 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
Lihat n=4
contoh - contohnya:
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
Kami kemudian menampilkan angka yang menggunakan digit biner dari 'pagar biner' yang cocok.
Contoh:
Input: n=4
,L=[85,77,71]
Representasi biner dari bilangan bulat ini yang digabungkan adalah:
1010101 1001101 1000111
(CATATAN: Spasi hanya ditambahkan sebagai klarifikasi untuk contoh).
Karena n=4
, kami mencari substring yang cocok dengan regex (1+)0+\10+\10+\1
, dalam hal ini kami dapat menemukan dua:
1010101
(pada posisi (1010101) 1001101 1000111
); dan 11001101100011
(pada posisi 101010(1 1001101 100011)1
)
Pagar biner pertama hanya menggunakan digit biner 85
, dan pagar biner kedua menggunakan digit biner dari ketiga bilangan bulat. Jadi output dalam hal ini adalah:
[[85],[85,77,71]]
Aturan tantangan:
- Meskipun itu juga disebutkan dalam contoh di atas, kalimat terakhir adalah yang penting: Kami mengeluarkan angka yang menggunakan angka biner dalam substring 'pagar biner'.
- I / O fleksibel. Input dapat berupa daftar / larik / aliran bilangan bulat, spasi / koma / string yang dibatasi baris, dll. Output dapat berupa bilangan bulat 2D, string tunggal yang dibatasi, daftar string, baris baru yang dicetak ke STDOUT, dll. Semuanya terserah Anda, tetapi sebutkan apa yang Anda gunakan dalam jawaban Anda.
- Urutan output dari daftar itu sendiri tidak relevan, tetapi output dari masing-masing daftar dalam tentu saja dalam urutan yang sama dengan daftar input. Jadi dengan contoh di atas,
[[85,77,71],[85]]
adalah output yang valid juga, tetapi[[85],[77,85,71]]
tidak. - Seperti yang mungkin telah Anda perhatikan dari contoh (the
85
), digit biner dapat digunakan beberapa kali. - Regex harus sepenuhnya cocok dengan substring. Jadi
110101
atau010101
tidak pernah menjadi 'pagar biner' yang valid (10101
bagaimanapun, iffn=3
). - Item dalam daftar output tidak unik, hanya posisi biner dari 'pagar biner' yang unik. Jika beberapa 'pagar biner' dapat dibuat dengan integer yang sama, kami menambahkannya beberapa kali ke daftar keluaran.
Sebagai contoh:n=2
,L=[109, 45]
(biner1101101 101101
) dapat membentuk ini 'biner pagar' substring:11011
(pada posisi(11011)01 101101
);101
(pada posisi1(101)101 101101
);11011
(pada posisi110(1101 1)01101
);101
(pada posisi1101(101) 101101
);11011
(pada posisi110110(1 1011)01
);101
(pada posisi1101101 (101)101
);101
(pada posisi1101101 101(101)
), jadi hasilnya akan[[109],[109],[109,45],[109],[109,45],[45],[45]]
.
Contoh lain:n=2
,L=[8127]
(biner1111110111111
) dapat membentuk ini 'biner pagar' substring:1111110111111
(pada posisi(1111110111111)
);11111011111
(pada posisi1(11111011111)1
);111101111
(pada posisi11(111101111)11
);1110111
(pada posisi111(1110111)111
);11011
(pada posisi1111(11011)1111
);101
(pada posisi11111(101)11111
), jadi hasilnya akan[[8127],[8127],[8127],[8127],[8127],[8127]]
. - Jika tidak ada output yang valid yang mungkin, Anda dapat mengembalikan daftar kosong atau beberapa jenis output falsey lainnya (
null
,,false
menimbulkan kesalahan, dll. Sekali lagi, panggilan Anda).
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
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]
berlaku untuk testcase 4? Saya melihat pagar(1 10 11)
2, [10, 10]
yang akan menghasilkan [[10],[10,10],[10]]
jika saya memahami tantangan correctl.y