L'inspiration . Publié avec permission .
Imprimez l'un des "faits" possibles du calendrier XKCD:
Vous pouvez obtenir le texte brut et la structure de mon implémentation de référence APL ou de la transcription d' Explain XKCD (y compris le texte du titre juste sous l'illustration).
Règles
À chaque nœud de décision, il doit y avoir une chance (pseudo-) aléatoire égale pour chaque choix.
Vous pouvez utiliser tous les majuscules.
Vous devez générer trois phrases; une question, une raison et un texte de titre.
Les trois phrases doivent être terminées par ?
, .
, et .
respectivement, et séparés les uns des autres par un espace.
Le seul espace blanc supplémentaire que vous pouvez inclure est un espace de fin et / ou un saut de ligne.
Exemples
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.
Je ... je veux dire ... je ... D'accord.Réponses:
Befunge-93,
19591930 octetsEssayez-le en ligne!
Explication
Dans les trois premières lignes, nous commençons par construire une sorte de table d'état sur la pile, représentant le graphique de toutes les phrases possibles. Ces entrées de pile sont regroupées en paires, il y a donc d'abord un élément de chaîne, puis un saut ou une branche. Si nécessaire, le graphique est rempli de chaînes vides et de sauts de longueur nulle afin de répondre à cette exigence.
Notre boucle principale commence alors par sauter un nombre, représentant un élément de chaîne, hors de la pile. Ce nombre est interprété comme un décalage dans la table des chaînes dans la section inférieure de la source. La table de chaînes est essentiellement une sorte de liste liée, enroulée sur plusieurs lignes pour tenir dans l'espace mémoire contraint de Befunge.
Après avoir sorti une chaîne, l'élément suivant sur la pile est soit un saut, soit une branche. Si le nombre est inférieur à 32, c'est un saut, que nous interprétons en supprimant autant de paires d'éléments de la pile. Si le nombre est égal ou supérieur à 32, il s'agit d'une branche et nous utilisons la valeur (moins 32) pour rechercher les détails de la branche dans le tableau de la dernière ligne de la source.
Les entrées de la table de branche se composent chacune d'un décompte, suivi d'une liste de décalages. Une fois que nous savons quelle branche utiliser, nous générons simplement un nombre aléatoire, modulons le nombre de branches, pour rechercher le décalage approprié. Ce décalage est alors interprété comme un saut, supprimant le nombre d'éléments requis de la pile.
Nous répétons ce processus, produisant une chaîne, puis effectuant un saut ou une branche, jusqu'à ce que nous manquions d'entrées de pile. À ce stade, nous sortons simplement un "." pour marquer la fin de la dernière phrase, puis quittez.
la source
Javascript (ES6),
1698151015061501 octetsMerci à 12Me21 pour avoir corrigé un bug dans le code, qui a ajouté 2 octets
f=
etdocument.write(f())
ne font pas partie du nombre d'octetsla source
Python 2 , 1297 octets
-419 octets grâce aux ovs.
Essayez-le en ligne!
Le code réel:
C'était fatigant. Je n'ai même pas fait de golf de base. Quelqu'un s'il vous plaît, écrivez un script pour jouer au golf.
la source
Charbon de bois , 806 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
R ,
190317511743 octetsUne solution simple de force brute. Cela pourrait être un moyen de jouer au golf un peu plus.
Essayez-le en ligne!
la source
JavaScript (ES6), 1275 octets
où
...
représente le résultat de l'exécutionatob()
sur cette chaîne et du remplacement\
par\\
,`
par\`
, 0x00 par\0
et 0x0D par\r
:Essayez-le ici, moins
btoa
:la source
APL (Dyalog) , 1302 octets
Essayez-le en ligne!
Adám a aidé avec celui-ci ... puis m'a mis au défi de le terminer. : P
-11 grâce à Adám (en utilisant son nouvel outil SBCS, je peux abuser de l'encodage sans frais supplémentaires).
la source
Haskell ,
19491938 octetsEssayez-le en ligne! (A 2 octets supplémentaires pour
f=
)Surtout écrit cela juste pour que je puisse créer la structure de données. Cela pourrait certainement être amélioré mais je suis fatigué et je dois partir bientôt de toute façon. Je pense que la capitalisation est généralement correcte, mais je convertirai tout en majuscules si elle est incorrecte. Cela ne changera pas le nombre d'octets ou quoi que ce soit puisque je n'ai rien fait de bizarre avec les données de chaîne.
L'idée de base est une liste d'arbres liés où chaque nœud est soit vide (
E
), un signe de ponctuation (P
) ou une étiquette de chaîne avec des enfants. Tous les nœuds sauf lesE
nœuds ont un nœud "suiveur" qui vient après eux.EDIT: je viens de remarquer une faute d'orthographe (j'ai écrit "personne ne sait pourquoi" au lieu de "personne ne sait pourquoi") donc j'ai dû ajouter un octet pour le corriger mais j'ai aussi trouvé du code qui pourrait être coupé
la source
APL (Dyalog Unicode) , 1593 octets
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')'.'
Essayez-le en ligne!
Définit deux fonctions d'assistance, puis les utilise dans une expression géante:
C←
C (pour C hoose) est?∘≢
un nombre aléatoire jusqu'au nombre d'éléments dans l'argument⊃
choisi⊢
parmi les argumentsS←
S (pour S plit et S elect) estC
choisi parmi'|'∘≠
l' argument⊆
partitionné where-not-pipe⊢
∊
e nlist (Aplatir)C
choisit dans une liste de chaînes etS
choisit des sous - chaînes d'une|
chaîne délimitée, et ceux - ci ne sont utilisées en combinaison pour construire un « fait ».la source