Japt , 85 바이트
97
`...`£`...`hXiU°d}R
여기서 두 쌍의 백틱은 무작위로 인쇄 가능하고 인쇄 불가능한 문자의 문자열을 나타냅니다. 온라인으로 사용해보십시오! 산출:
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
설명
기본 기술은 다음과 같습니다.
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.
다른 답변이 사용하고 26 글자 중 가장 많은 글자 중 이전에 나온 글자를 반복적으로 찾는 cozinesses
것으로 시작하여 발견 했습니다 nesses
. 탐욕스러운 기술은 종종 최적이 아니기 때문에 나중에 실제 최적의 단어를 찾기위한 스크립트를 작성했습니다.
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");
(매우 추악한 것을 신경 쓰지 않습니다. 이것이 PPCG가 코드를 가르쳐 준 방법입니다. P 걱정하지 마십시오. 프로덕션에서는이 작업을 수행하지 않습니다.)
어쨌든, 10 글자 단어 목록 의 브라우저 콘솔에서 실행될 때 , 이것은 출력됩니다
[ "ozinesses", 57 ]
57
여러 줄 문자열에 표시해야 할 것입니다 문자 수있는. 내 컴퓨터에서도 약 17 초가 걸렸으므로 실행할 때 인내하십시오.
교체하는 바이 f=
로 행
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]];
최적의 20 자 이내의 모든 접미사를 얻을 수 있습니다. 합니다 (변경 20
.이 주를 조정 뭔가 다른 말 :이 기능은 아마 단지 파이어 폭스에서 작동합니다.) 당신은 (100) 아래에있는 모든 접미사의 목록을 찾을 수 있습니다 여기를 .
어쨌든 거기서부터는 가장 긴 접미사를 가진 알파벳의 각 문자에 대한 단어를 찾는 작업입니다 ozinesses
. 필자는 Japt 스크립트 를 작성 하여 필요한 접두사를 압축하고 결과 프로그램의 길이를 알려줍니다. (단, 인용 부호 사이에 단어 목록을 수동으로 붙여 넣어야합니다.)
이 설명은 다소 혼란 스러울 수 있으므로 궁금한 점이 있으면 언제든지 문의하십시오.