Jak zauważyło ostatnio kilka osób, w dużej mierze porzuciłem rozwój Braingolfa, ponieważ jest nudny i nieinspirowany , i przeszedłem do 2Col, który jest nieco bardziej interesujący i nie jest przeznaczony do gry w golfa.
Cechą definiującą 2Col jest to, że każdy wiersz kodu musi mieć dokładnie 2 znaki, z wyjątkiem nowej linii. Oznacza to, że długość programu 2Col zawsze mogą być obliczone jako 3n-1
gdzie n
jest liczba linii w programie.
Oto moje wyzwanie: biorąc pod uwagę kod 2Col jako ciąg, wypisuj prawdę, jeśli jest prawidłowy kod 2Col (każda linia ma dokładnie 2 znaki i jest zgodna ze 3n-1
wzorem), a falsey w przeciwnym razie.
Wejście
Dane wejściowe należy traktować jako pojedynczy ciąg znaków lub tablicę znaków.
Wynik
Prawdziwa wartość, jeśli ciąg wejściowy jest poprawnym układem, a wartość falsey w przeciwnym razie.
Twój kod powinien być spójny pod względem wykorzystywanych wartości true / falsey
Przypadki testowe
======
F!
$^
----
truthy
======
======
*8
+1
Sq
----
truthy
======
======
nop
xt
----
falsey
======
======
+1
+1
#^
----
falsey
======
======
<empty string>
----
falsey
======
======
ye
----
truthy
======
======
no<space>
----
falsey
======
======
test
----
falsey
======
======
puzzle
----
falsey
======
Punktacja
To jest golf golfowy, więc wygrywa najmniej bajtów!
źródło
true
falsey ifalse
prawdępuzzle
. Spowoduje to, że rozwiązania wykonujące całą długość łańcucha modulo 3, a następnie zanegowane (co działa dla wszystkich bieżących przypadków testowych) są nieprawidłowe.Odpowiedzi:
Brachylog (2), 4 bajty
Wypróbuj online!
Pełny program (ponieważ jest to problem decyzyjny ; Brachylog wypisuje pełne programy,
false.
jeśli wystąpił błąd asercji,true.
bez jednego).Wyjaśnienie
Na indeksy
l
są jednym z najnowszych funkcji Brachylog (choć jeszcze starsze niż wyzwanie), i jest to dobre wyzwanie używać je.źródło
ṇlᵛ2
iṇlᵛ²
również działałoby.JavaScript (ES6),
24282524 bajtówNaprawiono program i ogolono trzy bajty dzięki @ PunPun1000
Wygolono jeden bajt dzięki @Shaggy
Zwraca wartość true, jeśli jest poprawna, lub false, jeśli nie.
źródło
s=>s.match(/^(..\n)*..$/)
powinien poprawnie pasować do obu, a jednocześnie być krótszy przy 25 bajtachtest
zamiastmatch
.Cubix , 20 bajtów
Zwraca 1 za prawdę i nic za falsey
Cubified
ABq
przeciągnij wszystkie dane wejściowe, odwróć je i przesuń EOI (-1) na spód stosu>;;
Wejdź do pętli i usuń przedmioty ze stosu?
Test EOI (-1).1uO@
pchnij 1 na stos, przekręć na wyjściową liczbę całkowitą i zatrzymaj_
powróć do tego,?
co przekierowuje naw
zmianę liniiN-!$@;U
przesuń linię (10) na stos, odejmij, wynik testu, pomiń zatrzymanie, jeśli jest fałszem, usuń wynik i zawróć;;>
usuń kanały ze stosu i przekieruj do pętli.Wypróbuj online!
źródło
Python, 51
Runner przypadku testowego:
źródło
Haskell,
235232 bajtyInspirację czerpałem z innych rozwiązań, dodając sprytną sztuczkę
"\n"
.źródło
Galaretka , 6 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Siatkówka , 10 bajtów
Wypróbuj online! Wyjścia
1
lub0
odpowiednio.źródło
JavaScript (ES6),
3524 bajtówSpróbuj
źródło
There's gotta be a shorter way to do this with RegEx!
Tak (i mój prawdopodobnie nie jest optymalny)05AB1E , 6 bajtów
Wypróbuj online!
źródło
J-uby ,
1918 bajtów:=~&
tworzy anonimową funkcję, która przyjmujex
i zwraca,0
jeśli pasuje do wyrażenia regularnego/^(..\n*)..$/m
lub wnil
inny sposób.źródło
Java (OpenJDK 8) , 25 bajtów
Wypróbuj online!
Sprawdza, czy ciąg wejściowy ma dowolną liczbę wierszy, po których następuje przejście do wiersza i ostatni wiersz bez jednego (zapewnia co najmniej jedną linię)
źródło
Narzędzia Bash + GNU, 13
To ustawia wartość zwracaną przez powłokę (dostępną w
$?
) na 0 dla false i 1 dla true. Jest to w rzeczywistości odwrotny sens w porównaniu do normalnej konwencji powłoki , więc aby to zrobić, musisz:Narzędzia Bash + GNU, 15
źródło
Ruby, 22 bajty
źródło
Japt ,
76 bajtówWypróbuj online
Wyjaśnienie
źródło