... y golf real para mis amigos de código.
Este es un desafío basado en un cómic XKCD de un año que consiste principalmente en brindis (parodias del primero en el cómic) siguiendo un patrón distinto, pero con una ligera variación.
Su tarea es escribir un programa (o función) que tome la primera mitad de cualquier tostada del cómic (todo hasta e incluyendo el friends
) como entrada (a través de stdin o un argumento de función) y genera (o devuelve) el texto preciso de la segunda mitad. No tiene que manejar entradas no válidas, se aplican lagunas estándar, el código más corto en bytes gana.
Ejemplos
Para ayudar a aquellos que no quieren copiar las tostadas de ningún otro lado, aquí están todos, separados en entrada y salida.
Input: Champagne for my real friends
Output: and real pain for my sham friends!
Input: Pseudopods for my real friends
Output: and real pods for my pseudo-friends!
Input: Petticoats for my real friends
Output: and real coats for my petty friends.
Input: Loosestrife for my real friends
Output: and real strife for my loose friends!
Input: Ladybugs for my real friends
Output: and real bugs for my lady friends!
Input: Single-payer for my real friends
Output: and RealPlayer for my single friends.
Input: Tumbleweeds for my real friends
Output: and real weed for my Tumblr friends!
Input: Fauxhawks for my real friends
Output: and real hawks for my faux friends!
Input: Platonic solids for my real friends
Output: and real solids for my platonic friends!
Single-payer
(en lugar deSingle-player
).Single-payer
.Respuestas:
Retina , 119 bytes
La versión anterior no gestionaba correctamente el espacio en "sólidos platónicos", este funciona y es más corto :)
Pruébalo en línea!
Esto transforma la entrada en la salida a través de una serie de sustituciones.
La parte más interesante es esta sustitución (una especie de regex golf):
Lo que hace casi todo el trabajo, dividiendo la primera palabra, colocando sus piezas en los lugares correctos, eliminando espacios adicionales y construyendo la estructura de la salida. Para funcionar correctamente en el caso de prueba "Tumbleweeds", esto depende de la sustitución anterior "eds" -> "ed".
El resto está compuesto principalmente por sustituciones que se ocupan de casos especiales. Otras partes interesantes son:
Esto convierte todo, excepto "T" (para Tumblr) en minúsculas.
Esto coloca un "." al final de cada oración que contiene una palabra con una "y" algunas letras después de una "p" ("insignificante" y "pagador" en la práctica). Luego coloca un "!" al final de todas las oraciones que terminan con una "s" (todas las demás).
fuente
platonic
. Solución sugerida: TIO (+5 bytes)Python 2,
291269293255247 bytes¡Gracias
Erik the Outgolfer
por guardar 22 bytes!+24 bytes para tener en cuenta algunas salidas que terminan en
.
lugar de!
Solución simple para comenzar las cosas. Comprueba la octava letra de la entrada, como se sugiere en los comentarios, y busca la salida correspondiente en
un diccionario yuna matriz.Pruébalo en línea!
fuente
Single-payer for my real friends
...RealPlayer
es un caso especialSOGL , 143 bytes
Esto usa esta cadena como la parte principal. "|" son los divisores y "_" son marcadores de espacio, por lo que dividir funcionaría correctamente.
Ejemplo de entrada: "Sólidos platónicos para mis verdaderos amigos" Explicación:
fuente
Python 3 ,
788,403,359396 bytesUltima versión
Este es ahora mi quinto intento. He logrado la mitad del tamaño de mi programa original. Ahora incluye el "-" que falta y creo que es una solución completa. Todavía sospecho del lado voluminoso; pero mucho más cerca de la meta. He tenido mucha ayuda . Gracias por toda la útil ayuda.
Pruébalo en línea!
Publicación original
Esta es mi primera publicación sobre golf de código, así que me disculpo de antemano por mi torpe programa. No puedo ver cómo se podría hacer un programa para convertir "Champagne" en "dolor", "farsa" al analizar las palabras. Sin embargo, me gustaría ver a alguien más resolver eso. Entonces, como mi nivel de habilidad dicta que mi programa necesita saber de antemano que "Champagne" es "dolor", "farsa", no parecía tener mucho sentido codificar una solicitud de entrada. Como resultado, lo he dejado fuera y he sido un poco literal con mi salida de impresión. Espero que esté bien :)
fuente
Röda ,
299292288259 bytes4 bytes guardados gracias a @fergusq por usar en
,
lugar de..
enpush
declaracionesBytes guardados gracias a @fergusq que me muestra el camino de
indexOf
Pruébalo en línea!
Tan cerca de Python ... tan cerca ...
Tu movimiento, Python.Explicación
fuente
..
con,
.r=indexOf(a[7:8],"noarspekc")
.JavaScript (ES6),
230228221216 bytesPrueba
Mostrar fragmento de código
fuente
PHP,
202220204203 bytesfuente
Perl,
173bytesEliminando nuevas líneas y hendiduras, esto se convierte en 173 bytes de código Perl5. Desvergonzadamente robó la primera expresión regular de la respuesta de Retina de Leo. (El mío fue un par de caracteres más largo)
Para la versión perl5> = 5.14, se pueden eliminar otros 5 bytes con eval y el nuevo modificador de sustitución / r regexp. Terminando con 168 bytes:
Pruébalo en línea!
fuente
C, 367 bytes
No terminó tan corto como parecía.
fuente
Java 7,
585553 bytes-32 bytes gracias a @Zircon .
Definitivamente se puede jugar al golf usando algo diferente a un Mapa.
Explicación:
Código de prueba:
Pruébalo aquí (ideone.com tiene errores últimamente, así que estoy usando TIO ahora ..)
fuente
put
lugar dem.put
.C (gcc) , 311 bytes
Patrones claros, pero tantas excepciones. Aún así, debe haber una mejor manera que esto!
Pruébalo en línea!
fuente