Biorąc pod uwagę liczbę binarną A jako dane wejściowe z d> 1 cyfr, wypisz liczbę binarną B z cyframi d zgodnie z następującymi zasadami znajdowania n-tej cyfry B:
Pierwsza cyfra B wynosi zero, jeśli pierwsza i druga cyfra A są równe; w przeciwnym razie jest jeden.
Jeżeli 1 <n <d, to jeśli (n-1), n-ta i (n + 1) cyfra A są równe, to n-ta cyfra B wynosi zero; w przeciwnym razie jest jeden.
D-ta cyfra B jest równa zero, jeśli (d-1) cyfry th i dth A są równe; w przeciwnym razie jest jeden.
Zasady
Format wejściowy / wyjściowy łańcucha / listy jest w porządku. Innym dozwolonym sposobem wejścia / wyjścia jest liczba całkowita, po której następuje liczba poprzedzających zer (lub następująca po liczbie poprzedzających zer).
Ustaw swój kod tak krótko, jak to możliwe.
Przypadki testowe
00 -> 00
01 -> 11
11 -> 00
010111100111 -> 111100111100
1000 -> 1100
11111111 -> 00000000
01010101 -> 11111111
1100 -> 0110
1100 -> 0110
(pierwsze 2 cyfry wyniku są zawsze identyczne we wszystkich innych przypadkach testowych; podobnie jak ostatnie 2 cyfry)Odpowiedzi:
Haskell,
595854 bajtówWypróbuj online!
Edycja: @ Ørjan Johansen zapisał 4 bajty. Dzięki!
źródło
"0110"!!(a+b+c)
zapisujesz bajt.[last s]
można przenieść doscanr
wartości początkowej.Galaretka , 9 bajtów
Wypróbuj online!
I / O jako lista cyfr.
Wyjaśnienie:
źródło
.ị
- Pobiera element o indeksie 0,5 . Od podłogi (0,5) ≠ ceil (0,5) ,ị
zwraca elementy w indeksy 0 i 1 . Galaretka jest indeksowana, więc 0 faktycznie chwyta ostatni element.Ṛ
odwraca parę (ponieważ są zwracane jakolast, first
). Następniej
łączy parę na wejściu iṡ3
dzieli ją na nakładające się plasterki o długości 3.E€
sprawdza (dla każdej listy), czy wszystkie elementy są równe, i¬
logicznie je neguje.05AB1E , 6 bajtów
I / O ma postać tablic bitowych.
Wypróbuj online!
Jak to działa
źródło
05AB1E , 11 bajtów
Wypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
Haskell ,
666159 bajtówWypróbuj online! Dane wejściowe to lista zer i jedynek, dane wyjściowe to ciąg znaków. Przykład użycia:
g [0,1,0,1,1,1,1,0,0,1,1,1]
plony"111100111100"
.Poprzednie 61 bajtowe rozwiązanie:
Wypróbuj online!
źródło
J ,
2614 bajtówPodziękowania dla rozwiązania Emabna 05AB1E
Wypróbuj online!
Oryginalna próba
Wypróbuj online!
źródło
Python 3 , 58 bajtów
Wypróbuj online!
źródło
Łuska ,
1511 bajtówPobiera dane wejściowe jako listę, spróbuj online! Lub wypróbuj ten, który używa ciągów dla I / O.
Wyjaśnienie
źródło
Galaretka , 8 bajtów
I / O ma postać tablic bitowych.
Wypróbuj online!
Jak to działa
źródło
I0,0jI¬¬
JavaScript (ES6), 45 bajtów
Pobiera dane wejściowe jako tablicę znaków. Zwraca tablicę liczb całkowitych.
Przypadki testowe
Pokaż fragment kodu
Skomentował
źródło
Mathematica, 56 bajtów
Wypróbuj online!
źródło
Galaretka , 16 bajtów
Wypróbuj online!
Chciałem zagrać w golfa, ale Erik ma już krótsze rozwiązanie, a moja gra w golfa po prostu zbliżyłaby go do niego. Nadal gram w golfa, ale nie będę aktualizować, chyba że uda mi się go pokonać lub znaleźć wyjątkowy pomysł.
Wyjaśnienie
źródło
Perl 5 , 62 + 1 (
-n
) = 63 bajtyWypróbuj online!
źródło
s;..$;
konstrukt na końcu jest fajny. Będę musiał to pamiętać.Łuska , 10 bajtów
Wypróbuj online!
Dzięki Zgarb za -1 bajt.
źródło
Ẋo±≠
zapisuje bajt.Japt ,
141312 bajtówCzęściowo przeniesiony z Jelly's Jelly Solution. Dane wejściowe i wyjściowe są tablicami cyfr.
Oszczędność bajtu dzięki produktom ETH.
Spróbuj
Wyjaśnienie
Domniemane wejście tablicy
U
.ä-
pobiera delty tablicy.pT
wypycha 0 na koniec tablicy.äaT
najpierw dodaje kolejne 0 na początku tablicy, zanim uzyska bezwzględne delty.mg
odwzorowuje elementy tablicy zwracając znak każdego elementu jako -1 dla liczb ujemnych, 0 dla 0 lub 1 dla liczb dodatnich.źródło
.ø
w odpowiedzi 05AB1E. Myślę, że dzięki temu byłby o 1 bajt krótszy ...A.ä()
którzy poprzedzają swój drugi argument, możesz dodać trzeci argument, który zostanie dołączony. Tak więc w tym przypadkupT äaT
można uzyskaćäaTT
oszczędność 2 bajtów.Python 3 , 54 bajty
I / O ma postać tablic boolowskich.
Wypróbuj online!
źródło
J, 32 bajty
Jak to działa:
Pominąłem trochę @ i nawiasów, które po prostu upewniają się, że dobrze do siebie pasują.
Przykład krok po kroku:
źródło
Siatkówka , 35 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Objaśnienie: Wyrażenie regularne rozpoczyna się od dopasowania kolejno każdej cyfry wejściowej. Grupa przechwytywania próbuje dopasować inną cyfrę przed lub po rozważanej cyfrze.
?
Sufiks następnie umożliwia wychwytywanie pasujące 0 lub 1 raz;$#2
zamienia to w cyfrę wyjściową.źródło
Pyth , 15 bajtów
Wypróbuj tutaj!
Alternatywnie:
mtl{d.:s+hQeBQ3
..aM._M.+++Z.+QZ
.To poprzedza pierwszy element i dołącza ostatni element, a następnie pobiera wszystkie nakładające się podciągi o długości 3, a na koniec pobiera liczbę odrębnych elementów w każdej podlistie i zmniejsza ją. Ten bałagan został zrobiony na komórce o północy, więc nie zdziwiłbym się, gdyby istniało kilka łatwych golfów.
źródło
Gaia , 9 bajtów
Wypróbuj online!
Wyjaśnienie
Gaia , 9 bajtów
Wypróbuj online!
źródło
C , 309 bajtów
Nie jest to język odpowiedni do gry w golfa, ale mimo wszystko wart odpowiedzi. Wypróbuj tutaj !
Wyjaśnienie
źródło
APL + WIN, 29 bajtów
Monituje o wprowadzenie ekranu jako wektor cyfr i wysyła wektor cyfr.
Wyjaśnienie
źródło
SNOBOL4 (CSNOBOL4) , 273 bajty
Wypróbuj online!
źródło
C (tcc) ,
646256 bajtówI / O ma postać ciągów. Funkcja F zmienia swój argument, s miejscu.
Wypróbuj online!
źródło
Common Lisp, 134 bajty
Wypróbuj online!
źródło