AZ в 10-х, бачите?


15

Як підсумок моєму попередньому виклику, рахуйте до 20 зі словами! , ми знову будемо використовувати список слів із цього завдання для виконання іншого завдання. Цього разу ви будете використовувати виключно:

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

Щоб вибрати 26 різних слів, кожне починаючи з унікальної літери, і виводити їх у порядку зростання від А до Я. Ось дійсний приклад:

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

Це Протел , це дубоніс , це каланхое , це голожаберних і епітони .


Правила

  • Немає читання безпосередньо з сховища або будь-яких інших лазів.
  • Ви можете вибрати будь-яке з 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
ей, лише маленький гвоздик, "попереднє посилання на виклик" посилається на відповідь, а не на сам виклик
стрижень

1
Потрібно, щоб вихід був відокремлений новими рядками, або виведення може бути масивом / розділеним іншим роздільником?
Герман Л

Я розчарований, що пропозиціонінг - це не банк у нудистській колонії.
Draco18s більше не довіряє SE

5
Правила містять "q", але приклад цього не робить.
трихоплакс

Ардвулфи вигадливі чарівні.
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 байт

Для кожної початкової літери виводиться або перше слово, що закінчується на « бізнес», або перше доступне слово.

_=>`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)
Джонатан Аллан

Насправді навіть більше тут
Джонатан Аллан

1
'ACK! Рибки! ' - Перше, що я побачив, дивлячись на цей код-хе.
Чарівна восьминога урна

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 ]

The 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 байти в сітці.
Ніл

Хе, я щойно помітив, що це дуже схоже на техніку у моїй відповіді Japt - я навіть довів цей список слів оптимальним для цієї техніки. Чи можете ви зберегти байт, перейшовши /.+/gна /.*/g, -ozinessesдо cozinessesта вилучивши одинокий c?
ETHproductions

@ETHproductions, які додавали б "cozusiness" в кінці кожного рядка, оскільки /.*/gвідповідають групі з 0 символів після кожного рядка.
Герман Л

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, тобто у вигляді:
chr(i)+w+'inesses'.
Записи довжиною 6 мають вигляд:
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 байт.
Ніл

1

SOGL V0.12 , 66 байт

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

Спробуйте тут!

Просте змагання зі словника з проблемою, що жодного слова, яке починається з X, у словнику SOGL не було, тому я компенсував ксенотроп - тропік був у словнику. І мені потрібно було додати початкову цитату, бо в іншому випадку аналізатор подумав це[ почав цикл: /


0

Деревне вугілля , 84 байти

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

Спробуйте в Інтернеті! Використовує список слів @ HermanLauenstein, але я врятував один байт, тому що я можу пропустити 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
Чому ви оцінили це як 166 замість 84?
Conor O'Brien

@ ConorO'Brien Я просто вважав, що це все-таки цікаво, що я все ще зв’язуюся з Python.
Ніл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.