Inspiration . Gepostet mit freundlicher Genehmigung .
Drucken Sie einen der möglichen "Fakten" des XKCD-Kalenders aus:
Sie können den Rohtext und die Struktur aus meiner APL-Referenzimplementierung oder aus dem XKCD-Transkript (einschließlich des Titeltexts direkt unter der Abbildung) abrufen .
Regeln
An jedem Entscheidungsknoten muss es eine gleiche (Pseudo-) Zufallschance für jede Wahl geben.
Sie können alle Großbuchstaben verwenden.
Sie müssen drei Sätze erzeugen; eine Frage, einen Grund und einen Titeltext.
Die drei Sätze sollten beendet werden ?
, .
und .
jeweils und voneinander durch ein Leerzeichen getrennt.
Das einzige zusätzliche Leerzeichen, das Sie einfügen können, ist ein Leerzeichen und / oder ein Zeilenumbruch.
Beispiele
Did you know that the Latest Sunset drifts out of sync with the Zodiac because of time zone legislation in Indiana? Apparently it's getting worse and no one knows why. While it may seem like trivia, it has to be corrected for by GPS satellites.
Did you know that Leap Year happens later every year because of precession of the equator? Apparently scientists are really worried. While it may seem like trivia, it is taken advantage of by high-speed traders.
Did you know that Easter drifts out of sync with the atomic clock in Colorado because of a decree by the pope in the 1500s? Apparently scientists are really worried. While it may seem like trivia, it causes huge headaches for software developers.
Did you know that shark week happens at the wrong time every year because of an arbitrary decision by Benjamin Franklin? Apparently it causes a predictable increase in car accidents.
Ich ... ich meine ... ich ... okay.Antworten:
Befunge-93,
1959 -1930 BytesProbieren Sie es online!
Erläuterung
In den ersten drei Zeilen erstellen wir zunächst eine Art Statustabelle auf dem Stapel, die den Graphen aller möglichen Sätze darstellt. Diese Stapeleinträge sind in Paare gruppiert, sodass zuerst ein Zeichenfolgenelement und dann ein Sprung oder eine Verzweigung vorhanden sind. Falls erforderlich, wird das Diagramm mit leeren Zeichenfolgen und Sprüngen der Länge Null aufgefüllt, um diese Anforderung zu erfüllen.
Unsere Hauptschleife beginnt dann damit, eine Zahl, die ein Zeichenfolgenelement darstellt, vom Stapel zu entfernen. Diese Zahl wird als Versatz in der Zeichenfolgentabelle im unteren Bereich der Quelle interpretiert. Die Zeichenfolgentabelle ist im Wesentlichen eine Art verknüpfte Liste, die über mehrere Zeilen hinweg in Befunges eingeschränkten Speicherbereich eingefügt wird.
Nach der Ausgabe einer Zeichenfolge ist das nächste Element auf dem Stapel entweder ein Sprung oder eine Verzweigung. Wenn die Zahl kleiner als 32 ist, handelt es sich um einen Sprung, den wir interpretieren, indem wir so viele Artikelpaare vom Stapel werfen. Wenn die Zahl 32 oder mehr ist, handelt es sich um eine Verzweigung, und wir verwenden den Wert (minus 32), um die Verzweigungsdetails in der Tabelle in der letzten Zeile der Quelle nachzuschlagen.
Die Einträge in der Verzweigungstabelle bestehen jeweils aus einer Zählung, gefolgt von einer Liste von Offsets. Sobald wir wissen, welche Verzweigung wir verwenden sollen, erzeugen wir einfach eine Zufallszahl, modulieren die Verzweigungszahl, um den geeigneten Versatz zu ermitteln. Dieser Versatz wird dann als Sprung interpretiert, bei dem die erforderliche Anzahl von Elementen vom Stapel entfernt wird.
Wir wiederholen diesen Vorgang, geben einen String aus und führen dann einen Sprung oder eine Verzweigung durch, bis wir keine Stapeleinträge mehr haben. An diesem Punkt geben wir einfach ein "." um das Ende des letzten Satzes zu markieren und dann zu beenden.
quelle
Javascript (ES6),
1698151015061501 BytesVielen Dank an 12Me21 für die Behebung eines Fehlers im Code, der 2 Bytes hinzugefügt hat
f=
unddocument.write(f())
sind nicht Teil der Byteanzahlquelle
Python 2 , 1297 Bytes
-419 Bytes dank ovs.
Probieren Sie es online!
Der eigentliche Code:
Das war anstrengend. Ich habe noch nicht einmal Golf gespielt. Jemand schreibt bitte ein Skript, um das zu spielen.
quelle
Kohle , 806 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
R ,
190317511743 BytesEine einfache Brute-Force-Lösung. Könnte eine Möglichkeit sein, noch mehr Golf zu spielen.
Probieren Sie es online!
quelle
JavaScript (ES6), 1275 Byte
Dabei steht das
...
für das Ergebnis der Ausführungatob()
in dieser Zeichenfolge und des Ersetzens\
durch\\
,`
mit\`
, 0x00 mit\0
und 0x0D mit\r
:Probieren Sie es hier aus, abzüglich der
btoa
:quelle
APL (Dyalog) , 1302 Bytes
Probieren Sie es online!
Adam half mir dabei ... dann forderte er mich auf, es zu beenden. : P
-11 Dank an Adám (mit seinem neuen SBCS-Tool kann ich die Kodierung ohne zusätzliche Kosten missbrauchen).
quelle
Haskell ,
1949,1938 BytesProbieren Sie es online! (Hat zusätzliche 2 Bytes für
f=
)Meistens schrieb ich das nur, damit ich die Datenstruktur erstellen konnte. Dies könnte definitiv verbessert werden, aber ich bin müde und muss sowieso bald gehen. Ich denke, die Großschreibung ist größtenteils richtig, aber ich werde alles in Großbuchstaben umwandeln, wenn es falsch ist. Das ändert nichts an der Anzahl der Bytes oder so, da ich mit den Stringdaten nichts Seltsames gemacht habe.
Grundidee ist eine verknüpfte Liste von Bäumen, in denen jeder Knoten entweder leer (
E
), ein Interpunktionszeichen (P
) oder eine Zeichenfolgenbezeichnung mit untergeordneten Elementen ist. Alle Knoten mit Ausnahme vonE
Knoten haben einen "Nachfolger" -Knoten, der nach ihnen kommt.BEARBEITEN: bemerkte gerade einen Rechtschreibfehler (ich schrieb "Niemand weiß warum" anstelle von "Niemand weiß warum"), also musste ich ein Byte hinzufügen, um es zu beheben, aber ich fand auch einen Code, der ausgeschnitten werden konnte
quelle
APL (Dyalog Unicode) , 1593 Bytes
C←?∘≢⊃⊢
S←C'|'∘≠⊆⊢
∊'Did you know that '(C('the '(S'Fall|Spring')' Equinox ')('the '(S'Winter |Summer ')(S'Solstice |Olympics '))('the '(S'Earliest |Latest ')(S'Sunrise |Sunset '))('Leap ',S'Day |Year ')'Easter '('the '(S'Harvest|Super|Blood')' Moon ')'Toyota Truck Month '('Daylight Savings Time '~C's∘')'Shark Week ')(C('happens '(S'earlier|later|at the wrong time')' every year ')('drifts out of sync with the '(S'Sun |Moon |Zodiac |atomic clock in Colorado|',' Calendar ',⍨S'Gregorian|Mayan|Lunar|iPhone'))('might '(S'not happen|happen twice')' this year '))'because of '(C('time zone legislation in ',S'Indiana|Arizona|Russia')'a decree by the pope in the 1500s'((S'precession|libration|nutation|libation|eccentricity|obliquity')' of the '(S'Moon|Sun|Earth''s axis|equator|prime meridian|',' line',⍨S'international date|mason-dixon'))'magnetic field reversal'('an arbitrary decision by ',S'Benjamin Franklin|Isaac Newton|FDR'))'? Apparently '(C'it causes a predictable increase in car accidents'('it was even more extreme during the ',S'Bronze Age|Ice Age|Cretaceous|1990s')'that''s why we have leap seconds'('there''s a proposal to fix it, but it ',S'will never happen|actually makes things worse|is stalled in congress|might be unconstitutional')'scientists are really worried' 'it''s getting worse and no one knows why')'. While it may seem like trivia, it '(S'causes huge headaches for software developers|is taken advantage of by high-speed traders|triggered the 2003 Northeast Blackout|has to be corrected for by GPS satellites|is now recognized as a major cause of World War I')'.'
Probieren Sie es online!
Definiert zwei Hilfsfunktionen und verwendet sie dann in einem riesigen Ausdruck:
C←
C (für C hoose) ist?∘≢
eine Zufallszahl , bis zu der Anzahl von Elementen in dem Argumente⊃
picks⊢
aus den Argumenten ausgewählt wurdenS←
S (für S plit und S elect) istC
unter wählen'|'∘≠
die where-nicht-Rohr⊆
partitioniert⊢
Argument∊
ϵ nlist (flatten)C
wählt aus einer Liste von Zeichenfolgen undS
aus den Teilzeichenfolgen einer|
begrenzten Zeichenfolge, und diese werden nur in Kombination verwendet, um einen "Fakt" zu erstellen .quelle