AZ ใน 10 ของคุณเห็นไหม


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นี้เป็นนกชนิดหนึ่งนี้เป็นkalanchoeนี้เป็นทากทะเลและwentletrap


กฎระเบียบ

  • ไม่ต้องอ่านจากที่เก็บโดยตรงหรือช่องโหว่อื่น ๆ
  • คุณสามารถเลือกใด ๆ 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
จำเป็นต้องแยกเอาต์พุตด้วยการขึ้นบรรทัดใหม่หรือเอาต์พุตสามารถเป็นอาร์เรย์ / คั่นด้วยตัวคั่นอื่นได้หรือไม่?
เฮอร์แมนแอล

ฉันผิดหวังที่ nudibranch ไม่ใช่ธนาคารในอาณานิคมชีเปลือย
Draco18 ไม่ไว้วางใจ SE

5
กฎรวม 'q' แต่ตัวอย่างไม่
trichoplax

Aardwolves น่ารักน่าเอ็นดู
MikeTheLiar

คำตอบ:


6

Bubblegum , 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 โปรแกรมเลือกคำทั้งหมดโดยอัตโนมัติจากพจนานุกรมทั้งหมดจึงไม่มีหายไปมีส่วนเกี่ยวข้อง แต่ฉันคิดว่ามันชอบuneasinessสำหรับการบีบอัดอย่างดีด้วยและeasinesses queasinessมันสอดคล้องกันมากกับตัวเลือกเหล่านั้น
Anders Kaseorg

5

JavaScript (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

ลองออนไลน์!(ใช้เวลาประมาณ 22 วินาทีใน TIO)

ขาออก:

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

Python 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

บันทึกแล้ว 36 ไบต์ขอบคุณโจนาธานอัลลันที่ทำงานหนักที่สุดในเรื่องนี้ (ฉันเพิ่งพบคำ: P)

ลองออนไลน์!


การเปลี่ยนแปลงบางอย่างที่นี่ใช้วิธีการของคุณเพื่อบันทึก 25 ไบต์ (เลื่อนไปที่ Python 2 เพื่อประหยัดอีกหนึ่งprint)
Jonathan Allan

ที่จริงยิ่งกว่านี้
Jonathan Allan

1
'ACK! Fishses! - สิ่งแรกที่ฉันเห็นเมื่อดูรหัสนี้เฮ
Magic Octopus 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.

ฉันค้นพบcozinessesโดยเริ่มต้นด้วยnessesคำตอบอื่น ๆ ที่ใช้และค้นหาจดหมายฉบับก่อนหน้าซ้ำ ๆ ซึ่งปรากฏในจดหมายจำนวนมากถึง 26 ฉบับ เนื่องจากเทคนิคโลภมักไม่เหมาะสมฉันจึงเขียนสคริปต์เพื่อค้นหาคำที่เหมาะสมที่สุด:

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ท้ายเป็นอย่างอื่นเพื่อปรับค่านี้หมายเหตุ: ฟังก์ชั่นนี้อาจใช้ได้เฉพาะใน Firefox) คุณสามารถค้นหารายการคำต่อท้ายทั้งหมดภายใต้ 100 ที่นี่ที่นี่

ozinessesอย่างไรก็ตามจากที่นั่นมันเป็นเพียงแค่งานในการหาคำสำหรับตัวอักษรที่มีคำต่อท้ายที่ยาวที่สุดในการร่วมกันกับแต่ละ ฉันเขียนสคริปต์ Japtเพื่อทำสิ่งนี้เช่นเดียวกับบีบอัดคำนำหน้าจำเป็นสำหรับฉันและบอกฉันว่าโปรแกรมที่เกิดขึ้นจะนานแค่ไหน (คุณจะต้องวางรายการคำด้วยตนเองระหว่างเครื่องหมายคำพูด)

คำอธิบายนี้อาจค่อนข้างสับสนดังนั้นโปรดอย่าลังเลที่จะถามคำถามใด ๆ ที่คุณอาจมี


2

Bubblegum , 110 106 ไบต์

hexdump:

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

Javascript (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))


ดี! นี่แปลเป็น 144 ไบต์ใน Retina
Neil

เฮ้ฉันเพิ่งสังเกตุว่ามันคล้ายกับเทคนิคในคำตอบ Japt ของฉัน - ฉันได้พิสูจน์แล้วว่า wordlist นี้ดีที่สุดสำหรับเทคนิคนี้ คุณสามารถบันทึกไบต์โดยเปลี่ยน/.+/gไป/.*/g, -ozinessesไปcozinessesและเอาคนเดียวc?
ETHproductions

@ETHproductions ที่จะเพิ่ม "ความผาสุก" ให้กับส่วนท้ายของแต่ละบรรทัดเนื่องจาก/.*/gตรงกับกลุ่ม 0 ตัวอักษรหลังจากแต่ละบรรทัด
เฮอร์แมน L

1

Python 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

ลองออนไลน์!

อย่างไร?

กำหนดค่าเริ่มต้นiเป็น97(ลำดับของอักขระa) จากนั้นวนซ้ำรายการที่เกิดขึ้นโดยsplitการใส่สตริงที่ช่องว่างที่สร้างและprintนำคำขึ้นiมา ส่วนใหญ่ของรายการที่wในรายการมีความยาวสองเหล่านี้เป็นคำที่ขึ้นต้นด้วยตัวอักษรตัวอักษรและสิ้นสุดในคือในรูปแบบ:inesses รายการความยาว 6 เป็นของแบบฟอร์ม:
chr(i)+w+'inesses'

chr(i)+w+'ies'
ซึ่งหมายความว่าการจัดรูปแบบอาจใช้เพื่อเติมอักษรตัวอักษรและเพิ่มการสิ้นสุดด้วยการ'ness'แทรกเช่น'i'+?+'es'เมื่อwสั้นเช่น:
"%c%si%ses"%(i,w,"ness"*(len(w)<3))
-% c แปลงiเป็นอักขระ; %sเม็ดมีดสองอันwและ"ness"*(len(w)<3)ส่วนหลังยาว"ness"ถ้าwสั้นหรือ""ถ้าw


ดีกว่า! นี่แปลเป็น 140 ไบต์ใน Retina
Neil

1

SOGL V0.12 , 66 ไบต์

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

ลองที่นี่!

การเรียบเรียงพจนานุกรมง่าย ๆ กับปัญหาที่ไม่มีคำที่ขึ้นต้นด้วย X อยู่ในพจนานุกรม SOGL ดังนั้นฉันจึงชดเชยด้วย xenotropic - tropic อยู่ในพจนานุกรม และฉันต้องการที่จะเพิ่มคำพูดเริ่มต้นเพราะมิฉะนั้น parser คิดว่า[เริ่มวนซ้ำ: /


0

ถ่านขนาด 84 ไบต์

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

ลองออนไลน์! ใช้ @ WordList HermanLauenstein fแต่ฉันบันทึกหนึ่งไบต์เพราะผมสามารถพลาดออก สักครั้งการแข่งขันค่อนข้างจะอยู่ในโหมด verbose ซึ่งมีขนาด 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
เหตุใดคุณจึงให้คะแนนสิ่งนี้เป็น 166 แทนที่จะเป็น 84
Conor O'Brien

@ ConorO'Brien ฉันแค่คิดว่ามันน่าขบขันที่ฉันยังคงผูก Python
Neil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.