10'larda AZ, gördün mü?


15

Benim önceki meydan okuma bir takip olarak Kelimeler ile 20 sayın! , başka bir görevi yerine getirmek için bu meydan okumadaki kelime listesini bir kez daha kullanacağız. Bu kez, yalnızca şunları kullanacaksınız:

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

Her biri benzersiz bir harfle başlayan ve bunları A'dan Z'ye artan sırada çıkaran 26 farklı kelime seçmek için. Geçerli bir örnek:

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

Bu bir aardwolf , bu bir şahin , bu bir kalanchoe , bu bir nudibranch ve bir goletrap .


kurallar

  • Doğrudan depodan veya başka boşluklardan okuma yok.
  • Bağlantıda verilen 26 kelimeden herhangi birini seçebilirsiniz .
    • Kelimeleri seçersiniz ve bunlar programınızın her seferinde çıktı alması gereken kelimelerdir.
  • Aşağıdaki harflerin her biriyle başlayan bir kelime seçilmelidir:
    • [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]
  • Bu , en düşük bayt sayısı kazanır.

Sözcük listelerini kullanarak bölünmeler için başka önerileriniz var mı?

Ayrıca, kelime listelerimi çalmaktan ve meydan okumaktan çekinmeyin.


1
hey, sadece küçük bir nitpick, "önceki meydan okuma bağlantısı" cevabın kendisine değil bir cevaba
Rod

1
Çıktının yeni satırlarla ayrılması gerekiyor mu veya çıktı başka bir sınırlayıcıyla bir dizi / ayrılabilir mi?
Herman L

Bir nudibranch'ın çıplaklar kolonisinde bir banka olmadığını hayal kırıklığına uğrattım.
Draco18s artık SE

5
Kurallar 'q' içerir ancak örnek içermez.
trichoplax

Aardwolves çok korkutucu.
MikeTheLiar

Yanıtlar:


6

Sakız , 100 99 bayt

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

Çevrimiçi deneyin!

Çıktı:

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

Kelimeler tekrar simüle tavlama ile seçildi:

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

uglinessesU harfi için kaçırdığınız bir olasılıktır, ancak bu hala işe yaramaz, çünkü hala Q, X ve Y ile uğraşmanız gerekir. Bunlar için akla bir şey gelmez.
Cody Gray

@CodyGray Program tüm kelimeleri otomatik olarak tüm sözlükten seçti, bu yüzden kayıp yoktu, ama ve uneasinessile iyi sıkıştırmayı sevdiğini düşünüyorum . Bu seçimler konusunda çok tutarlı. easinessesqueasiness
Anders Kaseorg

5

JavaScript (ES6), 168 bayt

Her bir başlangıç harf, çıktıları ya biten birinci kelime için -inesses veya birinci mevcut kelime.

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

gösteri


4

Jöle , 69 bayt

Bu, bazı akıllı keneler ile geliştirilebilecek saf bir yaklaşımdır.

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

Çevrimiçi deneyin!

("Geçerli ayırıcıların ASCII ile yazdırılabilir alfabetik olmayan karakterler (çift sayılar, umurumda değil)" önceki zorluktan beklediğini varsayar)


4

Jöle , 49 bayt

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

