Nicht wenige Leute hier sind wahrscheinlich begeisterte XKCD-Leser. Ich denke also, ich fordere Sie heraus, etwas zu tun, das Megan leicht tun kann: ein Skript zu erstellen, das Tausende beruhigender Gleichnisse darüber generiert, was Computer niemals können.
Dein Drehbuch
- Kann in jeder Sprache geschrieben werden
- Muss Code-Golf sein
stdin
Die Anzahl der Gleichnisse, die ausgegeben werden sollen, muss eingegeben werden (auf oder entsprechend Ihrer SpracheMAX_INT
).- Gibt eine Anzahl zufällig generierter Parabeln aus.
Die Gleichnisse sind wie folgt
- Beginnt mit
'Computers will never '
- Als nächster einer von 16 einzigartigen englischen Verben , die Sie frei Ihr Programm optimieren wählen können, aber müssen umfassen
code-golf
undunderstand
. - Als nächstes eines von 16 einzigartigen englischen Substantiven, die Sie wiederum frei wählen können, um Ihr Programm zu optimieren, aber und einschließen müssen .
a salad
an octopus
- Als nächster einer von 16 einzigartigen englischen Klauseln , die Sie frei Ihr Programm optimieren wählen können, aber müssen umfassen
for fun
undafter lunch
. - Endet mit einem Newline-Zeichen (
\n
oder einem gleichwertigen Zeichen)
Wenn also zum Beispiel die Eingabe ist 2
, wäre eine gültige Ausgabe
Computers will never code-golf a salad for lunch
Computers will never hug a tree in vain
Die Programmgröße wird in Bytes und nicht in Zeichen gezählt (also kein Unicode-Kauderwelsch). Standardlücken sind nicht erlaubt.
Dies ist meine erste Herausforderung. Wenn ich also offensichtliche Änderungen vornehmen sollte, kommentieren Sie dies bitte.
Bearbeiten: Ich denke darüber nach, die Wörterbuchgröße von der Byteanzahl zu subtrahieren, um die 'Komprimierung' des Wörterbuchs zu fördern. Ich werde anhand zukünftiger Antworten sehen, ob dies aus der Ferne möglich ist. Wenn ja, können Sie mit einem Bonus rechnen.
Antworten:
CJam,
238232 (oder 209) BytesDies verwendet viele Verben / Nomen / Klauseln aus bereits geposteten Antworten, aber einige sind auch neu. Ich habe die Zeichen Base konvertiert, um einige zusätzliche Bytes zu entfernen.
Die konvertierte Basiszeichenfolge kann 24 weitere Bytes lang sein (um eine 209-Byte-Lösung zu erhalten) . Beachten Sie, dass Sie die Zeichenanzahl anstelle der Byte-Anzahl berücksichtigen müssen, da alle Zeichen einen ASCII-Code von weniger als 255 haben, die Site jedoch weiterhin davon ausgeht , dass einige Unicode haben ), aber ich wollte, dass die Zeichenfolge nur aus druckbaren ASCII-Zeichen besteht.
Nur als Referenz, hier ist die 209-Byte-Version:
Nimmt die Anzahl der zu druckenden Zeilen von STDIN wie folgt an:
Ausgabe:
Probieren Sie es hier online aus
quelle
Hier ist ein etwas anderer Ansatz:
Python,
368 308297 BytesBEARBEITEN, diesmal habe ich tatsächlich Golf gespielt. Ab 60 Zeichen rasiert.
Hier ist der Golf-Trick, auf den ich am meisten stolz bin:
Ich wusste nicht einmal, dass Python das kann! Hier ist eine einfachere Erklärung:
weist a und b 0 und 1 und dann 1 und 2 und dann 2 und 3 zu.
Dabei wird die Linguistikbibliothek von NodeBox verwendet, um eine Liste von Verben / Nomen / Klauseln zu generieren und diese dann zufällig auszuwählen.
Diese Bibliothek ist nicht besonders gut für die Erzeugung von zufälligen Wörtern geeignet (daher die 368 Bytes), aber das Schöne an diesem Ansatz ist, dass Sie einige ziemlich zufällige beruhigende Gleichnisse damit erhalten. Hier ist was ich meine.
Aber hey, ich glaube nicht, dass irgendjemand anderes Programm das Sprichwort hervorbringt: "Computer werden niemals einen Tierliebhaber für Aschekuchen blenden."
Hier ist eine ungolfed Version (574 Bytes):
Und zu guter Letzt, hier sind einige meiner beruhigenden Lieblingsparabeln, von denen ich annehme, dass sie in den nächsten 10 bis 15 Jahren zu sehr beliebten Schlagworten werden.
und mein persönlicher Favorit:
quelle
from random import choice as C
könntefrom random import*;C=choice
for i in ' '*(something)
Sie zweimal, damit Sie zwei Bytes einsparen können, wenn Sie das Leerzeichen zwischenin
und entfernen.' '
JavaScript ES6, 331
336BytesCode-Snippet anzeigen
Ich habe Wörter ausgewählt, die sowohl als Verben als auch als Substantive funktionieren, um die Liste zu verkürzen. Lassen Sie mich jedoch wissen, wenn dies nicht zulässig ist. Probieren Sie es oben mit Stack Snippets (der Code wurde für ES5 formatiert) oder unter http://jsfiddle.net/5eq4knp3/2/ aus . Hier ist eine Beispielausgabe:
quelle
s
über die anderen Wortarten in der Liste zu springen. Die beiden Tilden sind bitweise NICHT-Operatoren und dienen lediglich als kürzere MethodeMath.floor()
.r=s=>12
ist das gleiche wiefunction r(s){return 12}
, nur kürzer. Siehe auch die Dokumentation zu MDN .~~
ähnelt aMath.floor
(verhält sich aber bei negativen Zahlen anders) und=>
ist eine Funktionsdefinition im ES6-Stil mit einer Schrankethis
.Python -
390 385383Zufällige Beispielausgabe:
quelle
Perl - 366
Hier ist ein Test:
quelle
CJam,
353317301 BytesIch verwende aus Gründen der Fairness die Wortliste von Falko, sodass der einzige Unterschied beim Golfen in den Sprachen und nicht im Inhalt liegt (ich kann die Wortliste ändern, wenn die Leute auch mit dem Golfen beginnen).
quelle
NetLogo, 396
Ich habe auch Falkos Wortliste verwendet, mit zwei Ausnahmen (die die Länge des Programms nicht ändern).
Abhängig davon, wie Sie "Programm" definieren, können Sie die ersten fünf und letzten drei Zeichen entfernen, was einer Punktzahl von 388 entspricht.
quelle