Helper tool for the https://hadejslova.cz/ game.
In Czech.
Tato utilita pomáhá rychlejšímu vyřešení hádanky, jež se každý den zjevuje na adrese https://hadejslova.cz/
Místo obvyklých 10-15 minut nutných každý den k intenzivnímu přemýšlení nad rébusem vám díky tomuto skriptu stačí minut třeba 5, takže zbylý čas můžete věnovat něčemu užitečnějšímu.
- Ruby
- iconv, awk, 7z (pouze pro výrobu slovníku)
Součástí tohoto repository není slovník pětipísmenných českých slov. Je třeba jej vyrobit, například ze slovníku, jenž je k dispozici zde.
Postup výroby:
wget https://gpsfreemaps.net/files/security/wordlist/CZ.7z
7z x CZ.7z
iconv --from=WINDOWS-1250 --to=UTF8 < CZ.txt > CZ-UTF8.txt
awk -F, 'length($1)==6' < CZ-UTF8.txt > CZ-UTF8-words5.txt
Ať už získáte slovník jakkoliv, na konci procesu musí existovat soubor s pětipísmennými
českými slovy (co slovo, to řádek, kódování UTF-8) pojmenovaný CZ-UTF8-words5.txt
.
Pozn. Ačkoliv výše zmíněný slovník obsahuje i mnoho cizích nebo velmi nepravděpodobných slov,
některá slova vám neporadí. Např. hádaným slovem bylo DABÉR
(1.3.) nebo ZUMBA
(13.3.).
Tato slova ve wordlist/CZ.7z
nenajdete.
Utilita hadej.rb
filtruje slova vyhovující maskám, které hádanka během hraní postupně poskytuje.
Každá maska je použita jako jeden argument na příkazové řádce. Pětipísmenná maska je zadaná jako
pět dvojic znaků {typ,znak}.
Typy znaků:
!
písmeno na správné místě (zelená)+
správné písmeno na nesprávném místě (žlutá).
nesprávné písmeno (šedá)
Pozn.: Zadávaný znak může být velký nebo malý.
Volitelné argumenty (options):
--unique
.. písmena se neopakují (vhodné v prvních krocích)--added <chars>
.. vhodné v situaci, kdy se písmeno ve slově zobrazuje zeleně, ale na klávesnici žlutě. Jde o případ, kdy se písmeno ve slově opakuje a jedna z jeho pozic byla uhádnuta.
Hádanka ze dne 26.2. obsahovala slovo "UTKAT". Postup byl následující:
- První slovo by mělo obsahovat častá písmena bez opakování. Vhodné je například "OSTEN".
Jako zpětnou vazbu získáme informaci, že ve slově je písmeno
T
, nejméně jednou, a zároveň víme, že se nenachází uprostřed. Zadáme tedy:
./hadej.rb '.O.S+T.E.N' --unique |less
...
DRKAT
LADIT
RADIT
TILDA
...
- Vybereme si další slovo "LADIT". Hra reaguje informací o tom, se nám podařilo správně
umístit
T
a že přítomné je i písmenoA
na jiném než druhém místě. Navíc se dozvídáme i to, že se ve slově někde nachází i dalšíT
, protože na klávesnici svítí žlutě, nikoliv zeleně. Přidáme další masku, odstraníme--unique
a vyžádáme si dalšíT
:
./hadej.rb '.O.S+T.E.N' '.l+a.d.i!t' --added=T |less
...
TRVAT
TRAKT
TRKAT
PRATT
TUKAT
UTKAT
UTRAT
TÁPAT
TÁZAT
...
- S každou další maskou se množství vyhovujících slov snižuje. Přesto jich v této fázi dostáváme 124. Vybereme si "UTKAT" a máme štěstí. Čas: 4min 44s.
$ ./hadej.rb -u '.n+o.t.e+s' |less
$ ./hadej.rb -u '.n+o.t.e+s' '+o+s.i.k.a' |less
$ ./hadej.rb '.n+o.t.e+s' '+o+s.i.k.a' '+m!á!s.l!o' |less
#hadejSlova #den50 #krok4 Čas: 3min 2s
- Proč Ruby?
Ruby je nedoceněný ergonomický jazyk. Mám ho rád a mrzí mě, že poslední dobou ztrácí na popularitě.
- Nešlo by to napsat jednodušeji?
Určitě šlo a vím jak -- např. s větší pomocí regulárních výrazů. Pokud se mi bude chtít, zjednoduším to.
- Proč příkazová řádka?
Nechtělo se mi z toho dělat větší projekt.
- Nebylo by lepší si raději lámat hlavu o pár minut déle?
Asi bylo. Ta hra je dobrá, jen já jsem líný.