La inspiración . Publicado con permiso .
Imprima uno de los posibles "hechos" del calendario XKCD:
Puede obtener el texto sin formato y la estructura de mi implementación de referencia APL o de la transcripción de Explain XKCD (incluido el texto del título justo debajo de la ilustración).
Reglas
En cada nodo de decisión, debe haber una posibilidad igual (pseudo) aleatoria de cada elección.
Puedes usar todo en mayúsculas.
Debes generar tres oraciones; una pregunta, una razón y un texto de título.
Los tres frases deben terminar por ?
, .
y .
respectivamente, y separados entre sí por un solo espacio.
El único espacio en blanco adicional que puede incluir es un espacio final y / o salto de línea.
Ejemplos
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.
Yo ... quiero decir ... yo ... está bien.Respuestas:
Befunge-93,
19591930 bytesPruébalo en línea!
Explicación
En las primeras tres líneas, comenzamos construyendo una especie de tabla de estado en la pila, que representa la gráfica de todas las oraciones posibles. Estas entradas de la pila se agrupan en pares, por lo que primero hay un elemento de cadena y luego un salto o rama. Cuando sea necesario, el gráfico se rellena con cadenas vacías y saltos de longitud cero para cumplir con este requisito.
Nuestro bucle principal comienza haciendo estallar un número, que representa un elemento de cadena, fuera de la pila. Este número se interpreta como un desplazamiento en la tabla de cadenas en la sección inferior de la fuente. La tabla de cadenas es esencialmente un tipo de lista vinculada, envuelta en varias líneas para caber en el espacio de memoria restringido de Befunge.
Después de generar una cadena, el siguiente elemento en la pila es un salto o una rama. Si el número es menor que 32, es un salto, que interpretamos al soltar tantos pares de elementos de la pila. Si el número es 32 o más, es una rama, y usamos el valor (menos 32) para buscar los detalles de la rama de la tabla en la última línea de la fuente.
Las entradas en la tabla de bifurcación consisten en un recuento, seguido de una lista de compensaciones. Una vez que sabemos qué rama usar, simplemente generamos un número aleatorio, módulo el recuento de ramas, para buscar el desplazamiento apropiado. Este desplazamiento se interpreta como un salto, dejando caer el número requerido de elementos de la pila.
Repetimos este proceso, generando una cadena, luego realizando un salto o rama, hasta que se nos acaben las entradas de la pila. En ese punto, simplemente mostramos un "." para marcar el final de la oración final y luego salir.
fuente
Javascript (ES6),
1698151015061501 bytesGracias a 12Me21 por corregir un error en el código, que agregó 2 bytes
f=
ydocument.write(f())
no forman parte del recuento de bytesfuente
Python 2 , 1297 bytes
-419 bytes gracias a los ovs.
Pruébalo en línea!
El código actual:
Eso fue agotador. Ni siquiera he practicado golf básico. Alguien por favor escriba un guión para jugar golf.
fuente
Carbón , 806 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
R ,
190317511743 bytesUna solución simple de fuerza bruta. Podría ser una forma de jugar golf un poco más.
Pruébalo en línea!
fuente
JavaScript (ES6), 1275 bytes
donde
...
representa el resultado de ejecutaratob()
en esta cadena y reemplazar\
con\\
,`
con\`
, 0x00 con\0
, y 0x0D con\r
:Pruébalo aquí, menos el
btoa
:fuente
APL (Dyalog) , 1302 bytes
Pruébalo en línea!
Adán ayudó con este ... luego me retó a terminarlo. :PAG
-11 gracias a Adám (usando su nueva herramienta SBCS puedo abusar de la codificación sin costo adicional).
fuente
Haskell ,
19491938 bytesPruébalo en línea!(Tiene 2 bytes adicionales para
f=
)Sobre todo escribí esto solo para poder crear la estructura de datos. Esto definitivamente podría mejorarse, pero estoy cansado y tengo que irme pronto de todos modos. Creo que la capitalización es correcta, pero la convertiré en mayúsculas si está mal. Eso no cambiará el recuento de bytes ni nada, ya que no he hecho nada extraño con los datos de la cadena.
La idea básica es una lista vinculada de árboles donde cada nodo está vacío (
E
), un signo de puntuación (P
) o una etiqueta de cadena con elementos secundarios. Todos los nodos exceptoE
nodos, tienen un nodo "seguidor" que viene después de ellos.EDITAR: acabo de notar un error de ortografía (escribí "nadie sabe por qué" en lugar de "nadie sabe por qué"), así que tuve que agregar un byte para solucionarlo, pero también encontré un código que podría ser cortado
fuente
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')'.'
Pruébalo en línea!
Define dos funciones auxiliares y luego las usa en una expresión gigante:
C←
C (para C hoose) es?∘≢
un número aleatorio hasta el número de elementos en la⊃
selección⊢
de argumentos de los argumentosS←
S (para S plit y S elect) seC
elige entre'|'∘≠
el argumento⊆
particionado where-not-pipe⊢
∊
varepsilon nlist (aplanar)C
elijan de entre una lista de cadenas yS
elige a partir de las subcadenas de una|
cadena delimitada, y estos sólo se utilizan en combinación para la construcción de un "hecho".fuente