AZ in 10er Jahren, sehen Sie?

15

Als Folge meiner vorherigen Herausforderung Zähle bis 20 mit Worten! Wir werden die Wortliste dieser Herausforderung wieder verwenden, um eine andere Aufgabe auszuführen. Dieses Mal verwenden Sie ausschließlich:

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

Sie können 26 verschiedene Wörter auswählen, die mit einem eindeutigen Buchstaben beginnen, und diese in aufsteigender Reihenfolge von A bis Z ausgeben. Ein gültiges Beispiel:

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

Das ist ein Erdwolf , das ist ein Kernbeißer , das ist eine Kalanchoe , das ist eine Nacktschnecke und eine Gingelfalle .


Regeln

  • Kein Lesen direkt aus dem Repository oder anderen Lücken.
  • Sie können 26 der im Link angegebenen Wörter auswählen .
    • Sie wählen Wörter und dies sind die Wörter, die Ihr Programm jedes Mal ausgeben soll.
  • Es muss ein Wort ausgewählt werden, das mit jedem der folgenden Buchstaben beginnt:
    • [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]
  • Dies ist , die niedrigste Anzahl an Bytes gewinnt.

Irgendwelche anderen Vorschläge für Ausgründungen anhand der Wortlisten?

Du kannst auch gerne meine Wortlisten stehlen und Herausforderungen stellen.

Magische Kraken-Urne
quelle
1
Hey, nur ein kleiner Trottel, der Link "Vorherige Herausforderung" verweist auf eine Antwort, nicht auf die Herausforderung selbst
Rod
1
Muss die Ausgabe durch Zeilenumbrüche getrennt werden, oder kann die Ausgabe ein Array sein / durch ein anderes Trennzeichen getrennt werden?
Herman L
Ich bin enttäuscht, dass eine FKK-Branche keine Bank in einer FKK-Kolonie ist.
Draco18s
5
Die Regeln enthalten 'q', das Beispiel jedoch nicht.
Trichoplax
Erdwölfe sind verdammt entzückend.
MikeTheLiar

Antworten:

6

Bubblegum , 100 bis 99 Bytes

00000000: 45ce 4502 0420 0800 c0bb bfb4 3bc1 adcf  E.E.. ......;...
00000010: 6f23 b7a1 910b 63b3 0016 84da 40d4 fd41  o#[email protected]
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                                  ...

Probieren Sie es online!

Ausgabe:

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

Die Wörter wurden erneut mit simuliertem Tempern ausgewählt:

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)))
Anders Kaseorg
quelle
uglinessesist eine Möglichkeit für den Buchstaben U, den Sie verpasst haben, aber das hilft nicht viel, da Sie immer noch Q, X und Y haben, um sich damit zu befassen. Ihnen fällt nichts ein.
Cody Grey
@CodyGray Das Programm wählte alle Wörter automatisch aus dem gesamten Wörterbuch aus, so dass keine fehlenden beteiligt waren, aber ich denke, es gefällt uneasinesszum Komprimieren gut mit easinessesund queasiness. Es ist sehr konsequent über diese Entscheidungen.
Anders Kaseorg
5

JavaScript (ES6), 168 Byte

Gibt für jeden Anfangsbuchstaben entweder das erste Wort aus, das mit -inesses endet, oder das erste verfügbare Wort.

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

Demo

Arnauld
quelle
4

Jelly , 69 Bytes

Dies ist der naive Ansatz, den einige clevere Zecken vielleicht verbessern können

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

Probieren Sie es online!

(Angenommen, "Gültige Trennzeichen sind ASCII-druckbare nicht-alphabetische Zeichen (gerade Zahlen, egal)" aus der vorherigen Herausforderung)

Jonathan Allan
quelle
4

Gelee , 49 Bytes

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

Probieren Sie es online! (Dauert bei TIO ungefähr 22 Sekunden.)

Ausgänge:

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

Wie es funktioniert

“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
fireflame241
quelle
3

Python 2 , 256 231 220 Bytes

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 Bytes gespart dank Jonathan Allan, der die meiste harte Arbeit dafür geleistet hat (ich habe gerade die Worte gefunden: P)

Probieren Sie es online!

Stephen
quelle
Einige Änderungen hier unter Verwendung Ihres Ansatzes, um 25 Bytes zu sparen. (Bewegen Sie sich zu Python 2, um eine weitere mit zu speichern print)
Jonathan Allan
Eigentlich noch mehr hier
Jonathan Allan
1
'ACK! Fishses! ' - Das erste, was ich gesehen habe, als ich mir diesen Code angesehen habe.
Magic Octopus Urn
3

Japt , 169 107 Bytes

