AZ trong 10 giây, bạn thấy sao?


15

Theo dõi thử thách trước đây của tôi Đếm đến 20 với Words! , một lần nữa chúng ta sẽ sử dụng danh sách từ từ thử thách đó để thực hiện một nhiệm vụ khác. Lần này, bạn sẽ được sử dụng độc quyền:

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

Để chọn 26 từ khác nhau, mỗi từ bắt đầu bằng một chữ cái duy nhất và xuất chúng theo thứ tự tăng dần từ A đến Z. Đây là một ví dụ hợp lệ:

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

Đây là một một giống động vật thuộc loại ăn thịt , đây là một chim tước mỏ lớn , đây là một Kalanchoe , đây là một hải sâm và một wentletrap .


Quy tắc

  • Không đọc trực tiếp từ kho lưu trữ, hoặc bất kỳ sơ hở nào khác.
  • Bạn có thể chọn bất kỳ 26 từ nào được cung cấp trong liên kết .
    • Bạn chọn từ và đây là những từ mà chương trình của bạn sẽ xuất ra mỗi lần.
  • Một từ bắt đầu với mỗi chữ cái sau phải được chọn:
    • [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]
  • Đây là , byte thấp nhất.

Bất kỳ đề xuất khác cho spin-off sử dụng danh sách từ?

Ngoài ra, hãy thoải mái ăn cắp danh sách từ của tôi và thực hiện thử thách.


1
này, chỉ là một cú đánh nhỏ, "liên kết thử thách trước" liên kết đến một câu trả lời, chứ không phải với thử thách
Rod

1
Là đầu ra cần phải được phân tách bằng dòng mới, hoặc đầu ra có thể là một mảng / tách với một dấu phân cách khác?
Herman L

Tôi thất vọng vì một người khỏa thân không phải là một ngân hàng trong thuộc địa khỏa thân.
Draco18 không còn tin tưởng SE

5
Các quy tắc bao gồm 'q' nhưng ví dụ thì không.
trichoplax

Aardwolves rất đáng yêu.
MikeTheLiar

Câu trả lời:


6

Bong bóng , 100 99 byte

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                                  ...

Hãy thử trực tuyến!

Đầu ra:

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

Các từ một lần nữa được chọn với mô phỏng ủ:

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

uglinesseslà một khả năng cho chữ U mà bạn đã bỏ lỡ, nhưng điều này không giúp được gì nhiều, vì bạn vẫn còn Q, X và Y để giải quyết. Không có gì đến với tâm trí cho những người.
Cody Grey

@CodyGray Chương trình đã chọn tất cả các từ tự động trong toàn bộ từ điển, vì vậy không có thiếu sót nào, nhưng tôi nghĩ nó thích uneasinessnén tốt với easinessesqueasiness. Nó rất nhất quán về những lựa chọn đó.
Anders Kaseorg

5

JavaScript (ES6), 168 byte

Đối với mỗi chữ cái bắt đầu, xuất ra từ đầu tiên kết thúc bằng chữ hoặc từ có sẵn đầu tiên.

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

Bản giới thiệu


4

Thạch , 69 byte

Đây là cách tiếp cận ngây thơ, nó có thể được ứng biến bởi một số dấu hiệu thông minh

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

Hãy thử trực tuyến!

(Giả sử rằng "Dấu phân cách hợp lệ là các ký tự không theo thứ tự chữ cái có thể in ASCII (số chẵn, không quan tâm)" giữ nguyên từ thử thách trước đó)


4

Thạch , 49 byte

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

Hãy thử trực tuyến! (Mất khoảng 22 giây trên TIO)

Đầu ra:

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

Làm thế nào nó hoạt động

“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 byte

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

Lưu được 36 byte nhờ Jonathan Allan, người đã làm hầu hết công việc khó khăn cho việc này (tôi chỉ tìm thấy các từ: P)

Hãy thử trực tuyến!


Một số thay đổi ở đây bằng cách sử dụng phương pháp của bạn để tiết kiệm 25 byte. (chuyển sang Python 2 để lưu thêm một lần nữa print)
Jonathan Allan

Thực tế thậm chí còn nhiều hơn ở đây
Jonathan Allan

1
'ACK! Cá! ' - Điều đầu tiên tôi thấy khi nhìn vào mã này heh.
Bạch tuộc ma thuật Urn

3

Japt , 169 107 byte

