Inspiriert von github.com/JackToaster/Reassuring-Parable-Generator , wiederum inspiriert von xkcd.com/1263 . Die möglichen Wörter werden aus der beruhigenden.cfg dieses Repositorys abgeleitet.
Ein Blick auf die beruhigende.cfg (verwenden Sie das 12. Commit) wird empfohlen, um die Grammatik zu sehen, mit der die Ausgabe übereinstimmt (Die Ausgabe ist eine Liste aller Zeichenfolgen, die mit der Grammatik übereinstimmen).
Aufgabe: Ihr Programm muss alle 7968 Zeilen mit Groß- und Kleinschreibung des genauen Textes ausgeben, der im Pastebin pastebin.com/2SNAJ1VH enthalten ist . Eine Kopie des Pastebins wird in der Wayback-Maschine gespeichert
Hier ist ein Beispiel von 33 motivierenden Zeilen aus dem Pastebin:
Computers can't enjoy a salad.
Computers can't enjoy a cake.
Computers can't enjoy a ice cream cone.
Computers can't enjoy a meal.
Computers can't enjoy a drink.
Computers can't enjoy a steak.
Computers can't enjoy a chicken dinner.
Computers can't enjoy a piece of cake.
Computers can't enjoy a piece of pie.
Computers can't enjoy a cookie.
Computers can't enjoy a sandwich.
Computers can't taste a salad.
Computers can't taste a cake.
Computers can't taste a ice cream cone.
Computers can't taste a meal.
Computers can't taste a drink.
Computers can't taste a steak.
Computers can't taste a chicken dinner.
Computers can't taste a piece of cake.
Computers can't taste a piece of pie.
Computers can't taste a cookie.
Computers can't taste a sandwich.
Computers can't experience eating a salad.
Computers can't experience eating a cake.
Computers can't experience eating a ice cream cone.
Computers can't experience eating a meal.
Computers can't experience eating a drink.
Computers can't experience eating a steak.
Computers can't experience eating a chicken dinner.
Computers can't experience eating a piece of cake.
Computers can't experience eating a piece of pie.
Computers can't experience eating a cookie.
Computers can't experience eating a sandwich.
Herausforderungsregeln:
- Die Zeilenausgabe kann beliebig geordnet werden, alle 7968 müssen jedoch enthalten sein.
- Die Ausgabe sollte als einzelne flache Zeichenfolge erfolgen, nicht als Liste von Zeichenfolgen.
- Ihr Programm sollte keine Eingabe oder eine leere nicht verwendete Eingabe akzeptieren.
- Ihr Programm ruft möglicherweise keine Daten aus einer Online-Quelle ab.
- Eine einzelne nachfolgende Newline ist optional.
Dies ist Code-Golf , also gewinnt der kürzeste Code.
quelle
No computer {can} {action}.
wird zweimal wiederholt undComputers {cannot_present}
erzeugt Sätze wie "Computer sind nicht in der Lage". Absichtlich?Antworten:
Zsh , 765 Bytes
Dies ist vielleicht das erste, was ich jemals in zsh geschrieben habe, aber es hat die unglaublich praktische Funktion, Arrays in Klammererweiterungen konvertieren zu können (obwohl es nicht so praktisch ist, wie es sein sollte ... ). Führen Sie mit
zsh -P
(gezählt als +1 Byte) aus, was sich einschaltetRC_EXPAND_PARAM
.Probieren Sie es online aus!
quelle
JavaScript (ES6),
12341091 ByteDas ist eine schöne Anzahl von Bytes, um zu beginnen! Zeit, diese riesige Saite zu spielen.
Weniger Golf:
Wie?
(Dies ist bei weitem einer meiner Lieblingsgolfplätze aller Zeiten!)
Die Grammatik wird im Array gespeichert
G
, das Folgendes ergibt :F
ist eine Funktion, die eine Zeichenfolge durch das Trennzeichen|
aufteilt und durchläuft. So weit, ist es gut.Was ist nun mit dieser inneren Funktion los?
Zuerst initialisieren wir ein Array
A
. Dann finden wir alle Ziffern in der übergebenen Zeichenfolges
und erstellen ein Unterprogramm: Mit jeder Ziffern
generieren wir einefor
-of
Schleife, die die Einträge in durchläuftG[n]
(gespeichert als Eigenschaften vonF
, da Funktionen in JavaScript auch Objekte sind). Die Schleifen werden dann nacheinander angehängt.Das generierte Unterprogramm für
s="1 2 3"
startet beispielsweise wie folgt:Bei jeder Iteration ersetzt das Unterprogramm jede Ziffer
s
durch die entsprechende Ersetzung, die in gespeichert istF[n]
, und das Ergebnis wird an weitergeleitetA
. Das Unterprogramm wirdeval
bearbeitet undA
implizit zurückgegeben.Mit
F
baut der Rest des Programms einfach den Rest der Grammatik aus den bereits vorhandenen Produktionsregeln auf. Ersetzungen werden einfach durch einen einstelligen Index in definiertG
.quelle
f
. Solltef=
also zur Byteanzahl hinzugefügt werden.F
statt behoben werdenf
.)PHP, 877 Bytes
Ah das hat Spaß gemacht!
Fühlen Sie sich frei, ein weiteres Byte zu graben, wenn Sie können.
ungolfed
Erläuterung
Die Ausgabe kann auf 48 Blöcke mit jeweils 166 Zeilen aufgeteilt werden. Innerhalb jedes Blocks beginnt jede Zeile mit einer von
Computers|A computer|No computer
14 negativen (fürComputers
undA computer
) oder 9 positiven (fürNo computer
) Fähigkeiten.Ich habe diese Chunks auf jeweils 6 Bit codiert (3 verschiedene Subjekte -> untere 2 Bits; die positiven und negativen Kappen teilen sich die Schlüssel -> obere 4 Bits) und (wahrscheinlich offensichtlich) 65 hinzugefügt, um die Werte als ASCII-Codes zu verwenden.
Innerhalb dieser Stücke 8 Verb / Adjektiv-Kombinationen für 11 verschiedene Lebensmittel und 13 verschiedene Kombinationen für 6 verschiedene Künste, immer in derselben Reihenfolge; So können sie einfach durchgeschleift werden, indem der Verb- / Adjektivschlüssel verwendet wird, um zu bestimmen, ob ich Lebensmittel oder Getränke in der nächsten Schleife auflisten muss.
Ein kniffliger Teil blieb: Einige der Kappen erfordern die gerundete Form des Verbs; und einige der Verben verlieren ein
e
in der Transformation. Der Cap-Index gibt an, ob dies erforderlich ist oder nicht.(und dank der Reihenfolge der Bits in der Codierung kann ich einfach das ASCII-Zeichen für den Vergleich verwenden).
Aber wie? Nach dem Jonglieren mit regulären Ausdrücken für eine Weile, habe ich einfach ein ,
1
wo diee
mit ausgetauscht werden mussing
und ein ,0
woing
angehängt werden muss und lassen Siestrtr
die Arbeit machen.Das ist die Geschichte der oben genannten Version ohne Wolf. (1199 Bytes gepackt)
Das Golfen bestand hauptsächlich aus 3 Schritten:
strtr
wurde auf alles außer dem Betreff erweitert, um Variablen zu verschiebenstrtr
.strtr
.Das 19. Wort
tast
wurde durch einen Großbuchstaben ersetzt, um ein paar Anführungszeichen zu entfernen.Ich frage mich, was passieren würde, wenn ich auch die Verb / Adjektiv-Kombinationen codieren würde.
Vielleicht könnte ich Zsh schlagen; aber ich bin mir nicht sicher, ob ich mich genug wundere, um es zu versuchen.
quelle
Retina,
12491192 BytesDie Ausgabe überschreitet die TIO-Beschränkungen. Ich wollte
%`
Stufen verwenden, um all das zu vermeiden,$%'¶$%`
aber aus irgendeinem Grund macht das nicht das, was ich will. Bearbeiten: 57 Bytes dank @ fireflame241 gespeichert.quelle
ing
und "Ito" werden jeweils mehrmals verwendet. Jedem Aufruf von1
,2
und5
vor und nach einem Leerzeichen können diese in die Substitution eingefügt werden. Ebenso6
und7
werden immer von einem Punkt gefolgt.3
scheint nur einmal verwendet zu werden.Bubblegum , 23353 Bytes
Jep. Das meiste davon passt nicht in eine Antwort, also ... Sowohl der Code als auch der TIO-Link sind in Pasten.
Code (ein Hexdump des Codes)
TIO-Verbindung (die Ausgabe überschreitet die Einschränkungen von TIO)
quelle