Seu objetivo é criar uma música do alfabeto como texto no seguinte formato (em ordem):
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>
Exemplo de saída:
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
Regras:
Cada "letra" da música tem sua própria linha, então há 26 linhas e um possível avanço de linha à direita.
A saída diferencia maiúsculas de minúsculas:
- A letra no início de cada linha deve ser maiúscula.
is for
é minúsculo.- A palavra escolhida não precisa ser maiúscula, mas pode ser. Todas as linhas devem ser consistentes.
A palavra escolhida para cada linha é com você, mas deve ser uma palavra em inglês válida com pelo menos três letras e não pode ser uma conjunção (como
and
oubut
), interjeição / exclamação (comohey
ouyay
), abreviação (comoXLS
) ou uma nome (comoJon
).Embora eu duvide que alguém ache mais curto, acho aceitável usar uma frase em vez de uma única palavra. Portanto, se por algum motivo
S is for Something smells fishy...
for mais curto, vá em frente.Coloque a saída do seu programa na sua resposta ou pelo menos na lista de palavras que você usou (se houver um link para executar seu código on-line, não precisamos ver a saída inteira).
O código mais curto vence
Este desafio foi inspirado neste vídeo .
fonte
Respostas:
SOGL 0.8.1 ,
6032 bytesExplicação:
Esta é praticamente a resposta de Jonathan Allan , mas portada para esse idioma.
Versão antiga: (SOGL 0.8.2)
resultado:
Este não é o mais curto que esse idioma pode fazer, mas deve ser o melhor com as palavras codificadas.
fonte
Bash (+ coreutils),
81,87,82, 78 bytesUsa a página de manual do X , como a fonte das palavras.
Golfe
EDITAR% S
|&
para salvar 5 bytes;Teste
fonte
|&
, para que possa ser recebido.Python 2 ,
8877 bytes-11 bytes graças ao xnor (evite o zip atravessando a string e contando
c
até 65)Experimente online!
(Uma porta da minha resposta Jelly, quando tinha 56 bytes.)
fonte
x
em paralelo .Unt
? Não pode achar que um em qualquer lugarUnt
é uma palavra, masUt
é para que você possa substituir on
no seu literal por\0
para tornar isso válido e adicionar apenas mais um byte. Editar Nevermind regras dizem que tem que ser 3 letras ... hmmmBater,
78, 69 bytesAardvarks, Babushkas e Kamikazes!
Golfe
EDITAR% S
Teste
Utiliza / usr / share / dict / words :
fonte
PowerShell ,
15014111775 bytesExperimente online!
Loops de
65
para90
(ou seja, ASCIIA
paraZ
). A cada iteração, transformamos o número inteiro no apropriadochar
(ou seja, ASCII65
paraA
), salvamos isso$i
para uso posterior, concatenamos a string comis for $i
e depois aderimos no meio da palavra apropriada. Isso é feito indexando em uma cadeia longa (emprestada da resposta de Jonathan Allan ). Termina com a letrat
para formar a palavra de três letras.As seqüências resultantes são todas deixadas no pipeline e um implícito
Write-Output
no final as imprime com novas linhas no meio.Economizei um monte de bytes graças à lista de palavras com Rod
Borrowed da resposta de Jonathan Allan
fonte
[char]$
exemploGeléia , 39 bytes
TryItOnline!
Com base na versão de 56 bytes (dois abaixo), mas as palavras alteradas para remover todas as letras do meio
"u"
s, para que possam ser indexadas na palavra do dicionário"anisole"
*, que tem a conveniência de ter as letras necessárias em índices inferiores a seis:1:a, 2:n 3:i, 4:s, 5:o (6:l), 0:e
(observe o"e"
à direita está no índice zero [também 7 e -7 e qualquer outro número congruente a 0 mod 7]). Também é cedo no dicionário, portanto, possui apenas um índice de dois bytes, em vez do índice de pesquisa de três bytes, muito mais comum ("anisogamete"
também funcionaria para 2).* O nome da velha escola para o éter aromático metoxibenzeno, frequentemente usado em perfumes.
Quão?
Anterior, 46
Todas as palavras têm segunda letra "s" ou "a" e última letra "p" ou "t" usando uma pesquisa de base quatro em um produto cartesiano de "sa" e "pt". Exceto a palavra "U", que o código muda para "Use" (usando o relativamente volumoso
F”e272¦
no final) - se eu conseguisse encontrar uma lista de palavras como essa que não tenha uma exceção, estaríamos olhando para 39 bytes .Lista de palavras:
tente este
56 bytes anteriores
Lista de palavras:
Está formatado, experimente
Anterior, 83 bytes
... jogamos "Mancha que letra não tem um animal!" existe
um, e apenas um - cuidado com o arenque vermelho(uma mentira, o arenque vermelho era xenon, que é um elemento, obviamente não é um animal) , são duas palavras de cinco letras aqui que não são animais (o xenônio é um) :(é claro que isso está formatado corretamente, tente - eu apenas pensei em economizar espaço)
fonte
Xenon
não é um animal. Eu tinha certeza que você estava fazendo uma piadaH is for Herring
, mas acho que não.Uut
?Retina ,
8987 bytesEconomizou 2 bytes graças a Martin Ender
Experimente online!
Eu escolhi uma palavra para cada letra que termina em
t
(algumas são bastante obscuras).Explicação
Substitua a entrada inexistente (vazia) pelo texto acima.
Substitua cada letra maiúscula por
(newline)(itself) is for (itself)
. Isso resulta no texto acima sendo dividido em linhas separadas, como... e assim por diante
No entanto, como a nova linha foi colocada antes de cada capital, há uma nova linha principal que deve ser removida. É removido nesta fase.
Coloque a
t
no final de cada linha, pois todas as palavras usadas na música terminam emt
.fonte
$&
ou em$0
vez de$1
. Na verdade, isso também pode salvar bytes no meu estágio dividido.$&
faz exatamente? Eu não o vi no wiki do GitHub.$0
(e é apenas parte do sabor do .NET, assim como a maioria dos outros sabores).Retina ,
9288 bytesEconomizou 4 bytes emprestando uma idéia da resposta do Business Cat .
A contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
Com base na lista de palavras do AdmBorkBork , mas mudei mais algumas palavras para aquelas que terminam em
ad
para salvar mais bytes no sufixo comum.Explicação
Transforme a entrada vazia (inexistente) nessa string. Ele contém todas as letras e o restante das palavras que não terminam
ad
.Insira um avanço de linha antes de cada letra maiúscula e depois transforme-o em
X is for X
.Combine as letras que agora estão sozinhas e acrescente
ad
para completar as palavras abreviadas.Descarte a linha vazia que foi criada inserindo um avanço de linha antes
A
.fonte
PHP,
122124127120115101 bytesSegue a
<letter><filler>t
estrutura "padrão" .Tentei inventar palavras que antes não eram usadas por ninguém.
Se você vir uma palavra que deseja que eu substitua, me diga.
A nova linha é representada como
\n
contada como 1 byte.Resultado:
Palavras estranhas:
fonte
vprintf
ezend_version
certamente não são palavras em inglês. Muito poucas dessas entidades são realmente palavras.zit
uma palavra estranha, pelo menos, acho que todo mundo já deveria saber o que isso significa.Pyke,
555148 bytesExperimente aqui!
O link tem três dimensões e não se qualifica, pois as palavras incluem conjuntivos.
Saídas:
Você pode testar isso fora do Pyke usando o mesmo algoritmo. Requer dictionary.json .
fonte
Timeout running code. BAD EVAL
Atualize o link "Experimente online".Z is for zoofilia
Eu consideraria seriamente antes de deixar meus filhos cantarem isso.Japt ,
5250 bytesColaborou com @ETHproductions
Contém muitos não imprimíveis. Teste online!
A lista de palavras é:
Japt usa a biblioteca de compactação de string shoco , que reduz execuções comuns de letras minúsculas em um byte. Aqui está uma lista completa de todas as execuções de duas letras que são condensadas em um byte:
Portanto, a idéia é formar uma palavra com um desses pares para cada letra do alfabeto.
Uma coisa interessante a ser observada é que, embora o Japt possa descomprimir implicitamente uma string envolvida em backticks, na verdade é um byte a mais aqui, porque você precisaria pegar dois caracteres na string descompactada, em vez de um.
fonte
05AB1E ,
454239383736 bytesExperimente online!
Explicação
Au
empurra o alfabeto maiúsculo.'Æå
empurra a palavrascenario
.•à¡P°€kš¦zᮕ
empurra o número da base 1036774474076746444766322426
.Sè
usa esses dígitos para indexarscenario
.)ø
fecha essas cadeias na lista[An, Bi, Co, ..., Zi]
Palavras 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']
Versão de 33 bytes usando algumas palavras que não tenho certeza
Palavras:
['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']
fonte
Ruby,
93 84 69 63 5862 bytesResultado:
Todas as palavras de três letras terminadas com 't', a maioria com 'at'.
Usando palavras controversas (iat, dat, amp. Ump) - 55 bytes:
Ainda tentando encontrar um padrão, acho que é possível usar apenas 2 finais diferentes e simplificar tudo.
Obrigado @Value Ink e @Business cat por ajudar.
fonte
/#{l}../
kit
.///, 163 bytes
Experimente online
Hm, aprendi alguma coisa hoje ...
fonte
05AB1E ,
7268 bytesCódigo:
Usa a codificação CP-1252 . Experimente online!
Explicação
O código a seguir:
empurra esta matriz:
E é processado usando o seguinte código:
fonte
”–³”=Apple
eint(–³,214)=23891
ainda não vejo a correlação aqui.Clojure,
159232 bytesBem, agora é certamente uma solução não concorrente, pois seria muito mais fácil codificar as palavras usadas. Colocá-lo lá fora apenas por uma questão de ter correto resposta (e não usar a lista de palavras de outras pessoas).
Basicamente, ainda obtém todas as funções definidas em
clojure.core
espaço nome, mas depois a avaliadoc <function name>
e a coloca em string. Depois disso, concatena-o em uma cadeia enorme (com a palavraxyst
) e encontra as palavras apropriadas a partir daí. Deve ser executado no Clojure REPL.Resultado:
Solução antiga:
fonte
or
, nãoorb
, por 1 byte.JavaScript (ES6), 82 bytes
Uma função anônima que retorna uma string. Contém imprimíveis; aqui está uma versão que não:
Isso usa a técnica de @ JonathanAllen, usando apenas palavras de três letras que terminam em
t
. A cadeia descompacta paraAnBiCoDoEaFaGOHuIsJoKiLoMaNiOuPaQaRoSiTiUnVeWeXaYeZi
.Tentei encadear pares de duas letras da seguinte maneira:
Eu já fiz todo o caminho,
X
mas fiquei presoY
; até onde eu sei, a únicaX
palavra possível de três letras éXis
e não há nenhuma palavra de três letras começando comYs
.Para o registro, a sequência completa era
ceeeweeereueaebiueeiziais
...fonte
uzi
etiz
...sei
,ski
ousri
, que deixa você comree
,roe
,rue
,rye
, que deixa você com ... a única de três letrasq
-words posso encontrar sãoqat
,qis
equa
. Existe uma página do Wikcionário com mais palavras de três letras?p
-palavra que termina comu
, no entanto.)piu
, então isso não é um problema: P Obrigado!piu
parece bastante limítrofe - o wikcionário não o tem como inglês e o dictionary.com o tempiù
(não sei como estamos considerando os acentos para esse desafio). Mas sim,ys_
seria um problema.Mathematica, 97 bytes
Procura no Mathematica
WordList
a terceira palavra que começa com cada letra; isso evita palavras de uma letra e interjeições. Tem uma nova linha trailng.fonte
Groovy,
7673 bytes(editado de 76 a 73 bytes, obrigado gato)
Inspirado na solução ruby:
usamos em
any
vez de cada um, pois é mais curto e todas as instruções println retornam falsas. Para os casos especiais da string, usamos String.find, que no groovy retorna a correspondência ou nulo. Em null, usamos o operador elvis?:
para retornar uma palavra que termina comat
.Imprime:
Groovy, recursão, 74 bytes
imprime o texto da primeira resposta e lança uma PatternFormatException. Chamamos o fechamento recursivamente começando com 'A' e aumentando
++char
até o personagem depoisZ
lançar o erro.Groovy, trapaceando, 77 bytes
Com o risco de ser linchado:
isto é, leia os dados nesta página e imprima a definição de uma resposta válida no início. Em minha defesa ... imprime a resposta solicitada ... agora ninguém edita a página ...
Groovy, usando 'times', 81 bytes
Com base na resposta python com o padrão de palavras de três letras:
impressões:
Groovy, recorrendo no (...) principal, 83 bytes
Supondo que contamos novas linhas como um caractere.
imprime o texto da primeira resposta e lança uma PatternSyntaxException.
Groovy, usando eachWithIndex, 88 bytes
Groovy, usando transpose, 102 bytes
fonte
kit
.05AB1E , 77 bytes
Experimente online!
Usa a seguinte string compactada:
ASSBINCATDOTEATFATGOTHATILLJOTKITLOTMETNOTOATPATQUEROTSETTITUSEUSEVATWETXISYIPZAP
Convertido para Base-214:
Usou uma lista de palavras de três letras scrabble: http://wordfinder.yourdictionary.com/letter-words/3
A saída é a seguinte:
Tinha uma versão de 70 bytes, mas palavras de 2 letras não são permitidas.
Explicado:
fonte
qui
não é uma palavra em inglês. A pesquisa revela apenas uma palavra latina.Que
eu sabia que havia uma palavra legal de três letras, com erros ortográficos.}»
podem ser substituídas por,
.SmileBASIC,
1311138281 bytesAgora, usando palavras que em
t
fonte
Lithp ,
136125117 bytes(Dividir para facilitar a leitura)
Experimente online!
Esta é praticamente uma porta da resposta Python
each
o índice de(scope #)
Resultado:
fonte
Lote, 250 bytes
Como eu nunca conseguiria uma pontuação decente, procurei as mais curtas palavras de humor que consegui encontrar:
fonte
empilhados , 72 bytes
Existem dois por 72 bytes!
Experimente online! Usando esse padrão incrível. (Antes de você perguntar,
++
seria um único token, então+ +
é usado.)Ambos trabalham por iteração a partir
65
de90
e obter a sequência de caracteres correto. Notas:#:
é um apelido parachr
#
é um apelido paraget
{!...}
é o mesmo que{ n : ... }
(lambda comn
como parâmetro)Para 73 bytes:
fonte
Mathematica 93 Bytes
rendimentos
fonte
Groovy, 72 bytes
Resultado
fonte
Python 3,
145137135 bytesEu sacrifiquei alguns bytes para pseudo-randomizar a saída a cada execução. A idéia é procurar palavras em minúsculas de pelo menos três caracteres
/usr/share/dict/words
e escolher uma dessa lista usandoid([x])%99
.Editar% s
title()
porque as palavras não precisam ser capitalizadas."\n(%c.{3,})"
(+ 3 bytes) para permitir a remoção de,re.M
(- 5 bytes).Exemplo de saída:
fonte
Qohele
, embora uma pesquisa revele que é um livro ou volume de texto sagrado.GNU sed, 81 + 1 (sinalizador r) = 82 bytes
Esta é uma implementação sed da lista de palavras da resposta de Jonathan Allan .
As palavras, exceto a letra final compartilhada
t
, são fornecidas na forma concatenada na linha 1 e, em seguida, impressas no formato solicitado pela linha 2. Uma nova linha final está presente.Execute :
fonte
Java 7,
124121 bytesCom base na resposta de JonathanAllen , já que o Java não possui um dicionário interno sofisticado. ;) Tentei encontrar outra letra final para o alfabeto inteiro (como
s
oun
ouy
), ou uma letra do meio (comoa
oue
), mas a maioria estava faltando apenas uma ou duas palavras, então acabei usandot
também. As palavras são escolhidas manualmente em wordhippo.com .Ungolfed:
Experimente aqui.
Resultado:
fonte
+a+++
. Gosto de escrever: PPHP,
91878676 bytescom base na lista de palavras de Jonathan Allan :
versões anteriores, 86 bytes:
ou
Corra com
-nr
.resultado
Para as palavras estranhas, veja a resposta de Ismael
fonte