Herausforderung
Sie erhalten eine positive Ganzzahl n
als Eingabe. Die Ausgabe sollte ein pyramidenartiger Sandhaufen sein, der nach den folgenden Regeln erstellt wurde:
- Jede ganze Zahl "fällt" vom gleichen Anfangspunkt nach unten, wie Sand, der in eine konische Form fällt.
- Zahlen, die größer sind als die Zahl direkt darunter, wenn sie auf den Sandhaufen treffen, werden, falls möglich, nach rechts fallen.
- Zahlen, die kleiner als die Zahl direkt darunter sind, wenn sie auf den Sandhaufen treffen, werden, falls möglich, nach links fallen.
- Zahlen, die der Zahl direkt darunter entsprechen, wenn sie auf den Sandhaufen treffen, bleiben an Ort und Stelle.
- Zahlen können nach links / rechts fallen, wenn sie sich nach unten bzw. nach links / rechts bewegen. Das heißt, wenn sich unten und links / rechts je nach Richtung bereits eine Zahl befindet, bewegt sich die aktuell fallende Zahl nicht.
- Eine Zahl fällt so lange auf den Sandhaufen, bis sie nicht mehr in die nächste Position bewegt werden kann oder auf den Boden fällt.
Anmerkungen
Die anfängliche Vergleichsprüfung gilt nur für die erste angetroffene Ganzzahl, nicht für jede nachfolgende Begegnung, wenn sie den Sandhaufen hinunterfällt.
Nachgestellte Leerzeichen sind in Ordnung, nachgestellte neue Zeilen jedoch nicht.
Keine führenden Leerzeichen oder neuen Linien, außer wenn dies zur Erhaltung der Struktur des Sandhaufens erforderlich ist.
Sie können ein vollständiges Programm oder eine Funktion schreiben.
Sie können davon ausgehen, dass die Eingabe nur eine bestimmte Kombination enthält [0-9]
.
Dies ist Code-Golf , der kürzeste Code in Bytes wird von den Ides of March als Gewinner markiert
Beispiele
1
1
12345
35
124
54321
13
245
555444333222111
2
2
2
135
1345
13445
111222333444555
4
4
4
135
1235
12235
7313623030872935273465247457435345345350
3
3
3
3
34
355
3644
239475
201277445
020373685575
555444333222111
Ist das ein Fehler, dass der Dritte4
dem Ersten überlassen bleibt4
?Antworten:
JavaScript (ES6),
260 bis208 ByteBearbeiten: 25 Bytes gespart, indem erkannt wurde, dass das erste Zeichen kein Sonderfall ist. Speichert 15 Bytes, indem ein Array von Zeichenfolgen anstelle eines Arrays von Zeichen verwendet wird. 12 Byte in verschiedenen Fixes gespeichert, einschließlich Literal
\n
(nicht gezeigt). Das macht das Ganze 20% kürzer! Ich wollte , um loszuwerden ,reverse
aber das kostet mehr als ich dann sparen durch den Ersatzmap
mitreplace
.Ungolfed:
quelle