Japt , 85 byte
97
`...`£`...`hXiU°d}R
di mana dua pasang backticks mewakili string karakter yang tampaknya dapat dicetak dan tidak dicetak. Cobalah online! Keluaran:
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
Penjelasan
Teknik dasarnya adalah:
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.
Saya menemukan cozinesses
dengan memulai dengannesses
beberapa jawaban lain telah digunakan dan berulang kali menemukan huruf sebelumnya yang muncul di antara sebagian besar dari 26 huruf. Karena teknik serakah tidak sering optimal, saya kemudian menulis naskah untuk menemukan kata optimal yang sebenarnya:
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");
(Saya tidak peduli itu sangat jelek. Ini adalah bagaimana PPCG telah mengajarkan saya untuk kode: P Jangan khawatir, saya tidak melakukan ini dalam produksi.)
Lagi pula, ketika dijalankan di konsol browser pada daftar kata 10 huruf , ini menghasilkan
[ "ozinesses", 57 ]
Itu 57
menjadi jumlah huruf yang harus muncul dalam multiline string yang. Butuh waktu sekitar 17 detik di komputer saya, jadi bersabarlah saat Anda menjalankannya.
Dengan mengganti f=
baris dengan
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]];
Anda bisa mendapatkan semua sufiks dalam 20 karakter yang optimal. (Mengubah20
di akhir untuk sesuatu yang lain untuk menyesuaikan ini. Catatan: fungsi ini mungkin hanya berfungsi di Firefox.) Anda dapat menemukan daftar semua sufiks di bawah 100 di sini .
Ngomong-ngomong, dari sana, itu hanya tugas menemukan kata untuk setiap huruf dari alfabet yang memiliki akhiran terpanjang yang sama dengan ozinesses
. Saya menulis skrip Japt untuk melakukan ini, serta mengkompres prefiks yang diperlukan untuk saya dan memberi tahu saya berapa lama program yang dihasilkan akan. (Anda harus menempelkan secara manual daftar kata di antara tanda kutip.)
Penjelasan ini mungkin agak membingungkan, jadi silakan bertanya apa pun yang Anda miliki.