`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

Hãy thử trực tuyến!

Tôi đã viết một chương trình giúp tôi tối ưu hóa việc nén. Nó sắp xếp một danh sách theo kích thước nén shoco của nó .


1
Wow, chương trình tối ưu hóa đó thực sự rất tuyệt. Bạn đã quên thay thế inessesbằng 1khi tính toán độ dài nén;)liminesses
ETHproductions 28/07/17

3

Japt , 85 byte

97
`...`£`...`hXiU°d}R

trong đó hai cặp backticks đại diện cho chuỗi các ký tự dường như có thể in và không thể in được. Hãy thử trực tuyến! Đầu ra:

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

Giải trình

Kỹ thuật cơ bản là:

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.

Tôi tìm thấy cozinessesbằng cách bắt đầu với nessesmột số câu trả lời khác đã được sử dụng và liên tục tìm thấy chữ cái trước đó xuất hiện trong số hầu hết 26 chữ cái. Vì các kỹ thuật tham lam thường không tối ưu, nên sau đó tôi đã viết một kịch bản để tìm từ tối ưu thực sự:

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");

(Tôi không quan tâm rằng nó cực kỳ xấu xí. Đây là cách PPCG đã dạy tôi viết mã: P Đừng lo lắng, tôi không làm điều này trong sản xuất.)

Dù sao, khi chạy trong bảng điều khiển trình duyệt trong danh sách từ 10 chữ cái , kết quả này xuất ra

[ "ozinesses", 57 ]

Các 57là số chữ cái sẽ phải xuất hiện trong chuỗi multiline. Nó cũng mất khoảng 17 giây trên máy tính của tôi, vì vậy hãy kiên nhẫn khi bạn chạy nó.

Bằng cách thay thế f=dòng bằng

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]];

bạn có thể nhận được tất cả các hậu tố trong vòng 20 ký tự tối ưu. (Thay đổi 20ở cuối thành một thứ khác để điều chỉnh điều này. Lưu ý: chức năng này có thể chỉ hoạt động trong Firefox.) Bạn có thể tìm thấy danh sách tất cả các hậu tố dưới 100 tại đây .

Dù sao, từ đó trở đi chỉ là nhiệm vụ tìm từ cho mỗi chữ cái trong bảng chữ cái có hậu tố dài nhất chung ozinesses. Tôi đã viết một kịch bản Japt để làm điều này, cũng như nén các tiền tố cần thiết cho tôi và cho tôi biết chương trình kết quả sẽ kéo dài bao lâu. (Tuy nhiên, bạn sẽ phải dán danh sách từ giữa các dấu ngoặc kép.)

Lời giải thích này có lẽ hơi khó hiểu, vì vậy xin vui lòng hỏi bất kỳ câu hỏi nào bạn có thể có.


2

Bong bóng , 110 106 byte

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..

Hãy thử trực tuyến!

Bản in:

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 byte

_=>`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))


Đẹp! Điều này chuyển thành 144 byte trong Retina.
Neil

Heh, tôi chỉ nhận thấy điều này rất giống với kỹ thuật trong câu trả lời Japt của tôi - tôi thậm chí đã chứng minh danh sách từ này tối ưu cho kỹ thuật này. Bạn có thể lưu một byte bằng cách thay đổi /.+/gthành /.*/g, -ozinessessang cozinessesvà loại bỏ đơn độc ckhông?
Sản phẩm ETH

@ETHproductions sẽ thêm "cozinesses" vào cuối mỗi dòng, vì /.*/gkhớp với một nhóm 0 ký tự sau mỗi dòng.
Herman L

1

Python 2 ,  168  166 byte

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

Hãy thử trực tuyến!

Làm sao?

Initialises iđến 97(các thứ tự của nhân vật a) sau đó vòng qua một danh sách được hình thành bởi splitting một chuỗi tại không gian hình thành và printing các từ, incrementing inhư nó đi. Hầu hết các mục, wtrong danh sách có độ dài hai, đây là những từ bắt đầu bằng chữ cái và kết thúc bằng inesses, tức là có dạng :
chr(i)+w+'inesses'.
Các mục có độ dài 6 có dạng:
chr(i)+w+'ies'
Điều này có nghĩa là định dạng có thể được sử dụng để thêm vào chữ cái và thêm một kết thúc bằng cách 'ness'chèn'i'+?+'es' khi wngắn như vậy:
"%c%si%ses"%(i,w,"ness"*(len(w)<3))
-% c chuyển đổi ithành ký tự; hai %schèn w"ness"*(len(w)<3), trong đó cái sau là nếu dài."ness" nếu wngắn hoặc""w


Thậm chí đẹp hơn! Điều này chuyển thành 140 byte trong Retina.
Neil

1

SOGL V0.12 , 66 byte

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

Hãy thử nó ở đây!

Một tính toán từ điển đơn giản với vấn đề không có từ nào bắt đầu bằng X trong từ điển SOGL, vì vậy tôi đã bù bằng xenotropic - nhiệt đới có trong từ điển. Và tôi cần thêm trích dẫn bắt đầu vì nếu không, trình phân tích cú pháp nghĩ rằng đã [bắt đầu một vòng lặp: /


0

Than , 84 byte

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

Hãy thử trực tuyến! Sử dụng danh sách từ của @ HermanLauenstein, nhưng tôi đã lưu một byte vì tôi có thể bỏ lỡ f. Đối với một lần, phần nào cạnh tranh ngay cả trong chế độ dài dòng, chỉ có 166 byte. Hãy thử trực tuyến!

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
Tại sao bạn lại đạt điểm này là 166 thay vì 84?
Conor O'Brien

@ ConorO'Brien Tôi chỉ nghĩ rằng thật thú vị khi tôi vẫn đang trói buộc với Python.
Neil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.