Wejście:
- Liczba całkowita
n
w zakresie2 <= n <= 10
- Lista liczb całkowitych dodatnich
Wynik:
Konwertuj liczby całkowite na ich reprezentację binarną (bez zer wiodących) i łącz je wszystkie razem.
Następnie określ wszystkie binarne podciągi, które tworzą „binarne ogrodzenie”, używając n
ilości słupków ogrodzeniowych. Odstępy (zera) między każdym słupkiem ogrodzeniowym są nieistotne (co najmniej 1), ale same słupki ogrodzeniowe powinny mieć jednakową szerokość.
Tutaj wyrażenia regularne binarne podciągi powinny pasować do każdego 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
Patrząc na n=4
przykłady:
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
Następnie wyprowadzamy liczby wykorzystujące binarne cyfry dopasowań „binarnych ogrodzeń”.
Przykład:
Wejście: n=4
,L=[85,77,71]
Binarna reprezentacja połączonych ze sobą liczb całkowitych jest następująca:
1010101 1001101 1000111
(UWAGA: spacje zostały dodane jedynie jako objaśnienie dla przykładu).
Ponieważ n=4
szukamy podciągów pasujących do wyrażenia regularnego (1+)0+\10+\10+\1
, w którym to przypadku możemy znaleźć dwa:
1010101
(w pozycji (1010101) 1001101 1000111
); i 11001101100011
(w pozycji 101010(1 1001101 100011)1
)
Pierwszy płot binarny używa tylko cyfr binarnych z 85
, a drugi płot binarny używa cyfr binarnych ze wszystkich trzech liczb całkowitych. W takim przypadku wynikiem byłoby:
[[85],[85,77,71]]
Zasady konkursu:
- Chociaż jest to również wspomniane w powyższym przykładzie, ostatnie zdanie jest ważne: podajemy liczby, dla których cyfry binarne są używane w podciągu „ogrodzenia binarnego”.
- I / O jest elastyczny. Dane wejściowe mogą być listą / tablicą / strumieniem liczb całkowitych, spacją / przecinkiem / znakiem nowej linii itp. Dane wyjściowe mogą być listą całkowitą 2D, pojedynczym ciągiem rozdzielanym, listą ciągów, nową linią drukowaną do STDOUT itp. Wszystko zależy od ciebie, ale proszę podać, co użyłeś w swojej odpowiedzi.
- Kolejność wyjściowa samej listy nie ma znaczenia, ale dane wyjściowe każdej wewnętrznej listy są oczywiście w tej samej kolejności co lista wejściowa. Tak więc w powyższym przykładzie
[[85,77,71],[85]]
jest również poprawnym wyjściem, ale[[85],[77,85,71]]
nie jest. - Jak już zauważyłeś na przykładzie (
85
), cyfry binarne mogą być używane wiele razy. - Wyrazy regularne powinny całkowicie pasować do podłańcucha. Tak
110101
lub010101
nie są nigdy ważnej „płoty” (binarnych10101
jest jednak, MFFn=3
). - Elementy na liście wyników nie są unikalne, tylko pozycje binarne „ogrodzeń binarnych” są unikalne. Jeśli można utworzyć wiele „ogrodzeń binarnych” z tą samą liczbą (liczbami całkowitymi), dodajemy je wiele razy do listy wyników.
Na przykładn=2
,L=[109, 45]
(binarne1101101 101101
) mogą tworzyć te podciągi „ogrodzenia binarne”11011
(pozycja(11011)01 101101
);101
(w pozycji1(101)101 101101
);11011
(w pozycji110(1101 1)01101
);101
(w pozycji1101(101) 101101
);11011
(w pozycji110110(1 1011)01
);101
(w pozycji1101101 (101)101
);101
(w pozycji1101101 101(101)
), więc wynik będzie[[109],[109],[109,45],[109],[109,45],[45],[45]]
.
Innym przykłademn=2
,L=[8127]
(binarne1111110111111
) mogą tworzyć te podciągi „ogrodzenia binarne”1111110111111
(pozycja(1111110111111)
);11111011111
(w pozycji1(11111011111)1
);111101111
(w pozycji11(111101111)11
);1110111
(w pozycji111(1110111)111
);11011
(w pozycji1111(11011)1111
);101
(w pozycji11111(101)11111
), więc wynik będzie[[8127],[8127],[8127],[8127],[8127],[8127]]
. - Jeśli nie ważne wyjście jest możliwe, można powrócić pustą listę lub innego rodzaju wyjścia falsey (
null
,false
, zgłasza błąd, itp Znowu, połączenie).
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
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]
ważny dla przypadku testowego 4? Widzę ogrodzenie(1 10 11)
2, [10, 10]
co powinno skutkować, [[10],[10,10],[10]]
jeśli zrozumiem wyzwanie poprawne.y