Zaczerpnięte z Google Code Jam 2013 rundy kwalifikacyjnej Problem B :
Alice i Bob mają trawnik przed domem w kształcie prostokąta o wymiarach N na metr. Każdego roku starają się przycinać trawnik w interesujący sposób. Cięcie wykonywali nożycami, co było bardzo czasochłonne; ale teraz mają nową automatyczną kosiarkę z wieloma ustawieniami i chcą ją wypróbować.
Nowa kosiarka ma ustawienie wysokości - możesz ustawić ją na dowolną wysokość h od 1 do 100 milimetrów, a będzie ona ścinać trawę wyżej niż h napotka na wysokość h. Uruchomisz go, wchodząc na trawnik w dowolnej części krawędzi trawnika; następnie kosiarka porusza się w linii prostej, prostopadłej do krawędzi trawnika, do którego wszedł, tnąc trawę w pokosie o szerokości 1 m, aż opuści trawnik po drugiej stronie. Wysokość kosiarki można ustawić tylko wtedy, gdy nie znajduje się ona na trawniku.
Alice i Bob mają wiele różnych wzorów traw, które mogą mieć na trawniku. Dla każdego z nich chcą wiedzieć, czy można kosić trawę według tego wzoru za pomocą nowej kosiarki. Każdy wzór jest opisany przez określenie wysokości trawy na każdym kwadracie trawnika o wymiarach 1 x 1 m.
Trawa ma początkowo wysokość 100 mm na całym trawniku.
Napisz funkcję, która przyjmuje tablicę 2D wysokości całkowitych i określa, czy trawnik można odpowiednio przyciąć.
Oto 100 przypadków testowych od Google Code Jam. Pierwsze 35 przypadków powinno minąć, reszta nie.
Najkrótszy kod wygrywa.
Odpowiedzi:
J, 15 znaków
Nie spodziewałem się tak krótkiego rozwiązania.
Krótkie wyjaśnienie:
Jeśli twoją funkcją są 4 inne funkcje jak w rozwiązaniu:
(f1 f2 f3 f4)
a wejście J oblicza to tak, jakf1(input,f3(f2(input),f4(input)))
npinput f1 ((f2 input) f3 (f4 input))
.źródło
APL, 15 znaków
Wyjaśnienie:
⌈⌿⍵
oblicza maksimum kolumn rhs⌈/⍵
robi to samo z wierszami∘.⌊
robi iloczyn zewnętrzny dwóch poprzednich w odniesieniu do funkcji minimum⍵≡
porównuje wynik z rhPrzykłady:
źródło
Python,
112104źródło
map(min,z(*r))
zamiast,[min(a)for a in z(*r)]
aby uratować 8 znakówMam nieco dłuższy kod python, ale przeszedł on wszystkie przypadki testowe podane na Google Code Jam 2013.
źródło