Su objetivo es crear una canción del alfabeto como texto en la siguiente forma (en orden):
A is for <word starting with A>
B is for <word starting with B>
C is for <word starting with C>
...
Z is for <word starting with Z>
Salida de ejemplo:
A is for Apple
B is for Banana
C is for Carrot
D is for Door
E is for Elephant
F is for Frog
G is for Goat
H is for Hat
I is for Icicle
J is for Jelly
K is for Kangaroo
L is for Lovely
M is for Mom
N is for Never
O is for Open
P is for Paste
Q is for Queen
R is for Rice
S is for Star
T is for Test
U is for Underneath
V is for Very
W is for Water
X is for X-ray
Y is for Yellow
Z is for Zipper
Reglas:
Cada "letra" de la canción tiene su propia línea, por lo que hay 26 líneas y un posible avance de línea final.
La salida distingue entre mayúsculas y minúsculas:
- La letra al comienzo de cada línea debe estar en mayúscula.
is for
es minúscula- La palabra elegida no necesita ser mayúscula, pero puede ser. Todas las líneas deben ser consistentes.
La palabra elegida para cada línea depende de usted, pero debe ser una palabra inglesa válida con al menos 3 letras, y no puede ser una conjunción (like
and
obut
), interjección / exclamación (likehey
oyay
), abreviatura (likeXLS
) o un nombre (comoJon
)Aunque dudo que alguien lo encuentre más corto, me parece aceptable usar una frase en lugar de una sola palabra. Entonces, si por alguna razón
S is for Something smells fishy...
es más corta, hazlo.Ponga el resultado de su programa en su respuesta, o al menos la lista de palabras que utilizó (si hay un enlace para ejecutar su código en línea, no necesitamos ver el resultado completo).
El código más corto gana
Este desafío fue inspirado por este video .
fuente
Respuestas:
SOGL 0.8.1 ,
6032 bytesExplicación:
Esta es la respuesta de Jonathan Allan , pero portada a este idioma.
Versión anterior: (SOGL 0.8.2)
salida:
Este no es el más corto que este lenguaje puede hacer, pero debería ser el mejor con las palabras codificadas.
fuente
Bash (+ coreutils),
81,87,8278 bytesUtiliza la página de manual para X , como fuente de palabras.
Golfed
EDICIONES
|&
para guardar 5 bytes;Prueba
fuente
|&
, por lo que puede ser codificado.Python 2 ,
8877 bytes-11 bytes gracias a xnor (evite el zip atravesando la cadena y contando
c
desde 65)Pruébalo en línea!
(Un puerto de mi respuesta Jelly, cuando era 56 bytes).
fuente
x
en paralelo .Unt
? No puedo encontrar esa en ninguna parteUnt
sea una palabra, peroUt
es para que pueda reemplazar eln
en su literal con\0
para hacer esto válido y solo agregar un byte más. Editar reglas de olvido dicen que tiene que tener 3 letras de largo ... hmmmGolpetazo,
78, 69 bytes¡Aardvarks, Babushkas y Kamikazes!
Golfed
EDICIONES
Prueba
Hace uso de / usr / share / dict / words :
fuente
PowerShell ,
15014111775 bytesPruébalo en línea!
Bucles de
65
a90
(es decir, ASCIIA
aZ
). En cada iteración, convertimos el entero en el apropiadochar
(es decir, ASCII65
paraA
) , lo guardamos$i
para usarlo más tarde, concatenamos eso conis for $i
, y luego añadimos en el medio de la palabra apropiada. Eso se hace indexando en una cadena larga (tomada de la respuesta de Jonathan Allan ). Termina con la letrat
para hacer la palabra de tres letras.Las cadenas resultantes se dejan en la tubería, y un implícito
Write-Output
al final las imprime con nuevas líneas en el medio.Ahorré un montón de bytes gracias a la lista de palabras de Rod
Borrowed de la respuesta de Jonathan Allan
fuente
[char]$
ejemploJalea , 39 bytes
TryItOnline!
Basado en la versión de 56 bytes (dos a continuación), pero cambió las palabras para eliminar todas las letras del medio
"u"
para que pueda indexarse en la palabra del diccionario"anisole"
*, que tiene la conveniencia de tener todas las letras que necesitamos en índices menores a seis:1:a, 2:n 3:i, 4:s, 5:o (6:l), 0:e
(observe el"e"
a la derecha está en el índice cero [también 7 y -7 y cualquier otro número congruente con 0 mod 7]). También es temprano en el diccionario, por lo que solo tiene un índice de búsqueda de dos bytes en lugar del mucho más común ("anisogamete"
también funcionaría para 2).* El nombre de la vieja escuela para el éter aromático metoxibenceno, usado a menudo en perfumes.
¿Cómo?
Anterior, 46
Todas las palabras tienen la segunda letra "s" o "a" y la última letra "p" o "t" usando una búsqueda de base cuatro en un producto cartesiano de "sa" y "pt". Excepto la palabra "U", que el código cambia a "Usar" (usando el relativamente voluminoso
F”e272¦
al final). Si pudiera encontrar una lista de palabras como esta que no tenga esa excepción, estaríamos buscando 39 bytes .Lista de palabras:
prueba este
56 bytes anteriores
Lista de palabras:
Se le da formato, darle una oportunidad
Anterior, 83 bytes
... juguemos "¡Encuentra qué letra no tiene un animal!" hay
uno, y solo uno: cuidado con el arenque rojo(una mentira, el arenque rojo era xenón, que es un elemento, obviamente no un animal) , aquí hay dos palabras de cinco letras que no son animales (el xenón es uno) :(por supuesto, esto está formateado correctamente, pruébalo, solo pensé que ahorraría espacio)
fuente
Xenon
No es un animal. Estaba seguro de que estabas bromeandoH is for Herring
, pero supongo que no.Uut
?Retina ,
8987 bytesGuardado 2 bytes gracias a Martin Ender
Pruébalo en línea!
Escogí una palabra para cada letra que termina en
t
(algunas son bastante oscuras).Explicación
Reemplace la entrada inexistente (vacía) con el texto anterior.
Reemplace cada letra mayúscula con
(newline)(itself) is for (itself)
. Esto hace que el texto anterior se divida en líneas separadas como... y así
Sin embargo, dado que la nueva línea se colocó antes de cada capital, hay una nueva línea principal que debe eliminarse. Se elimina en esta etapa.
Ponga un
t
al final de cada línea, ya que cada palabra utilizada en la canción termina ent
.fuente
$&
o en$0
lugar de$1
. En realidad, eso también podría ahorrar bytes en mi etapa dividida.$&
exactamente? No lo vi en el wiki de GitHub.$0
(y es solo parte del sabor .NET, así como la mayoría de los otros sabores).Retina ,
9288 bytesAhorró 4 bytes al tomar prestada una idea de la respuesta de Business Cat .
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
Basado en la lista de palabras de AdmBorkBork , pero he cambiado algunas palabras más en unas que terminan
ad
para guardar más bytes en el sufijo común.Explicación
Convierta la entrada vacía (inexistente) en esta cadena. Contiene todas las letras, así como el resto de esas palabras que no terminan en
ad
.Inserte un salto de línea antes de cada letra mayúscula y luego conviértalo
X is for X
.Une las letras que ahora están solas y agrega
ad
para completar las palabras acortadas.Deseche la línea vacía que se creó insertando un salto de línea antes
A
.fuente
PHP,
122124127120115101 bytesSigue la
<letter><filler>t
estructura "estándar" .Traté de encontrar palabras que antes nadie usara.
Si ve una palabra que quiere que reemplace, dígame.
La nueva línea se representa
\n
pero se cuenta como 1 byte.Salida:
Palabras raras:
fuente
vprintf
yzend_version
ciertamente no son palabras en inglés. Muy pocas de estas entidades son en realidad palabras.zit
una palabra extraña, al menos, creo que todos ya deberían saber lo que significa.Pyke,
555148 bytesPruébalo aquí!
El enlace tiene una longitud de 3 y no califica ya que las palabras incluyen conjuntivas.
Salidas:
Puede probar esto fuera de Pyke usando el mismo algoritmo. Requiere dictionary.json .
fuente
Timeout running code. BAD EVAL
Asegúrese de actualizar su enlace "Pruébelo en línea".Z is for zoofilia
Consideraría seriamente antes de dejar que mis hijos canten esto.Japt ,
5250 bytesColaborado con @ETHproductions
Contiene muchos no imprimibles. ¡Pruébalo en línea!
La lista de palabras es:
Japt usa la biblioteca de compresión de cadenas shoco , que reduce las ejecuciones comunes de letras minúsculas en un byte. Aquí hay una lista completa de todas las ejecuciones de dos letras que se condensan en un byte:
Entonces, la idea es formar una palabra con uno de estos pares para cada letra del alfabeto.
Una cosa interesante a tener en cuenta es que, si bien Japt puede descomprimir implícitamente una cadena envuelta en backticks, en realidad es un byte más largo porque tendría que tomar dos caracteres en la cadena descomprimida, en lugar de uno.
fuente
05AB1E ,
454239383736 bytesPruébalo en línea!
Explicación
Au
empuja el alfabeto en mayúscula.'Æå
empuja la palabrascenario
.•à¡P°€kš¦zᮕ
empuja el número de base 1036774474076746444766322426
.Sè
usa esos dígitos para indexarscenario
.)ø
comprime esas cadenas juntas en la lista[An, Bi, Co, ..., Zi]
Palabras usadas:
['Ant', 'Bit', 'Cot', 'Dot', 'Eat', 'Fat', 'Got', 'Hat', 'Ist', 'Jot', 'Kit', 'Lot', 'Mat', 'Nit', 'Oat', 'Pat', 'Qat', 'Rot', 'Sit', 'Tit', 'Unt', 'Vet', 'Wet', 'Xat', 'Yet', 'Zit']
Versión de 33 bytes con algunas palabras de las que no estoy seguro
Palabras:
['Ant', 'Bat', 'Cat', 'Dat', 'Eat', 'Fat', 'Gat', 'Hat', 'Ist', 'Jat', 'Kat', 'Lat', 'Mat', 'Nat', 'Oat', 'Pat', 'Qat', 'Rat', 'Sat', 'Tat', 'Ust', 'Vat', 'Wat', 'Xat', 'Yat', 'Zat']
fuente
Ruby,
93 84 69 63 5862 bytesSalida:
Todas las palabras de 3 letras que terminan con 't', la mayoría de ellas con 'at'.
Uso de palabras controvertidas (iat, dat, amp. Ump) - 55 bytes:
Aún tratando de encontrar un patrón, creo que es posible usar solo 2 terminaciones diferentes y simplificar todo.
Gracias @Value Ink y @Business cat por ayudar.
fuente
/#{l}../
kit
.///, 163 bytes
Pruébalo en línea
Hm, aprendí algo hoy ...
fuente
05AB1E ,
7268 bytesCódigo:
Utiliza la codificación CP-1252 . Pruébalo en línea!
Explicación
El siguiente código:
empuja esta matriz:
Y se procesa utilizando el siguiente código:
fuente
”–³”=Apple
yint(–³,214)=23891
todavía no veo la correlación aquí.Clojure,
159232 bytesBueno, ahora es una solución que no compite, ya que sería mucho más fácil codificar las palabras utilizadas. Exponerlo solo por el simple hecho de tener la respuesta correcta (y no usar la lista de palabras de otros).
Básicamente, todavía obtiene todas las funciones definidas en el
clojure.core
espacio de nombres, pero después de eso lo evalúadoc <function name>
y lo pone en cadena. Después de eso lo concatena en una gran cadena (con la palabraxyst
) y encuentra las palabras apropiadas a partir de ahí. Debe ejecutarse en Clojure REPL.Salida:
Vieja solución:
fuente
or
, noorb
, por 1 byte.JavaScript (ES6), 82 bytes
Una función anónima que devuelve una cadena. Contiene no imprimibles; Aquí hay una versión que no:
Esto usa la técnica de @ JonathanAllen, usando solo palabras de tres letras que terminan en
t
. La cadena se descomprime enAnBiCoDoEaFaGOHuIsJoKiLoMaNiOuPaQaRoSiTiUnVeWeXaYeZi
.Intenté encadenar pares de dos letras así:
Ahora he llegado hasta el final
X
pero me quedé atascadoY
; Por lo que puedo decir, la únicaX
palabra alcanzable de tres letras esXis
, y no hay una palabra de tres letras que empieceYs
.Para el registro, la cadena completa era
ceeeweeereueaebiueeiziais
...fuente
uzi
ytiz
...sei
,ski
osri
, que te deja conree
,roe
,rue
,rye
, que te deja con la única ... tres letrasq
-palabras que puedo encontrar sonqat
,qis
yqua
. ¿Hay una página de Wiktionary con más palabras de tres letras?p
palabra que termine enu
).piu
, así que eso no es un problema en absoluto: P ¡Gracias!piu
parece bastante límite: wiktionary no lo tiene como inglés, y dictionary.com lo tiene comopiù
(no sé cómo estamos considerando los acentos para este desafío). Pero sí,ys_
sería un problema.Mathematica, 97 bytes
Busca en Mathematica
WordList
la tercera palabra que comienza con cada letra; esto evita palabras de una letra e interjecciones. Tiene una nueva línea trailng.fuente
Groovy,
7673 bytes(editado de 76 a 73 bytes, gracias gato)
Inspirado en la solución de rubí:
usamos en
any
lugar de cada uno, ya que es más corto y todas las declaraciones println devuelven falso. Para los casos especiales en la cadena, usamos String.find que en groovy devuelve la coincidencia o nulo. En nulo usamos el operador elvis?:
para devolver una palabra que termina en suat
lugar.Imprime:
Groovy, recursividad, 74 bytes
imprime el texto de la primera respuesta y luego lanza una PatternFormatException. Llamamos al cierre de forma recursiva comenzando con 'A' e incrementándolo
++char
hasta que el personaje luego deZ
lanzar el error.Groovy, por trampa, 77 bytes
Con el riesgo de ser linchado:
es decir, lea los datos en esta página e imprima la definición de una respuesta válida al principio. En mi defensa ... imprime la respuesta solicitada ... ahora nadie edita la página ...
Groovy, usando 'tiempos', 81 bytes
Sobre la base de la respuesta de Python con el patrón de palabras de tres letras:
huellas dactilares:
Groovy, recurriendo en main (...), 83 bytes
Suponiendo que contamos las nuevas líneas como un personaje.
imprime el texto de la primera respuesta y luego lanza una PatternSyntaxException.
Groovy, usando eachWithIndex, 88 bytes
Groovy, usando transposición, 102 bytes
fuente
kit
.05AB1E , 77 bytes
Pruébalo en línea!
Utiliza la siguiente cadena comprimida:
ASSBINCATDOTEATFATGOTHATILLJOTKITLOTMETNOTOATPATQUEROTSETTITUSEVATWETXISYIPZAP
Convertido a Base-214:
Usó una lista de palabras de scrabble de 3 letras: http://wordfinder.yourdictionary.com/letter-words/3
La salida es la siguiente:
Tenía una versión de 70 bytes, pero no se permiten palabras de 2 letras.
Explicado:
fuente
qui
No es una palabra inglesa. Buscar esto revela solo una palabra latina.Que
. Sabía que había una palabra de scrabble legal de 3 letras, la escribí mal.}»
podrían ser reemplazadas por,
.SmileBASIC,
1311138281 bytesAhora usando palabras que en
t
fuente
Lithp ,
136125117 bytes(División para facilitar la lectura)
Pruébalo en línea!
Esto es más o menos un puerto de la respuesta de Python
each
el índice de(scope #)
Salida:
fuente
Lote, 250 bytes
Como nunca iba a obtener una puntuación decente, busqué las palabras humorísticas más cortas que pude encontrar:
fuente
apilado , 72 bytes
¡Hay dos para 72 bytes!
Pruébalo en línea! Usando ese patrón impresionante. (Antes de preguntar,
++
sería un solo token, por lo que+ +
se usa en su lugar).Ambos funcionan iterando de
65
a90
y obteniendo la secuencia de caracteres correcta. Notas:#:
es un alias parachr
#
es un alias paraget
{!...}
es lo mismo que{ n : ... }
(lambda conn
como parámetro)Para 73 bytes:
fuente
Mathematica 93 Bytes
rendimientos
fuente
Groovy, 72 bytes
Salida
fuente
Python 3,
145137135 bytesSacrifiqué algunos bytes para seudoaleatorizar la salida con cada ejecución. La idea es buscar palabras en minúscula de al menos 3 caracteres
/usr/share/dict/words
y luego elegir una de esa lista usandoid([x])%99
.Ediciones
title()
ya que las palabras no tienen que ser mayúsculas"\n(%c.{3,})"
(+ 3 bytes) para permitir la eliminación de,re.M
(- 5 bytes).Salida de ejemplo:
fuente
Qohele
, aunque una búsqueda revela que es un libro o un volumen de texto sagrado.GNU sed, 81 + 1 (r flag) = 82 bytes
Esta es una implementación sed de la lista de palabras de la respuesta de Jonathan Allan .
Las palabras, excepto la letra final compartida
t
, se dan en forma concatenada en la línea 1, y luego se imprimen en el formato solicitado por la línea 2. Una nueva línea final está presente.Ejecutar :
fuente
Java 7,
124121 bytesBasado en la respuesta de @JonathanAllen , ya que Java no tiene un elegante diccionario incorporado. ;) Traté de encontrar otra letra final para todo el alfabeto (like
s
on
ory
), o una letra del medio (likea
oe
), pero a la mayoría le faltaban solo una o dos palabras, así que terminé usandot
también. Las palabras se eligen manualmente de wordhippo.com .Sin golf:
Pruébalo aquí
Salida:
fuente
+a+++
. Me gusta escribir esos: PPHP,
91878676 bytesbasado en la lista de palabras de Jonathan Allan :
versiones anteriores, 86 bytes:
o
Corre con
-nr
.salida
Para las palabras raras, vea la respuesta de Ismael
fuente