10의 AZ, 알지?


15

나의 이전 도전에 대한 후속 으로 단어와 함께 20까지 센다! , 우리는 또 다른 과제를 수행하기 위해 그 도전에서 단어 목록을 다시 사용할 것입니다. 이번에는 독점적으로 다음을 사용하게됩니다.

https://github.com/Magic Octopus Urn / wordListsByLength / blob / master / 10.txt

각각 고유 한 문자로 시작하여 26 개의 다른 단어를 선택하고 A에서 Z까지 오름차순으로 출력합니다. 유효한 예는 다음과 같습니다.

aardwolves
babbitting
caravaning
debilitate
evaporator
fantasized
geographer
hawfinches
imbecility
juvenility
kalanchoes
lamaseries
malodorous
nudibranch
oligophagy
pantywaist
quarreling
russetting
scantiness
teetotaler
undercount
voodooisms
wentletrap
xenophobic
yeomanries
zwitterion

이것은 aardwolf입니다 , 이것은 hawfinch입니다 , 이것은 kalanchoe입니다 , 이것은 nudibranch입니다goletrap 입니다.


규칙

  • 저장소 또는 다른 허점에서 직접 읽을 수 없습니다.
  • 링크에 제공된 단어 중 26 개를 선택할 수 있습니다 .
    • 단어를 선택하면 프로그램이 매번 출력해야하는 단어입니다.
  • 다음 각 문자로 시작하는 단어 하나를 선택해야합니다.
    • [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]
  • 이것은 , 가장 낮은 바이트 수의 승리입니다.

단어 목록을 사용한 스핀 오프에 대한 다른 제안 사항이 있습니까?

또한, 단어 목록을 훔쳐서 도전 해보십시오.


1
"작은 도전 과제"는 "이전 도전 링크"는 도전 자체가 아니라 답변에 연결됩니다
Rod

1
출력을 줄 바꾸기로 분리해야합니까, 아니면 출력을 다른 구분 기호로 배열 / 분리 할 수 ​​있습니까?
허먼 L

나는 nudibranch가 나체 주의자 식민지의 은행이 아니라는 것에 실망했습니다.
Draco18s는 더 이상

5
규칙에는 'q'가 포함되지만 예제에는 포함되지 않습니다.
trichoplax

Aardwolves는 사랑 스럽습니다.
MikeTheLiar

답변:


6

풍선 껌 , 100 99 바이트

