Schreiben Sie ein Programm oder eine Funktion, die eine positive Ganzzahl N und ein Dezimalstellenraster (0 bis 9) mit der Breite W und der Höhe H (die auch positive Ganzzahlen sind) enthält. Sie können davon ausgehen, dass N kleiner oder gleich dem größeren von W und H ist.
Die größte zusammenhängende N-stellige Zahl drucken oder zurückgeben, die horizontal oder vertikal im Raster angezeigt wird, in normaler Lesereihenfolge oder in umgekehrter Reihenfolge.
- Diagonale Ziffernreihen werden nicht berücksichtigt.
- Das Gitter wird nicht umbrochen, dh es gibt keine periodischen Randbedingungen.
Zum Beispiel das 3 × 3-Raster
928
313
049
hätte 9
als Ausgang für N = 1, 94
als Ausgang für N = 2 und 940
als Ausgang für N = 3.
Das 4 × 3-Raster
7423
1531
6810
hätte 8
als Ausgang für N = 1, 86
für N = 2, 854
für N = 3 und 7423
für N = 4.
Das 3 × 3-Raster
000
010
000
hätte ausgegeben 1
für N = 1 und 10
für N = 2 und N = 3 ( 010
gilt auch für N = 3).
Das 1 × 1-Raster
0
hätte ausgegeben 0
für N = 1.
Sie können die Eingabe in einem beliebigen, angemessenen Format vornehmen. Beispiel: Das Raster kann eine durch Zeilenumbrüche getrennte Zeichenfolge oder ein mehrdimensionales Array oder eine Liste mit Ziffern usw. sein. Führende Nullen sind in der Ausgabe zulässig, wenn sie Teil des Rasters sind.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes, aber ich werde auch Brownie-Punkte (dh wahrscheinlichere Aufwärtsbewertungen) für Antworten vergeben, die zeigen können, dass ihr Algorithmus rechnerisch effizient ist.
Antworten:
Pyth,
22 bis19 Bytes3 Bytes dank Jakube.
Probieren Sie es online aus.
Wenn wir führende Nullen drucken dürfen, beträgt der Code 18 Byte:
quelle
s
.CJam,
39363534 BytesNur kurz bevor @Dennis aufwacht: P
Probieren Sie es online aus .
Erläuterung
Der grundlegende Algorithmus besteht darin, alle vier Umdrehungen des Gitters zu erfassen und jede Zeile in Längenblöcke aufzuteilen
N
(oder die Zeilenlänge, je nachdem, welche kleiner ist). Dann wandle die Stücke in Ints um und nimm die größten.quelle
few
Tun Sie aus Neugier etwas Besonderes oder sind es drei separate Befehle?ew
, der mitf
"map with extra parameter" angewendet wird . Zum Beispiel["abcd" "efgh"] 2 few
ergibt[["ab" "bc" "cd"] ["ef" "fg" "gh"]]
.Burleske
Noch keine endgültige Antwort, aber es wird wahrscheinlich so funktionieren:
Wie ist N und das Gitter genau gegeben?
quelle