`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

Probieren Sie es online!

Ich habe ein Programm geschrieben , mit dem ich die Komprimierung optimieren kann. Es sortiert eine Liste nach der Größe der Shoco- Komprimierung.

Oliver
quelle
1
Wow, das Optimierungsprogramm ist wirklich cool. Sie haben vergessen , zu ersetzen , inessesmit 1bei der Berechnung der Kompressionslänge obwohl;)liminesses
ETHproductions
3

Japt , 85 Bytes

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

Dabei stehen die beiden Backtick-Paare für Zeichenfolgen mit scheinbar zufälligen druckbaren und nicht druckbaren Zeichen. Probieren Sie es online! Ausgabe:

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

Erläuterung

Die grundlegende Technik ist:

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.

Ich habe cozinessesangefangen mit nesseseinigen anderen Antworten, die verwendet wurden, und habe wiederholt den vorherigen Buchstaben gefunden, der unter den 26 Buchstaben am häufigsten vorkam. Da gierige Techniken oft nicht optimal sind, habe ich später ein Skript geschrieben, um das wirklich optimale Wort zu finden:

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

(Es ist mir egal, dass es unglaublich hässlich ist. So hat mir PPCG das Codieren beigebracht: P Keine Sorge, ich mache das nicht in der Produktion.)

Auf jeden Fall wird dies ausgegeben, wenn es in der Browserkonsole in der 10-Buchstaben-Wortliste ausgeführt wird

[ "ozinesses", 57 ]

Das 57ist die Anzahl der Buchstaben , die in der mehrzeiligen Zeichenfolge erscheinen würden. Es dauerte auch ungefähr 17 Sekunden auf meinem Computer, seien Sie also geduldig, wenn Sie es ausführen.

Durch Ersetzen der f=Zeile mit

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

Sie können alle Suffixe innerhalb von 20 Zeichen vom optimalen abrufen. (Ändern Sie das 20am Ende in etwas anderes, um dies anzupassen. Hinweis: Diese Funktion funktioniert wahrscheinlich nur in Firefox.) Eine Liste aller Suffixe unter 100 finden Sie hier .

Von da an ist es nur noch eine Aufgabe, das Wort für jeden Buchstaben des Alphabets zu finden, mit dem das längste Suffix gemeinsam ist ozinesses. Dazu habe ich ein Japt-Skript geschrieben , die erforderlichen Präfixe komprimiert und mir mitgeteilt , wie lang das resultierende Programm sein wird. (Sie müssen die Wortliste jedoch manuell zwischen die Anführungszeichen einfügen.)

Diese Erklärung war wahrscheinlich etwas verwirrend. Sie können also jederzeit Fragen stellen.

ETHproductions
quelle
2

Bubblegum , 110 106 Bytes

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

Probieren Sie es online!

Drucke:

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
total menschlich
quelle
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))

Herman L
quelle
Nett! Dies entspricht 144 Bytes in der Retina.
Neil
Heh, ich habe gerade bemerkt, dass dies der Technik in meiner Japt-Antwort extrem ähnlich ist - ich habe diese Wortliste sogar als optimal für diese Technik erwiesen. Können Sie ein Byte speichern, indem Sie /.+/gzu /.*/g, -ozinesseszu cozinessesund den Einzelnen entfernen c?
ETHproductions
@ETHproductions, das am Ende jeder Zeile "Gemütlichkeit" hinzufügt, da /.*/gnach jeder Zeile eine Gruppe von 0 Zeichen gefunden wird.
Herman L
1

Python 2 ,  168  166 Bytes

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

Probieren Sie es online!

Wie?

Initialisiert iauf 97(die Ordnungszahl des Zeichens a) und durchläuft dann eine Liste, die durch splitTippen einer Zeichenfolge auf Leerzeichen, die printdie Wörter bilden, und Inkrementieren gebildet iwird. Die meisten Einträge, win der Liste sind mit einer Länge von zwei, das sind Worte , die mit den alphabetischen Buchstaben und Ende in beginnen inesses, dh der Form:
chr(i)+w+'inesses'.
Die Einträge der Länge 6 haben die Form:
chr(i)+w+'ies'
Dies bedeutet, dass eine Formatierung verwendet werden kann, um den alphabetischen Buchstaben voranzustellen und eine Endung mit dem 'ness'eingefügten Text einzufügen, 'i'+?+'es'wenn dies wkurz ist:
"%c%si%ses"%(i,w,"ness"*(len(w)<3))
-% c konvertiert iin ein Zeichen; der beide %sEinsatz wund "ness"*(len(w)<3), wobei letztere ist , "ness"wenn wkurz ist oder""wenn wes lang ist.

Jonathan Allan
quelle
Noch schöner! Dies entspricht 140 Bytes in der Retina.
Neil
1

SOGL V0.12 , 66 Bytes

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

Probieren Sie es hier aus!

Eine einfache Wörterbuchkompession mit dem Problem, dass kein Wort, das mit X beginnt, im SOGL-Wörterbuch war, so dass ich es mit xenotropic-tropic kompensierte, war im Wörterbuch. Und ich musste das Startzitat hinzufügen, weil der Parser sonst dachte, [das hätte eine Schleife ausgelöst: /

dzaima
quelle
0

Kohle , 84 Bytes

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

Probieren Sie es online! Verwendet @ HermanLauensteins Wortliste, aber ich habe ein Byte gespeichert, weil ich das verpassen kann f. Diesmal etwas konkurrenzfähig, auch im ausführlichen Modus, der nur 166 Bytes umfasst. Probieren Sie es online!

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")
Neil
quelle
2
Warum hast du dies mit 166 statt 84 bewertet?
Conor O'Brien
@ ConorO'Brien Ich fand es nur amüsant, dass ich mich noch mit Python verband.
Neil