00000000: 45ce 4502 0420 0800 c0bb bfb4 3bc1 adcf  E.E.. ......;...
00000010: 6f23 b7a1 910b 63b3 0016 84da 40d4 fd41  o#....c.....@..A
00000020: 344c 2b81 e824 e09f 9e19 e4e9 8d3a 1353  4L+..$.......:.S
00000030: 3f7c c3fc 59b8 b732 5b07 62e7 c383 4fcc  ?|..Y..2[.b...O.
00000040: 4d5f 88c5 bd60 6f44 8c8d b87d 215e 78c3  M_...`oD...}!^x.
00000050: 359e ec4d 360c bd4a 94e2 6e25 e06f ef43  5..M6..J..n%.o.C
00000060: d286 17                                  ...

온라인으로 사용해보십시오!

산출:

artinesses
businesses
cozinesses
dozinesses
easinesses
fastnesses
gastnesses
hazinesses
ickinesses
jokinesses
kindnesses
lazinesses
mazinesses
nosinesses
oozinesses
pastnesses
queasiness
rosinesses
sexinesses
tininesses
uglinesses
vastnesses
wilinesses
xanthomata
yeastiness
zaninesses

시뮬레이션 어닐링으로 단어를 다시 선택했습니다.

from __future__ import print_function
import math
import random
import zopfli.zlib

wordlists = [[] for n in range(26)]
for word in open('wordListsByLength/10.txt', 'rb').read().splitlines():
    wordlists[ord(word[:1]) - ord('a')].append(word)

words = [random.choice(wordlist) for wordlist in wordlists]

temperature = 1.
score = 9999
best = score

while True:
    old_score = score
    n = random.randrange(len(wordlists))
    old_word = words[n]
    words[n] = random.choice(wordlists[n])
    score = len(zopfli.zlib.compress(b'\n'.join(words)) - 6
    if score > old_score and random.random() >= math.exp((old_score - score) / temperature):
        words[n] = old_word
        score = old_score
    else:
        temperature *= .9999
        if score < best:
            best = score
            print(best, repr(b'\n'.join(words)))

uglinesses문자 U는 당신이보고 싶었을 가능성이 있지만 Q, X 및 Y를 처리해야하기 때문에별로 도움이되지 않습니다. 그들에게는 아무것도 생각 나지 않습니다.
코디 그레이

@CodyGray 프로그램은 전체 사전에서 모든 단어를 자동으로 선택했기 때문에 누락 된 부분이 없었지만 and uneasiness로 압축 하는 것이 좋습니다. 이러한 선택에 대해 매우 일관됩니다. easinessesqueasiness
Anders Kaseorg

5

자바 스크립트 (ES6), 168 바이트

각 시작 문자에 대해 -inesses로 끝나는 첫 번째 단어 또는 사용 가능한 첫 번째 단어를 출력합니다 .

_=>`ash0bus0coz0doz0eer0foz0gor0hom0ink0jok0kaiserdoms
log0mir0nos0ooz0pun0quackeries
ros0siz0tin0ugl0vacantness
wir0xanthomata
yardmaster
zan0`.split`0`.join`inesses
`

데모


4

젤리 , 69 바이트

이것은 영리한 진드기로 개선 할 수없는 순진한 접근법입니다.

“6)ọʋtL⁺%ḍʠ9ƲȮṆ'ṫZpɲṇḃb7ṗ³ðʠ©q€©[ẠṾṠɠ+ȯ!?^_iṘ©ð⁴ạ'8œÐṣTP³ḃXŻDƭƇM⁽H>Ỵ»

온라인으로 사용해보십시오!

( '유효한 구분 기호는 ASCII로 인쇄 할 수있는 비 알파벳 문자 (숫자, 상관 없음)'가 이전 과제에서 유지되었다고 가정)


4

젤리 , 49 바이트

“J9,⁹FṾ»ŒVŒlµL=⁵µÐf
¢Ḣ€OIT+“¢&ĠUṗɓṃ€~ƙṂ’D¤;@0‘ị¢Y

온라인으로 사용해보십시오! (TIO에서 약 22 초 소요)

출력 :

aardwolves
babbitting
cabalettas
daftnesses
earlywoods
fabricants
gadgetries
habiliment
iatrogenic
jaborandis
kaiserdoms
labialized
macadamize
naboberies
oafishness
pacemaking
quackeries
rabbinical
sabadillas
tabernacle
ubiquinone
vacantness
wadsetting
xanthomata
yardmaster
zabaglione

작동 원리

“J9,⁹FṾ»ŒVŒlµL=⁵µÐf           - all length 10 Jelly dictionary words
“J9,⁹FṾ»                        - literal string "dictionary.long"
        ŒV                      - Python eval: get list of long words
          Œl                    - set all to lowercase 
            µ   µÐf             - filter keep only those which meet:
             L                  - length
              =                 - equal to
               ⁵                - 10

¢Ḣ€OIT+“¢&ĠUṗɓṃ€~ƙṂ’D¤;@0‘ị¢Y - main link
¢                               - length 10 Jelly dictionary words from helper
 Ḣ€                             - first letter of each.
   O                            - ord: character values
    I                           - difference between consecutive elements
     T                          - indices of nonzero elements
                            (gets indices of first word starting with each letter)
      +                         - add
       “¢&ĠUṗɓṃ€~ƙṂ’D¤          - the list [2,0,5,9,1,3,3,1,1,6,1,2,0,0,0,0,2,1,1,1,0,3,1,8,0]
                      ;@0       - append 0 to beginning (golfable?)
                         ‘      - increment each element
                          ị¢    - index into the above length 10 words
                            Y   - join by newlines

3

파이썬 (2) , 256 (231) 220 바이트

i=97
for w in"uto ibli aco emo ntom utur laci olo deo ackfishes ymo exic alac omo cean alyn uaternion eno eri omo rban eno avelessly ero outhfully witterion".split():print chr(i)+(w+["graphy","ology"][w[3:]>''])[:9];i+=1

열심히 노력한 Jonathan Allan 덕분에 36 바이트를 절약했습니다 (단지 : P라는 단어를 찾았습니다).

온라인으로 사용해보십시오!


25 바이트를 절약하는 접근 방식을 사용하여 여기에서 일부 변경 사항 (으로 하나 더 저장하려면 Python 2로 이동 print)
Jonathan Allan

실제로 여기
Jonathan Allan

1
'ACK! 물고기들! ' -이 코드를 볼 때 가장 먼저 봤습니다.
매직 문어 Urn

3

JAPT , 169 107 바이트

`a®
¾n
¯g
¸w
e
fox
g
z

jo
ê]
¦m
µt
nos
oil
po
qua×@i
c
 x
