Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą N i siatkę cyfr dziesiętnych (od 0 do 9) o szerokości W i wysokości H (które są również dodatnimi liczbami całkowitymi). Możesz założyć, że N będzie mniejsze lub równe większej z W i H.
Wydrukuj lub zwróć największą ciągłą liczbę cyfr N, która pojawia się poziomo lub pionowo na siatce, zapisaną w normalnej kolejności odczytu lub odwrotnie.
- Ukośne linie cyfr nie są uwzględniane.
- Siatka nie zawija się, tzn. Nie ma okresowych warunków brzegowych.
Na przykład siatka 3 × 3
928
313
049
miałby 9
jako wynik dla N = 1, 94
jako wynik dla N = 2 i 940
jako wynik dla N = 3.
Siatka 4 × 3
7423
1531
6810
miałby 8
jako wynik dla N = 1, 86
dla N = 2, 854
dla N = 3 i 7423
dla N = 4.
Siatka 3 × 3
000
010
000
miałby wynik 1
dla N = 1, a 10
dla N = 2 i N = 3 ( 010
obowiązuje również dla N = 3).
Siatka 1 × 1
0
miałby wynik 0
dla N = 1.
Możesz pobrać dane wejściowe w dowolnym dogodnym rozsądnym formacie. np. siatka może być ciągiem cyfr oddzielonym znakiem nowej linii, tablicą wielowymiarową lub listą cyfr itp. Zera wiodące są dozwolone w danych wyjściowych, jeśli były częścią siatki.
To jest gra w golfa kodu , więc wygrywa najkrótszy kod w bajtach, ale przyznam także punkty brownie (tj. Bardziej prawdopodobne upvotes) za odpowiedzi, które mogą wykazać, że ich algorytm jest wydajny obliczeniowo.
Odpowiedzi:
Pyth,
2219 bajtów3 bajty dzięki Jakube.
Wypróbuj online.
Jeśli wolno nam drukować początkowe zera, kod ma 18 bajtów:
źródło
s
.CJam,
39363534 bajtówPo prostu szybko, zanim @Dennis się obudzi: P
Wypróbuj online .
Wyjaśnienie
Podstawowym algorytmem jest wzięcie wszystkich czterech obrotów siatki i podzielenie każdego rzędu na kawałki długości
N
(lub długość rzędu, w zależności od tego, który jest mniejszy). Następnie przekonwertuj części na ints i weź największy.źródło
few
coś specjalnego, czy to są trzy osobne polecenia?ew
zastosowany za pomocąf
lub „ mapuj z dodatkowym parametrem”. Na przykład["abcd" "efgh"] 2 few
wyniki w[["ab" "bc" "cd"] ["ef" "fg" "gh"]]
.Groteska
Jeszcze nie ostateczna odpowiedź, ale prawdopodobnie będzie działać tak:
Jak dokładnie podano N i siatkę?
źródło