Schreiben Sie ein Programm oder eine Funktion, um die folgende Ausgabe in der richtigen Reihenfolge zu erzeugen.
EDIT: Die Symbole sind nicht mathematisch! Die Zahlen stellen nur eindeutige Daten dar und die +und -können zwei beliebige Symbole sein.
Nehmen Sie einen nicht negativen ganzzahligen Eingang n. Die erste Zeile ist immer -, auch für n = 0.
- Wenn die aktuelle Zeile ist
-, ist die nächste Zeile1+2+ ... (n-1)+n-- n = 4:
-=>1+2+3+4-
- n = 4:
- Wenn die letzte Ganzzahl gleich n ist, entfernen Sie alle Ganzzahlen vom Ende, auf die unmittelbar a folgt
-, und ändern Sie die letzte+in a-- n = 4:
1-2+3-4-=>1-2- - BEARBEITEN: Wenn die Zeichenfolge voll ist (alle Ganzzahlen von 1 bis n sind enthalten), entfernen Sie alle Ganzzahlen vom Ende, auf die a folgt
-, bis Sie eine Ganzzahl gefolgt von a erreichen+. Lassen Sie diese Ganzzahl, aber ändern Sie die folgenden+in a- - Entfernen , entfernen , ändern Sie mit dem gleichen Beispiel wie unmittelbar oben (das nicht folgt
-) . ändert sich nicht, seit wir bei aufhören . Ergebnis:4-3-2+2-1-21-2-
- n = 4:
- Wenn die letzte Ganzzahl kleiner als n ist, hängen Sie die verbleibenden Ganzzahlen
+nach jeder mit einem an, mit Ausnahme der letzten Ganzzahl, an die eine Ganzzahl-angehängt werden soll- n = 4:
1+2-=>1+2-3+4- - BEARBEITEN: Wenn die aktuelle Zeichenfolge nicht voll ist (nicht alle Ganzzahlen von 1 bis n enthält), addieren Sie jede Ganzzahl, die noch nicht in aufsteigender Reihenfolge enthalten ist, bis zu n-1 mit einem
+nach jeder und fügen Sie dann die letzte Ganzzahl n hinzu, die folgt durch eine- - Wenn die aktuelle Zeile lautet
1-, hängen Sie an2+, fügen Sie3+n-1 hinzu, wenn n = 4 ist. Dann anhängen4-. Ergebnis:1-2+3+4-
- n = 4:
- Wenn die aktuelle Zeile alle Ganzzahlen enthält und auf jede unmittelbar a folgt
-, beenden Sie den Code- n = 4:
1-2-3-4-=> ENDE
- n = 4:
In keiner Zeile dürfen führende oder nachfolgende Leerzeichen vorhanden sein. Zwischen jeder Zeile muss ein Zeilenumbruch liegen. In der letzten Zeile kann ein Zeilenumbruch auftreten oder nicht.
BEARBEITEN: Sie sollten Ihren Code bis zu mindestens n = 10 testen (über 1000 Ausgabezeilen, damit ich ihn hier nicht einfügen kann). Jede Zahl, die nicht dazu führt, dass Ihrem Code die Ressourcen ausgehen, sollte (irgendwann!) Die richtige Ausgabe liefern, aber Sie müssen nicht auf das Ende des Universums warten!
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Eingabe n = 0:
-
Eingabe n = 1:
-
1-
Eingabe n = 2:
-
1+2-
1-
1-2-
Eingabe n = 4:
-
1+2+3+4-
1+2+3-
1+2+3-4-
1+2-
1+2-3+4-
1+2-3-
1+2-3-4-
1-
1-2+3+4-
1-2+3-
1-2+3-4-
1-2-
1-2-3+4-
1-2-3-
1-2-3-4-
s*=<condition>