Weź tablicę, która składa się z liczb lub tablic, wyprowadzaj, jeśli zawiera tylko 2
s.
Dane wyjściowe powinny być zgodne z prawdą lub falsey (Przepraszam, jeśli to niszczy odpowiedzi)
Prawdziwe przypadki testowe
[2]
[2,2]
[[2],[2,2],2]
[]
[[],[]]
Przypadki testowe Falsey
[1]
[22]
[2,2,2,1]
[[1,2],2]
Standardowe luki są zabronione.
Obowiązują domyślne reguły we / wy .
Code-golf, wygrywa najmniej bajtów!
[[2]]
ma nie zawierać dwa.Odpowiedzi:
MATL , 3 bajty
Wypróbuj online!
Technicznie może to być po prostu
Ponieważ tablica zawierająca dowolne elementy zerowe jest fałszem, ale wydaje się tania.
źródło
2=
zawiedzie dla pustych matryc, czy?2=p
działa dobrze. Krótsza wersja ostatecznie2=
nie. Ponadto „przypadki dziwnych krawędzi” to dwa przypadki testowe. :-)Python 2 ,
4340 bajtówWypróbuj online!
W chwili opublikowania tej odpowiedzi zgodnie z tym meta konsensem nadal można było generować dane wyjściowe przez zgłoszenie błędu / nieprzekazanie błędu. Dlatego odpowiedź na 26 bajtów była poprawna:
Wypróbuj online!
źródło
all
, nic poza błędem jest zgodne z prawdą.Prolog (SWI) ,
4333 bajtyCzuję ... rekurencję .
Dzięki Emignie i Dziurawej Zakonnicy za uratowanie 10 bajtów!
Kod
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe!
Wyjaśnienie:
Dla użytkowników spoza Prolog, lista jest sformatowany w następujący sposób:
[Head | Tail]
.Jest
Head
to pierwszy element listy, a ogon to pozostała lista. Sprawdź to tutaj! . Ważnym przypadkiem jest tutaj to, że ogon listy z 1 elementem jest równy[]
. Możesz to przetestować tutaj .źródło
Galaretka , 4 bajty
Wypróbuj online!
Jak to działa
źródło
Oktawa, 13 bajtów
Sprawdź wszystkie przypadki testowe.
Jest to anonimowa funkcja biorąc jeden argument wejściowy
x
. Odejmuje2
od wszystkich elementów, sprawdza, czy są jakieś niezerowe elementy. Neguje dane wyjściowetrue
dla przypadków, w których wszystkie wartości są równe zero.To działa, ponieważ
x-2
prace dla macierzy o różnej wielkości, w tym pustym matrycy[]
.x-2
byłoby wystarczające, gdyby na wejściu nie było pustych matryc.źródło
Matematyka , 28 bajtów
Wypróbuj online!
źródło
{0}
są dozwolone; spowoduje to fałszywie dodatni wynik.Siatkówka ,
1310 bajtówDzięki Kritixi Lithos za oszczędność 3 bajtów.
Wypróbuj online!
źródło
05AB1E , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
2
działać zamiastY
?2
działa również. Podoba mi się fakt, że nie ma w nim liczb :)JavaScript (ES6),
22192322 bajtówSprawdź to
źródło
Mathematica, 15 bajtów
Działa również w matematyce. Wypróbuj online!
źródło
APL (Dyalog) , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica, 24 bajty
Czysta funkcja powraca
True
lubFalse
. PoFlatten
ing zagnieżdżony tablicę i nazywając jąt
,Cases[t,2]
zwraca listę elementów, które pasują do „wzorca”2
i==t
sprawdza, czy to jest cała lista.Mathematica, 29 bajtów
Nie tak krótki, ale bardziej zabawny. Począwszy od danych wejściowych
#
, stosowane są dwie reguły zastępowania, aż wynik przestanie się zmieniać (//.
): po pierwsze, wszystkie2
s są zastępowane przez{}
s; a następnie każdą listę, której wpisy są pustymi zestawami ({{}..}
), zastępuje się (wielokrotnie) pustymi zestawami. Jeśli reszta to pusty set (=={}
), wygrywamy.źródło
Haskell , 36 bajtów
Anonimowa funkcja przyjmuje
String
i zwraca aBool
.Użyj jako
(all((==2).fst).(reads=<<).scanr(:)[]) "[2,2,2,1]"
Wypróbuj online!
Jak to działa
scanr(:)[]
generuje listę wszystkich sufiksów ciągu.(reads=<<)
próbuje przeanalizować liczbę na początku każdego sufiksu, łącząc sukcesy w listę krotek(n,restOfString)
.all((==2).fst)
sprawdza, czy wszystkie parsowane liczby są2
.źródło
not.all(`elem`"2,[]")
?22
.Python 2 , 38 bajtów
Wypróbuj online!
Bierze ciąg bez spacji, generuje bool.
Sprawdza, czy usunięcie wszystkich znaków
'[],2'
zl
daje pusty łańcuch. Sprawdza również, czy22
nie jest to podciąg - jeśli tak, to dane wejściowel
są używane zamiast pustego ciągu w celu porównania z wynikiem usunięcia, a to zawsze kończy się niepowodzeniem.źródło
Ruby,
282322 bajtów - 5 bajtów zapisanych przez GBMimo że „spłaszczanie” jest naprawdę długie, jest ono nadal krótsze niż rozwiązania oparte na wyrażeniach regularnych lub rekursywne rzeczy, które muszą ratować błędy w przypadku podstawowym. Jednak wbudowane zestawienie zestawów i tablic Ruby jest czasem niezwykle przydatne.
źródło
[]
lub[[],[]]
.[2,*x].flatten.uniq==[2]
jest nieco dłuższyx.flatten-[2]==[]
jest jeszcze krótszy. Dzięki za wskazówkę!JavaScript (ES6), 26 bajtów
Przypadki testowe
Pokaż fragment kodu
źródło
f=
bo o tym mówiłeś.MATL , 4 bajty
Wypróbuj online!
Awaria:
Cóż, obezwładniony . Ale zachowuję to, ponieważ jestem całkiem szczęśliwy, że udało mi się to wszystko samodzielnie (mimo że zadanie jest bardzo proste).
źródło
R, 28 bajtów
unlist(x)
zamienia (zagnieżdżoną) listę w wektor. Następnie2
odejmuje się od tego wektora.any
konwertuje (z ostrzeżeniem) numeryczną na logiczną i sprawdza, czy są jakieśTRUE
s. Jest to odwrócone z!
i wyjście.Działa to z listami zagnieżdżonymi, ponieważ
unlist
domyślnie działa rekurencyjnie, aby usunąć listę wszystkich pozycji listy początkowej.Działa to również z pustymi listami, ponieważ
unlist(list())
stajenumeric()
się pustym wektorem numerycznym. Przymus przezany
czyni tological()
, co jest interpretowane jakoFALSE
przezany
, a następnie odwracaneTRUE
przez przez!
.źródło
pryr::f(!any(unlist(x)-2))
oszczędza kilka bajtów.all(unlist(x)==2)
.any(unlist(x)-2)
która zwraca spójną wartość,TRUE
jeśli w spłaszczonej tablicy występuje wartość inna niż 2, i spójną,FALSE
jeśli wszystkie wartości są2
...TRUE
liczy się jako falsey: /Python 3 , 55 bajtów
Bez oszukiwania. Używa zagnieżdżonej listy jako danych wejściowych.
Wypróbuj online!
źródło
int!=type(x)and
Galareta , 4 bajty
Wypróbuj online!
Nieco inny niż algorytm Leaky'ego.
Wyjaśnienie:
źródło
Siatkówka ,
1411 bajtówWypróbuj online!
źródło
\W
nie wydaje się tak dobrym kryterium:2.2
to liczba, która nie jest2
, ale przypuszczam, że pasowałaby05AB1E , 4 bajty
Wypróbuj online!
źródło
JavaScript (ES6),
535048 bajtówZaoszczędź 5 bajtów dzięki @Shaggy!
Przypadki testowe :
źródło
f([])
if([[],[]])
powinno być prawdą!c
zamiastc==""
.05AB1E , 7 bajtów
Wypróbuj online! lub Wypróbuj wszystkie testy!
źródło
Java 8,
1265527 bajtówPort niesamowitej odpowiedzi Retina @KritixiLithos , z wyjątkiem
^...$
, ponieważString#matches
zawsze pasuje do całego ciągu i dodaje^...$
domyślnie.-2 bajty dzięki @Jakob za przypomnienie mi
^...$
nie jest konieczneString#matches
.Wypróbuj tutaj.
źródło
boolean c(java.util.List l){return(l+"").matches("^(\\W|2\\b)+$");}
działało, prawda? Chciałem tylko wskazać to na wypadek, gdybyś planował dalej grać w golfa na liście.^
i$
wyrażenie regularne, ponieważString.matches
testuje tylko cały ciąg.^...$
. Zapomniałem o tym, chociaż w przeszłości korzystałem z niego dość często ...Python 2 ,
444342 bajtówPrzyjmuje
x
jako ciąg znaków reprezentujący listę. Zakłada to również, jak w przykładzie, reprezentacje nie mają spacji.Wypróbuj online!
Wyjaśnienie
Oba pobierają znaki reprezentujące ciąg wejściowy i określają, czy
[], 2
są w nim znaki inne niż te. Robią to, rzucając na zestaw i porównując do zestawu tylko tych postaci. Nie powiedzie się to jednak, jeśli mamy liczbę inną niż 2, która ma tylko cyfry 2 (np. 22 lub 222), aby załatać ten przypadek, mnożymy ciąg znaków użyty do utworzenia zestawu przez zanegowanie, czyx
zawiera"22"
. Jeśli go zawiera, będzie to pusty zestaw, w przeciwnym razie będzie taki sam jak poprzednio.źródło
lambda x:set(x)==set("[], 2")
?[22]
[]
lambda x:set(x)<=set("[],2"*-~-("22"in x))
dla -1Ohm, 6 bajtów
Używa
CP-437
kodowania.Wyjaśnienie:
źródło
PHP, 46 bajtów
źródło
$_GET
jako łańcuchy?<?=!preg_match('/:"(?!2")/',$argn);
a wejście jest ciągiem reprezentującym szeregową tablicę - 11 bajtówPHP <7.0, 29 bajtów
Wprowadź jako zakodowaną tablicę łańcuchową JSON
PHP <7.0, 42 bajtów
użyj przestarzałej funkcji ereg
PHP, 50 bajtów
drukuje 1 za prawdę i nic za fałsz
-1 bajt do usunięcia w inny sposób
!
lub + 1 bajt dla true 1, false 0 dodaj
+
wcześniej!
Wypróbuj online!
źródło
$r
zmiennej:<?array_walk_recursive($_GET,function($i){$i-2&¨})?>1
.Pyth, 6 bajtów
Bardzo podobny do mojej odpowiedzi CJam. Wciąż jestem nowy w Pyth, więc powiedz mi, czy mogę coś grać w golfa.
Wyjaśnienie:
źródło