d
ugl
void
°r
xopb
yeÇ
z`·£`ê£`hX

온라인으로 사용해보십시오!

내가 프로그램을 쓴 나 압축을 최적화하는 데 도움이됩니다. Shoco 압축 크기 별로 목록을 정렬합니다 .


1
와우, 그 최적화 프로그램은 정말 멋지다. 압축 길이를 계산할 때 대체 inesses하는 것을 잊었습니다 1.;)liminesses
ETHproductions

3

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 스크립트 를 작성 하여 필요한 접두사를 압축하고 결과 프로그램의 길이를 알려줍니다. (단, 인용 부호 사이에 단어 목록을 수동으로 붙여 넣어야합니다.)

이 설명은 다소 혼란 스러울 수 있으므로 궁금한 점이 있으면 언제든지 문의하십시오.


2

풍선 껌 , 110 106 바이트

16 진 덤프 :

0000000: 45cc 4116 8240 0c83 e1bd b72c 50a1 0ed3  E.A..@.....,P...
0000010: 2015 454e 2fcf 4727 bb6f 91fc 1293 b946   .EN/.G'.o.....F
0000020: 68dc 3aec c91e 4772 2055 2279 e776 94aa  h.:...Gr U"y.v..
0000030: 1727 695b f392 7ca0 b1b8 f445 573b 39f3  .'i[..|....EW;9.
0000040: 5679 7344 1236 2717 169e 5b2b acdc 0663  VysD.6'...[+...c
0000050: 2f72 1b5b e10d 1b2e 7ed8 ddd5 b14c e84e  /r.[....~....L.N
0000060: 7e15 55fc df3d c473 f003                 ~.U..=.s..

온라인으로 사용해보십시오!

인쇄물:

ashinesses
boxinesses
cozinesses
dozinesses
easinesses
foxinesses
gamenesses
hazinesses
inkinesses
jokinesses
knackeries
lamenesses
mazinesses
nosinesses
oilinesses
pokinesses
quackeries
rosinesses
samenesses
tamenesses
uglinesses
voidnesses
wilinesses
xenophobes
yeomanries
zaninesses

2

자바 스크립트 (ES6), 163 바이트

_=>`ach
bon
c
d
eas
f
gam
ha
ick
jok
keen
la
ma
nos
o
pip
quackeri
rac
si
tid
ugl
vain
war
xenogami
yeomanri
zan`.replace(/.+/g,s=>s+"-ozinesses".substr(s.length))


좋은! 이것은 Retina에서 144 바이트로 변환됩니다.
Neil

허, 나는 이것이 내 Japt 답변의 기술과 엄청나게 비슷하다는 것을 알았습니다. 심지어이 기술에 가장 적합한 단어 목록을 입증했습니다. 변경하여 바이트 저장 할 수 있습니다 /.+/g/.*/g, -ozinessescozinesses, 그리고 고독한를 제거 c?
ETHproductions

각 줄의 끝에 /.*/g0 문자 그룹과 일치하기 때문에 각 줄의 끝에 "cozinesses"를 추가하는 @ETHproductions .
허먼 L

1

파이썬 (2) ,  168  (166) 바이트

i=97
for w in"ch on ag ew as ox am az ck ok azatsk ac at os il ip uacker ac ex id gl agilit ar enogam eomanr an".split():print"%c%si%ses"%(i,w,"ness"*(len(w)<3));i+=1

온라인으로 사용해보십시오!

어떻게?

처음 상태 i97(문자의 서수 a)를 형성리스트를 루프 split형성 공간에서 팅 문자열 print증가 단어를 보내고 i그것 간다. w목록에있는 대부분의 항목 은 길이가 2 자이며 알파벳 문자로 시작하고로 끝나는 단어입니다 ( inesses예 :)
chr(i)+w+'inesses'.
길이가 6 인 항목의 형식은 다음과 같습니다.
chr(i)+w+'ies'
즉, 서식을 사용하여 알파벳 문자를 앞에 붙이고 다음과 'ness'같이 짧은 'i'+?+'es'경우 삽입 된 끝을 추가 할 수 있습니다 .-% c는 문자 로 변환 됩니다. 두 경우 는 길다.w
"%c%si%ses"%(i,w,"ness"*(len(w)<3))
i%s 삽입 w하고 "ness"*(len(w)<3), 후자는, "ness"만약이 w짧거나""w


더 좋은! 이것은 Retina에서 140 바이트로 변환됩니다.
Neil

1

SOGL V0.12 , 66 바이트

"⅟μ█X§¡Ψ}|μ⁾k,²9γ↑č─[╝B4mh|c↑′ρ╤τnE╗Ζ±$ņ¦Pγ9¬oΘ′`║F→█#▲xpņRe└ωηηƨ‘

여기 사용해보십시오!

X로 시작하는 단어가 SOGLs 사전에 없다는 문제로 간단한 사전 구성이 가능하므로 xenotropic로 보상했습니다.-tropic는 사전에있었습니다. 파서 [가 루프 를 시작 했다고 생각했기 때문에 시작 인용을 추가해야 했습니다.


0

, 84 바이트

UOχ²⁶”m⌈⎚∧³δ¤↶””|↖⧴=P“⪪šl¢‘υKBSAD ⁶⁸ςz↧\–~⎇V▷–ê"℅ ž⟲‹‹⮌0Bff5Y⪪E?Þ¹@)⟦£δT⪪⌕↙]\RZ_Q‹″”

온라인으로 사용해보십시오! @HermanLauenstein의 단어 목록을 사용하지만을 놓칠 수 있기 때문에 1 바이트를 저장했습니다 f. 한 번만, 상세 모드에서도 166 바이트에 불과한 다소 경쟁력이 있습니다. 온라인으로 사용해보십시오!

Oblong(c 26 "fozinesses")Print("ach\nbon\nc\nd\neas\n\ngam\nha\nick\njok\nkeen\nla\nma\nnos\no\npip\nquackeri\nrac\nsi\ntid\nugl\nvain\nwar\nxenogami\nyeomanri\nzan")

2
84 점 대신 166 점으로 왜이 점을 평가 했습니까?
코너 오브라이언

@ ConorO'Brien 방금 파이썬과 관련이 있다고 생각합니다.
Neil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.