10代のAZ、わかりますか?


15

私の以前の挑戦のフォローアップとして、Wordsで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

これは、アードウルフこれは、シメこれは、カランコエこれは、ウミウシwentletrap


ルール

  • リポジトリからの直接の読み取り、またはその他の抜け穴はありません。
  • リンクで提供されている 26個の単語を選択できます。
    • 単語を選択すると、これらはプログラムが毎回出力する単語です。
  • 次の各文字で始まる単語を1つ選択する必要があります。
    • [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
ちょっと、ちょっとしたひとつまみ、「以前のチャレンジリンク」は、チャレンジ自体ではなく答えにリンクしています。
ロッド

1
出力を改行で区切る必要がありますか、または出力を別の区切り文字で配列/分離できますか?
ハーマンL

私は、ウミウシがヌーディスト植民地の銀行ではないことに失望しています。
Draco18sはSEを信頼しなくなりました

5
ルールには「q」が含まれますが、例には含まれません。
-trichoplax

アードウルブスはおかしくなります。
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プログラムは、全体の辞書から自動的のでノーミスが関与しなかったすべての単語を選択しましたが、私はそれが好きだと思うuneasinessとよく圧縮するeasinessesqueasiness。それらの選択については非常に一貫しています。
アンダースカセオルグ

5

JavaScript(ES6)、168バイト

開始文字ごとに、-inessで終わる最初の単語または使用可能な最初の単語のいずれかを出力します。

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

パイソン2256の 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バイトを節約しました。

オンラインでお試しください!


ここでは、25バイトを節約するアプローチを使用していくつかの変更を加えてます。(Python 2に移動してもう1つ保存しますprint
ジョナサンアラン

実際にはさらにここに
ジョナサンアラン

1
'ACK!魚だ!」-このコードを見たときに最初に見たもの
魔法のタコUr

3

Japt169 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
うわー、その最適化プログラムは本当にクールです。あなたは交換し忘れたinesses1いえ圧縮長さを計算するとき;)liminesses
ETHproductions

3

Japt、85バイト

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

ここで、2つのバックティックのペアは、一見ランダムな印刷可能文字と印刷不可能文字のストリングを表します。オンラインでお試しください!出力:

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.

見つけた cozinessesnesses他のいくつかの回答で使用されているように、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がコーディングする方法を教えてくれた方法です。

とにかく、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

バブルガム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))


いいね!これは、Retinaで144バイトに変換されます。
ニール

ああ、私はこれが私のJapt解答のテクニックに非常に似ていることに気づきました-このテクニックに最適なこの単語リストさえも証明しました。に変更/.+/g/.*/g、1つだけ-ozinessescozinesses削除して、バイトを保存できます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から、単語を形成し、文字列をスペースで文字列化することにより形成されたリストをループします。リスト内のエントリのほとんどは、長さが2で、アルファベット文字で始まり、で終わる単語です。つまり、形式は次のとおりです。 長さ6のエントリの形式のものである: この手段フォーマットは、アルファベットを付加で終わる追加するために使用することができるように挿入されたときにそうようなショートである: - %Cは変換文字にします。2つの挿入and 、後者はif が短いか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"w""w長い場合


さらにいい!これは、Retinaで140バイトに変換されます。
ニール

1

SOGL V0.12、66バイト

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

ここで試してみてください!

Xで始まる単語がSOGLの辞書にないという問題に対応する簡単な辞書圧縮。したがって、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私はまだPythonと結びついているのは面白いと思った。
ニール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.