Byłem dzisiaj w autobusie i zauważyłem ten znak:
seated standing wheelchairs
max1 37 30 00
max2 36 26 01
max3 34 32 00
Liczba pasażerów siedzących, pasażerów i wózków inwalidzkich musi być nie większa niż jakikolwiek rząd w tabeli. (Zobacz szczegóły czatu.)
Na potrzeby tego wyzwania uogólnimy ten pomysł: biorąc pod uwagę nieujemną listę liczb całkowitych o ściśle dodatniej długości N (liczba typów pasażerów) i nieujemną macierz liczb całkowitych o ściśle dodatnich wymiarach (N kolumn i jeden rząd na konfigurację lub transpozycja tego), zwróć listę indeksów / prawdy-fałszów / dwóch unikalnych wartości wskazujących, które ograniczenia konfiguracji są spełnione.
Np. Z powyższą macierzą:
30,25,1
→ [1]
(0-indeksowane) [2]
(1-indeksowane) lub [false,true,false]
(Boolean) lub ["Abe","Bob","Abe"]
(dwie unikalne wartości) itp.
Następujące przypadki testowe wykorzystują powyższą macierz i 0/1 dla false / true:
[30,30,0]
→ [1,0,1]
[30,31,0]
→ [0,0,1]
[35,30,0]
→ [1,0,0]
[0,0,1]
→ [0,1,0]
[0,0,0]
→ [1,1,1]
[1,2,3]
→[0,0,0]
Następujące przypadki testowe wykorzystują następującą macierz:
1 2 0 4
2 3 0 2
[1,2,1,2]
→ [0,0]
[1,3,0,1]
→ [0,1]
[1,2,0,3]
→ [1,0]
[1,2,0,1]
→[1,1]
[30,31,0]
być[1, 1, 1]
, ponieważ jest objętymax3
?0
i jakakolwiek fałsz zamiast1
?)[x,31,z]
wykluczamax1
imax2
ponieważ nie zezwala na 31 osób.Odpowiedzi:
APL (Dyalog Unicode) ,
53 bajtówWypróbuj online!
źródło
∧.≤
^_^
>,<
@.@
Haskell,
2220 bajtówZwraca,
False
jeśli legalne, aTrue
jeśli nie.Wypróbuj online!
Przerzucanie wartości True / False, gdy zwracane wartości oszczędzają 2 bajty (dzięki @ user202729!). Z
True
legalnym jest tomap.(and.).zipWith(<=)
(22 bajty). Wypróbuj online!źródło
Oktawa , 15 bajtów
Wypróbuj online!
Zgodnie z komentarzem Sundara pominięcie transpozycji pozwala zaoszczędzić 2 bajty.
źródło
b
jako wektor kolumny zamiast wektora wiersza (ponieważ jest on po prostu określony jako lista), oszczędzając 2 bajty: Wypróbuj online!MATL , 3 bajty
Wypróbuj online!
Pobiera macierz wejściową jako transpozycję formatu w pytaniu (na co pozwala OP), z jedną kolumną na konfigurację. Zwraca wartość logiczną 0 i 1 dla wartości false i true.
źródło
R ,
323026 bajtówWypróbuj online!
Akceptuje macierz w formie transponowanej jako
x
, test konfiguracji jakoy
. Zwraca wektor wartości logicznych.Początkowe -2 bajty dzięki mnel, a następnie -4 przez JayCe.
źródło
Galaretka , 3 bajty
Wypróbuj online!
0
= Prawda,1
= fałsz.źródło
<§
zadziałałoby<§
nie jest to dokładnie „prawda-fałsz”, ale raczej „fałsz-prawda”, co niestety nie jest tym, o co prosi wyzwanie.≥
.Ohm v2 , 3 bajty
Wypróbuj online!
Algorytm: wektoryzowany
>
(większy niż),Σ
sumuj każdy,y
znak.źródło
JavaScript (ES6), 38 bajtów
Pobiera dane wejściowe jako
(matrix)(vector)
. Zwraca tablicę boolowską.Wypróbuj online!
źródło
Haskell , 30 bajtów
Wypróbuj online!
źródło
Retina 0.8.2 , 57 bajtów
Wypróbuj online! Link zawiera przypadki testowe, ale dane wyjściowe są uruchamiane razem. Wyjaśnienie:
Konwertuj na unary.
Daj każdemu wierszowi macierzy własną kopię listy.
Działaj osobno w każdym rzędzie matrycy.
Kilkakrotnie usuwaj ostatni numer wiersza i listy, podczas gdy ostatni numer wiersza jest co najmniej tak duży, jak numer na liście.
Na liście powinien pozostać jeden numer, a liczba w wierszu powinna być co najmniej tak duża.
źródło
Japt ,
65 bajtów-1 bajty z @Shaggy
Wypróbuj online!
źródło
VgY
->,Vv
aby zapisać bajt.Python 2 , 38 bajtów
Wypróbuj online!
źródło
05AB1E , 5 bajtów
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Niestety 05AB1E v1 nie mają wbudowaną 1-char na
≤
lub≥
, więc zmniejszyć każdą wartość zamiast przed użyciem›
. 05AB1E v2, który jest obecnie w fazie rozwoju, będzie miał te wbudowane funkcje.źródło
Stax , 8 bajtów
Uruchom i debuguj
Wyjaśnienie:
źródło
Brachylog , 14 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 18 bajtów
Zwraca listę dwóch unikalnych wartości:
True
oznacza fałsz,False
oznacza prawdę.Wypróbuj online!
źródło