Japt , 85 bytes
97
`...`£`...`hXiU°d}R
onde os dois pares de reticulares representam cadeias de caracteres imprimíveis e imprimíveis aparentemente aleatórios. Experimente online! Resultado:
achinesses
boninesses
cozinesses
dozinesses
easinesses
fozinesses
gorinesses
hazinesses
ickinesses
jokinesses
keennesses
lazinesses
mazinesses
nosinesses
oozinesses
pipinesses
quadrantes
riminesses
sizinesses
tininesses
uglinesses
vainnesses
warinesses
xylotomies
yeomanries
zaninesses
Explicação
A técnica básica é:
97 Set U to 97
`ch
on
...`£ }R Map each line X in this multiline string to:
U°d Take U.toCharCode() and increment U. ["a", "b", "c", ...]
Xi Prepend this to X. ["ach", "bon", "c", ...]
`cozinesses`h Overwrite this onto the beginning of "cozinesses".
["achinesses", "boninesses", "cozinesses", ...]
£ }R Rejoin with newlines and implicitly output.
Descobri cozinesses
começando com nesses
outras respostas que foram usadas e encontrando repetidamente a letra anterior que apareceu entre as 26 letras com mais frequência. Como as técnicas gananciosas geralmente não são ótimas, mais tarde escrevi um script para encontrar a palavra ideal real:
alphabet="abcdefghijklmnopqrstuvwxyz".split``;
wordlist=alphabet.map(x=>[]);
document.body.innerText.split`\n`.slice(0,-1).map(x=>wordlist[x.charCodeAt()-97].push(x));
f=(q="",n=7,s=0,words=wordlist,z=n&&alphabet.map(x=>[x+q,words.map(y=>[y=y.filter(z=>z[n]==x),t+=0 in y][0],t=0),t]))=>n?z.filter(x=>x[2]>=Math.max(1,...z.map(x=>(x[2]-2)*2/3))).map(x=>f(x[0],n-1,s+26-x[2],x[1])).sort((a,b)=>a[1]-b[1])[0]:[q,s];
console.time("find optimal word");
console.log(f());
console.timeEnd("find optimal word");
(Não me importo que seja incrivelmente feio. Foi assim que o PPCG me ensinou a codificar: P Não se preocupe, não faço isso na produção.)
De qualquer forma, quando executado no console do navegador na lista de 10 letras , isso gera
[ "ozinesses", 57 ]
A 57
sendo o número de cartas que teriam de aparecer na seqüência de várias linhas. Também levou cerca de 17 segundos no meu computador; portanto, seja paciente ao executá-lo.
Substituindo a f=
linha por
f=(q="",n=9,s=0,words=wordlist,z=n&&alphabet.map(x=>[x+q,words.map(y=>[y=y.filter(z=>z[n]==x),t+=0 in y][0],t=0),t]))=>n?[for(x of z.filter(x=>x[2]>=Math.max(1,...z.map(x=>(x[2]-2)*2/3))))for(y of f(x[0],n-1,s+26-x[2],x[1]))y].sort((a,b)=>a[1]-b[1]).filter((x,i,a)=>x[1]<=a[0][1]+20):[[q,s]];
você pode obter todos os sufixos dentro de 20 caracteres do ideal. (Altere 20
no final para outra coisa para ajustar isso. Nota: esta função provavelmente só funciona no Firefox.) Você pode encontrar uma lista de todos os sufixos abaixo de 100 aqui .
De qualquer forma, a partir daí é apenas uma tarefa de encontrar a palavra para cada letra do alfabeto com o maior sufixo em comum ozinesses
. Eu escrevi um script japt para fazer isso, além de comprimir os prefixos necessários para mim e me dizer quanto tempo o programa resultante será. (Você precisará colar manualmente a lista de palavras entre as aspas.)
Essa explicação provavelmente foi um pouco confusa; portanto, fique à vontade para fazer qualquer pergunta que possa ter.