Çevrimiçi deneyin! (TIO'da yaklaşık 22 saniye sürer)

Çıktılar:

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

Nasıl çalışır

“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

Piton 2 , 256 231 220 bayt

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

Bunun için sıkı çalışmanın çoğunu yapan Jonathan Allan sayesinde 36 bayt kurtardı (Sadece kelimeleri buldum: P)

Çevrimiçi deneyin!


Burada 25 bayt tasarruf yaklaşımınızı kullanarak bazı değişiklikler . (ile bir tane daha kaydetmek için Python 2'ye geçin print)
Jonathan Allan

Aslında daha da burada
Jonathan Allan

1
'ACK! Fishses!' - Bu koda bakarken ilk gördüğüm şey heh.
Sihirli Ahtapot Urn

3

Japt , 169 107 bayt

`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

Çevrimiçi deneyin!

Ben bir program yazdım beni sıkıştırmayı optimize edilmesine yardımcı olur. Bir listeyi shoco sıkıştırma boyutuna göre sıralar .


1
Vay canına, bu optimizasyon programı gerçekten harika. Sen yerine unuttum inessesile 1olsa sıkıştırma uzunluğu hesaplanırken;)liminesses
ETHproductions

3

Japt , 85 bayt

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

burada iki çift iğne, görünüşte rastgele yazdırılabilir ve yazdırılamaz karakterlerin dizelerini temsil eder. Çevrimiçi deneyin! Çıktı:

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

açıklama

Temel teknik:

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.

Buldum cozinessesbaşlayarak nessesdiğer bazı cevaplar kullanmış olduğu ve defalarca 26 harften en arasına göründüğü önceki harfi bulma. Açgözlü teknikler genellikle optimal olmadığından, daha sonra gerçek optimal kelimeyi bulmak için bir senaryo yazdım:

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

(İnanılmaz derecede çirkin olması umrumda değil. PPCG bana kodlamayı öğretti: P Merak etme, bunu üretimde yapmıyorum.)

Her neyse, 10 harfli kelime listesindeki tarayıcı konsolunda çalıştırıldığında , bu çıktı

[ "ozinesses", 57 ]

Çok 57satırlı dizede görünmesi gereken harf sayısıdır. Bilgisayarımda da yaklaşık 17 saniye sürdü, bu yüzden çalıştırdığınızda sabırlı olun.

f=Hattı değiştirerek

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

tüm sonekleri en uygun olanın 20 karakterleri içinde alabilirsiniz. ( 20Sonunda, bunu ayarlamak için başka bir şeyle değiştirin. Not: bu işlev muhtemelen yalnızca Firefox'ta çalışır.) 100 altındaki tüm soneklerin bir listesini burada bulabilirsiniz .

Her neyse, oradan sadece en uzun eki olan alfabenin her harfi için kelimeyi bulmak bir görevdir ozinesses. Bunu yapmak için bir Japt betiği yazdım , benim için gerekli önekleri sıkıştırdım ve ortaya çıkan programın ne kadar süreceğini söyledim. (Sözcük listesini tırnak işaretleri arasına elle yapıştırmanız gerekir.)

Bu açıklama muhtemelen biraz kafa karıştırıcıydı, bu nedenle lütfen sorularınızı sormaktan çekinmeyin.


2

Sakız , 110 106 bayt

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

Çevrimiçi deneyin!

Baskılar:

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 bayt

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


Güzel! Bu, Retina'da 144 bayta çevrilir.
Neil

Heh, bunun Japt cevabımdaki tekniğe tamamen benzediğini fark ettim - bu kelime listesinin bu teknik için en uygun olduğunu bile kanıtladım. Değiştirerek byte tasarruf Eğer Can /.+/giçin /.*/g, -ozinessesiçin cozinesses, ve yalnız çıkarmadan c?
ETHproductions

@EHHer satırdan /.*/gsonra 0 karakterlik bir grupla eşleştiğinden , her satırın sonuna "cozinesses" ekleyecek resimler .
Herman L

1

Python 2 ,  168  166 bayt

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

Çevrimiçi deneyin!

Nasıl?

(Karakterin sıralaması ) ' nı başlatır i, sonra sözcükleri oluşturan ve girerek boşlukları bir dizgiye sokarak ve gittikçe artarak oluşturulan bir liste boyunca dolaşır . Girişlerin çoğu, listede bu alfabetik harfi ve sonu ile başlamak kelimelerdir, uzunluk iki vardır formunun, yani: . Uzunluğu 6 girişleri biçimdedir: bir biçimlendirme alfabetik harfi öne eklemek ve bir bitiş eklemek için kullanılabilir Bu araçlar gibi eklenen zaman şöyle kısa: -% C dönüştürür karaktere; iki insert ve eğer ikincisi uzunsa.97asplitprintiwinesses
chr(i)+w+'inesses'

chr(i)+w+'ies'
'ness''i'+?+'es'w
"%c%si%ses"%(i,w,"ness"*(len(w)<3))
i%sw"ness"*(len(w)<3)"ness" varsa wkısa ya da""w


Daha da güzel! Bu Retina'da 140 bayta çevrilir.
Neil

1

SOGL V0.12 , 66 bayt

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

Buradan Deneyin!

X ile başlayan hiçbir kelimenin SOGLs sözlüğünde olmadığı sorunu olan basit bir sözlük yarışması, bu yüzden xenotropic - tropic ile telafi ettim sözlükte. Ve başlangıç ​​teklif eklemek gerekiyordu çünkü aksi takdirde ayrıştırıcı [bir döngü başladı düşündüm : /


0

Kömür , 84 bayt

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

Çevrimiçi deneyin! @ HermanLauenstein'ın kelime listesini kullanır, ancak bir bayt kurtardım çünkü özleyebileceğim f. Bir kez, sadece 166 bayt olan ayrıntılı modda bile biraz rekabetçi. Çevrimiçi deneyin!

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
Bunu neden 84 yerine 166 olarak puanladınız?
Conor O'Brien

@ ConorO'Brien Ben sadece hala Python ile bağlı olduğunu eğlenceli olduğunu düşündüm.
Neil
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.