Zeit für eine weitere Pyth-Übung. Ich präsentiere hier jeweils 8 Problemstellungen mit einer Pyth-Lösung. Diese Lösungen wurden von einem Pyth-Anfänger geschrieben. Er ist ziemlich glücklich über diese Lösungen, da sie viel kürzer sind als seine Python-Antworten. Ihre Aufgabe ist es jedoch, ihn besser zu zeigen. Erstellen Sie gleichwertige, aber kürzere Programme.
Dies ist eine Herausforderung in Bezug auf die Tricks und Optimierungen, die beim Golfen in Pyth angewendet werden können. Pyth-Golfer können viele der Tricks erkennen, die zu kürzeren Lösungen führen. Einige Probleme erfordern jedoch einige ungewöhnliche Ansätze, die selten verwendet werden. Einige der Tricks, die ich in freier Wildbahn noch nie gesehen habe. Aber keine Lösung erfordert Fehler oder seltsames Verhalten, das von den Entwicklern von Pyth nicht beabsichtigt war. Alle Antworten müssen für das letzte Pyth-Commit ( 2b1562b ) zum Zeitpunkt der Veröffentlichung dieser Frage gültig sein . Sie können den Pyth-Interpreter verwendenzum Prüfen. Es ist aktuell und ich erwarte keine großen Änderungen in Pyth, die optimale Lösungen ungültig machen oder kürzere Lösungen ermöglichen. Der Online-Interpreter verfügt auch über die neue Zeichenreferenz. Da es ziemlich neu ist, können (sollten) Sie auch die alten Dokumente verwenden , falls etwas nicht stimmt oder fehlt.
Ziel: Die Referenzlösungen umfassen insgesamt 81 Bytes. Ihr Ziel ist es, das so weit wie möglich zu übertreffen. Die Übermittlung, die alle 8 Probleme mit der kleinsten Gesamtanzahl von Bytes löst, gewinnt. Tiebreaker ist der Abgabetermin.
Natürlich sind nur Einsendungen gültig, die Lösungen für alle 8 Probleme enthalten. Sie können die Referenzimplementierung verwenden, wenn Sie die Bewertung eines (oder mehrerer) Probleme nicht verbessern können.
Ihre Lösungen müssen genau die gleiche Ausgabe wie die Referenzlösungen drucken. Bis auf einen optionalen nachgestellten Zeilenumbruch.
Da dies eine Pyth-Praxis ist, sind nur Programme zulässig, die in der Sprache Pyth geschrieben sind.
Beantwortung: Bitte verderben Sie Ihre gesamte Antwort mit Ausnahme Ihrer Gesamtpunktzahl. Es ist beabsichtigt, dass Sie sich nicht die Antworten anderer ansehen, bevor Sie Ihre eigenen einreichen. Sie können Spoiler erstellen, indem Sie>! vor jeder Zeile wie:
>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...
Ich hoffe, ich habe nicht zu schwierige oder zu triviale Probleme gewählt. Ich hoffe auf viele Teilnehmer und auf ein paar neue Einblicke in Pyth. Viel Spaß beim Golfen!
Problem 1:
Erstellen Sie die folgende 9x9-Matrix und drucken Sie sie aus:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]
Referenzlösung ( Link ):
V9m?>dNd0S9 (11 bytes)
Problem 2:
Gib alle Ziffern und Buchstaben in separaten Zeilen aus:
0
...
9
a
...
z
Referenzlösung ( Link ):
VTN)VGN (7 bytes)
Problem 3:
Finden Sie das lexikographisch kleinste Palindrom, das lexikographisch größer oder gleich einer Eingabezeichenfolge ist, die Kleinbuchstaben enthält und mit der Eingabezeichenfolge identisch ist.
a -> a
abc -> aca
adcb -> adda
Referenzlösung ( Link ):
hf&gTzqT_T^Glz (14 bytes)
Problem 4:
Prüfen Sie, ob eine Zahl im Bereich von [0, eingegebene Zahl] liegt. Dies sollte auch bei Schwimmern funktionieren.
4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True
Referenzlösung ( Link ):
&gQ0<QE (7 bytes)
Das Referenzformat ist to be tested value<newline>end value
. Sie können jedoch ein anderes Eingabeformat auswählen. Wichtig ist nur, dass Sie die Problemstellung durchführen und die richtigen Ergebnisse erzielen.
Problem 5:
Analysieren Sie eine Eingabezeichenfolge im Format "\ d + [a-zA-Z] +". Beachten Sie, dass es sich bei der Zahl wirklich um eine Zahl handeln muss, nicht um eine Zeichenfolge mit Ziffern.
'123Test' -> [123, 'Test']
Referenzlösung ( Link ):
A.ggk\Az,sGH (12 bytes)
Problem 6:
Berechnen Sie die Summe der Zahlen, die durch ein oder mehrere Kommas getrennt sind. Sie können davon ausgehen, dass die Zeichenfolge mindestens eine Zahl enthält.
11,2,,,3,5,,8 -> 29
Referenzlösung ( Link ):
svM:z",+"3 (10 bytes)
Problem 7:
Lesen Sie positive Ganzzahlen von der Eingabe, bis Sie die Zahl 0 erhalten. Geben Sie die Summe aller Zahlen aus.
Referenzlösung ( Link ):
WJE=+ZJ)Z (9 bytes)
Problem 8:
Summieren Sie alle Elemente einer quadratischen Matrix mit Ausnahme derjenigen der Hauptdiagonale (linke obere Ecke bis rechte untere Ecke).
Referenzlösung ( Link ):
-ssQs.e@bkQ (11 bytes)