Viele PPCG-Benutzer halfen bei der Erstellung dieser Herausforderung, sowohl im Chat als auch in der Sandbox, insbesondere Martin Ender , AdmBorkBork , Emigna und user202729
Unsere Community hat es für notwendig erachtet, eine Reihe von Sprachen zu erstellen, die speziell für das Golfen entwickelt wurden, "Golfsprachen", wie wir sie nennen. Solche Sprachen haben sich vom einst brillanten, jetzt klobigen GolfScript zu den schlanken, prägnanten Sprachen wie Jelly und Husk entwickelt . Wie wir sehen können, werden diese Sprachen für eine Reihe von Aufgaben immer kürzer. Als offensichtliche Experten für Golfsprachen sollten wir also gemeinsam eine Sprache entwerfen, die jede andere Sprache übertrifft, die es wagt, sich zu behaupten. Wir stellen vor: Bugle!
Bugle: Aus dem Akronym BuGoL: Bu ilt Go lfing L Anguage.
Wie diese Herausforderung funktioniert
Falls Sie nicht verstanden haben, worauf ich in der Einleitung anspielte, handelt es sich bei dieser Herausforderung um eine Frage der Antwortverkettung , bei der wir beide etwas zum Interpretieren einer neuen Golfsprache beitragen und deren Fähigkeit verbessern, mit jeder Antwort auf PPCG zu konkurrieren.
Ich werde die erste Antwort posten, die aus der Grundlage der Sprachspezifikation / des Dolmetschers besteht, und alle anderen Antworten werden von da an fortgesetzt. Neue Einreichungen bieten die folgenden Dinge:
- Eine Änderung der Sprachspezifikation
- Ein zeitgemäßer Dolmetscher, der sich trifft genau den Anforderungen der Änderungen entspricht
- Die aktualisierte Punktzahl der Sprache (mehr Details in Kürze)
Sie können die Spezifikation auf drei Arten ändern:
- Sie können einen einzelnen Befehl hinzufügen
- Sie können zwei neue Befehle hinzufügen
- Sie können das Verhalten eines vorhandenen Befehls bearbeiten
Die neuen Interpreter In Bezug auf Sie müssen die neueste Version, geschrieben in Python verwenden. Es muss nicht golfen werden. Jeder zuvor hinzugefügte Befehl muss sowohl mit dem neuesten Interpreter als auch mit den neuesten (von Ihnen hinzugefügten) Befehlen testbar sein. Sie dürfen auch zu keinem Zeitpunkt eine anstößige Sprache verwenden, wenn Sie den Interpreter aktualisieren, z. B. in Kommentaren oder Zeichenfolgenliteralen usw.
Die hinzugefügten Befehle können alle gewünschten Aktionen ausführen . Die einzigen Anforderungen sind:
- Es wird keine anstößige Ausgabe erzeugt
- Es ist nicht dasselbe wie ein anderer Befehl
- Dies verhindert nicht, dass eine der Beispielherausforderungen abgeschlossen wird
Abgesehen davon kann es so spezifisch oder allgemein sein, wie Sie möchten. Es kann sich auch um ein beliebiges Zeichen handeln . Wenn Sie sich nicht sicher sind, ob Ihr Zusatz einen neuen Befehl darstellt, können Sie ihn in den Kommentaren nachfragen.
Die Punktzahl der Sprache
Möglicherweise haben Sie bemerkt, dass Sie die Punktzahl der Sprache in allen neuen Einsendungen angeben müssen. Seine Punktzahl verhindert, dass diese Herausforderung für immer bleibt, und ist wie folgt definiert:
Die aktuelle Punktzahl ist die Summe der Anzahl der Bytes, die die Sprache benötigt, um die unter 20 Aufgaben zu erledigen
Für jede der Aufgaben gelten die Standard-E / A-Regeln sowie die Standard- Regelungslücken .
Die 20 Aufgaben:
- "Hallo Welt!" - Geben Sie den String aus
Hello, World!
- 1, 2, Fizz, 4, Buzz - Gibt jede ganze Zahl von 1 bis 100 (einschließlich) in einer separaten Zeile aus, wobei ein Vielfaches von 3 durch ein
Fizz
Vielfaches von 5 durch einBuzz
Vielfaches von beidem durch ein Vielfaches von ersetzt wirdFizzBuzz
- Produzieren Sie die Nummer 2014 ohne irgendwelche Zahlen in Ihrem Quellcode - Geben Sie die Nummer 2014 aus, ohne eines der Zeichen
0123456789
im Quellcode zu verwenden, ohne auf externe Variablen oder zufällige Seeds zuzugreifen - Obfuscated Hallo Welt - Ausgabe der Zeichenfolge
Hello, World!
, ohne Zeichen in mindestens zwei der folgenden Sätze mit:hlwd
,eor01
und27
(Groß- und Kleinschreibung) Singe Happy Birthday in deiner Lieblingsprogrammiersprache - Gib Folgendes in einer Sprache deiner Wahl aus:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Wir sind kein Fremder, wenn es um das Codieren von Golf geht, Sie kennen die Regeln und ich auch - geben Sie den vollständigen Text von "Never Gonna Give You Up" aus.
- Vorzeichen ausgeben - Geben Sie unter Angabe einer Zahl -1 ein wenn es negativ ist, 0, wenn es 0 ist, oder 1, wenn es positiv ist
- Collatz-Vermutung (OEIS A006577) - Ausgehend von einer Ganzzahl dividieren Sie diese durch 2, wenn sie gerade ist, oder multiplizieren Sie sie mit 3 und addieren Sie 1, wenn sie ungerade ist, und wiederholen Sie den Vorgang, bis Sie 1 erreichen. Die Ausgabe sollte die Anzahl der Iterationen sein bringt Sie zu erreichen 1.
- Eine Reihe von Herausforderungen Nr. 1: Abwechselnde Reihen - Überprüfen Sie bei einer Reihe von Ganzzahlen, ob alle geraden und alle ungeraden Elemente gleich sind, und geben Sie dementsprechend einen Wahrheits- oder Falschwert aus
- Bin ich eine unbedeutende Gruppe? - Überprüfen Sie bei einem gegebenen Array von Ganzzahlen, ob die absoluten Unterschiede zwischen aufeinanderfolgenden Elementen alle kleiner oder gleich 1 sind, und geben Sie dementsprechend einen Wahrheits- oder Falschwert aus
- Ist diese Zahl eine Primzahl? - Schreiben Sie bei einer positiven Ganzzahl ein vollständiges Programm, um zu prüfen, ob es eine Primzahl ist, und geben Sie dementsprechend einen Wahrheits- oder Falschwert aus
- Ich bin ein Palindrom. Bist du?- Überprüfen Sie anhand eines Strings, ob es sich um ein Palindrom handelt, während es sich bei Ihrem Programm / Ihrer Funktion ebenfalls um ein Palindrom handelt, und geben Sie dementsprechend zwei unterschiedliche und konsistente Werte aus
- Summiere die Zahlen auf Standard in - Nimm eine Reihe von Zahlen nach STDIN und gib ihre Summe aus.
- Find the Factorial - Gibt bei einer Ganzzahl
n
das Produkt aller Ganzzahlen zwischen1
und ausn
einschließlich aus. - Kürzester Code für unendliche Ausgaben - Ohne Eingabe wird eine unendliche Ausgabe erzeugt, die theoretisch nie aufhört, Daten auszugeben.
- Backe ein Stück Pi - Gib genau diesen Text aus:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Finden Sie die kleinste Zahl, die N nicht teilt - Geben Sie bei einer positiven ganzen Zahl N die kleinste positive ganze Zahl aus, die N nicht teilt.
- Ist das gerade oder ungerade?- Bei einer Ganzzahl N wird die Parität als Wahrheits- / Falschwert ausgegeben.
- Ausgabe mit der gleichen Länge wie der Code - Schreiben Sie den kürzesten Code, dessen Ausgabe die gleiche Länge wie der Code hat, wobei die Ausgabe nicht mit dem Code übereinstimmt.
- Golf du ein Quine für großes Wohl! - Schreiben Sie die kürzeste Quine in Ihrer Sprache.
Um gültig zu sein, muss eine neue Einreichung für mindestens 2 der Probleme eine Golf-Einreichung mit jeweils mindestens 1 Byte aufweisen . Sie können die Länge anderer Einsendungen erhöhen, aber die Gesamtpunktzahl muss sich pro Antwort um mindestens 2 verringern . Bitte fügen Sie auch einen Link zu den aktualisierten Programmen hinzu. Die aktualisierten Lösungen dürfen nicht funktionieren, wenn sie mit einer früheren Version des Interpreters ausgeführt werden.
Wie bekomme ich Cookies?
Ich habe eine Liste von 5 Herausforderungen, die nicht zwingend zu versuchen sind und sich nicht auf Ihre Punktzahl auswirken, sondern lediglich zusätzliche Herausforderungen sind, um zu testen, ob Bugle fähig genug ist. Fühlen Sie sich frei, eine Lösung für eine beliebige Anzahl dieser in Ihre Antwort aufzunehmen:
- Erstellen Sie einen Selbstinterpreter
- Erstellen Sie eine Payload-fähige Quine
- Eine Zeichenfolge verbergen
- Hyperprogrammierung: N + N, N × N, N ^ N in einem
- "KNOTEN" oder "NICHT"?
Beschreibungen sind nicht enthalten, da sie nicht für jeden erforderlich sind, um an der Herausforderung teilnehmen zu können.
Wie gewinnt man
Sobald die Mindestpunktzahl erreicht ist ( wir glauben , dass sie 16 ist, obwohl alle Versuche, Golf zu spielen, sehr begrüßt werden), ist die Kette offensichtlich zu Ende, da Lösungen keine bessere Punktzahl erzielen können. Sobald 16 erreicht ist, bleibt die Herausforderung einen Monat lang bestehen , um jedem die Chance zu geben, die Lösungen noch weiter zu verbessern. Nachdem dieser Monat vergangen ist, ist die Herausforderung vorbei.
Sobald die Herausforderung vorbei ist, werde ich den Interpreter auf ein GitHub-Repository migrieren und die üblichen Übungen zur Veröffentlichung einer stabilen Sprache durchführen. Sie können zu diesem Zeitpunkt auch damit beginnen, Lösungen für Herausforderungen in PPCG in der angegebenen Sprache zu veröffentlichen. Versuchen Sie jedoch, die Titelseite nicht mit Antworten zu überfluten. Verteilen Sie sie stattdessen über einen bestimmten Zeitraum.
Formatierung
Um das Auffinden von Informationen in Ihrer Antwort zu erleichtern, formatieren Sie diese bitte wie folgt:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Wo [N]
ist deine Antwortnummer (1 für die erste, 2 für die zweite usw.)
Regeln
- Sie müssen 3 Stunden zwischen den Antworten warten
- Sie dürfen nicht zweimal hintereinander posten, es sei denn, 10 Tage (genau 240 Stunden) wurde keine Antwort gepostet.
- Sie können frühere Befehle nicht entfernen.
- Ihr Dolmetscher muss nicht Golf spielen, und die Anzahl der Bytes spielt hier keine Rolle.
- Wenn jemand den Programmen ein Golfspiel vorschlägt, während Ihre Antwort die aktuellste ist, müssen Sie diese in den Golfspielen bearbeiten und Ihre Punktzahl aktualisieren.
- Sie können dies auch tun, wenn sich Ihre Antwort in der Mitte der Kette befindet, solange Ihre Punktzahl nicht unter der späterer Antworten liegt.
- Bitte beantworten Sie keine bestehenden PPCG-Anfragen mit dieser Sprache, zumindest bis die Anfrage beendet ist
- Der Interpreter ist in Python 3 geschrieben und sollte in der gesamten Kette auf diese Weise fortgesetzt werden. Das Ändern der Sprache ist verboten.
- Um wieder gültig zu sein, muss eine neue Übermittlung Übermittlungen für mindestens 2 der Probleme mit mindestens 1 Byte für jedes enthalten.
Lass uns anfangen!
Hello, World!
, sind es 19 Bytes. Wenn sich das Verhalten des leeren Programms jedoch abhängig von der Eingabe ändert, kann es möglicherweise reduziert werden
for
Schleifen) sind zulässig und sollten hinzugefügt werden