OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSNADYXRAOSADNRYXASONADYRAXSAONDYRXAONSYXADORNASADYXORANSYXADONRYAX OSN YRX YAX
_ _ _ _
Čo má veľa stĺpcov, pričom na kraji a v strede je ich pár dlhých? Predsa čiarový kód :)
Odhadom z toho ako vyzerajú barcodes (chceme dve tenké nožičky), frekvenčkou (ktorých písmen je 8 a ktorých 7, resp. 14?) alebo podrobnejšou štrukturálnou analýzou odhalíme, že zľava doprava sa 8x opakuje slovo ONYX a s ním sa strieda 7x zopakované slovo SADRA.
Sadru necháme bielou (na obrázku nižšie ju vďaka tomu stále viete čítať), onyx zafarbíme fixkou na čierno.
(zobraziť obrázok v plnej veľkosti)
Aj voľne a nepresne zafarbený barcode nám ešte čítačka v mobile spokojne prečíta a dozvieme sa, že kóduje číslo 19122601. To podľa návodu dole po dvojiciach prevedieme na písmenká: 19=S, 12=L, 26=Z, 01=A.
SLZA
Cool nápad, nezriešili sme, mne k tomu napríklad úplne chýbala vedomosť ako presnejšie tie kódy vyzerajú.
Hmmm nevedelo by to nejak byť cool kebyže je tam viac rôznych vecí čiernej a bielej farby? Je potom viac šancí nájsť ten pattern (aj sa to dobre kombí, lebo vidíš že sú dva typy stĺpcov, a každý má inú časť písmen daného riadku) aj viac šancí pochopiť že ide o farby a rozmýšľať čo s nimi.
A aspoň by sa nejak využilo to množstvo riadkov :D
Keďže sme boli jeden z mála tímov ktorý to vyriešil, dám sem zhruba postup. Lebo bolo tam dosť veľa red-heringov, podľa mňa s niektorými ani autori nerátali.
Ako prvé som si všimol, že sa tam s periódou 9 opakuje text OSNADYXRA ale s nejakými obmenami. Vychádzali tam kadejaké patterny keď sa človek na to dlho pozeral, napríklad že všade je 2x A, iba v niektorých nie. Keďže Počet stĺpcov je akurát 67, tak to vychádza 7 9-tíc plus 4 zvyšok. Tajnička má akurát 4 🤔. To nemôže byť náhoda 😏. Rozmýšľal som teda že možno len treba zarovnať 9tice aby v nich sedel nejaký pattern, a tie 4 písmenká ktoré nebudú v žiadnej 9tici budú tajnička. Len mi zabili entuziazmus tým že sme viacero rovnakých riadkov dostali z nejakého dôvodu.
Tak som rozmýšľal, že možno bude potrebné iterovať nejaký algoritmus. Napríklad začneme zdola tými 9 písmenkami čo sú dolu (zas 9, to nebude náhoda 😏) a nejako budeme podľa predošlého riadku niečo odstraňovať z ďalšieho, až kým nezostanú 4 písmenká alebo dačo. Alebo pôjdeme zhora dolu a bude dačo. Len môj entuziazmus bol zabitý lebo tam žiadny takýto algoritmus nenájdeme keď sú všetky riadky rovnaké, a stále nám po dlhom čase nie je jasné čo s tým posledným riadkom kde sme ich z nejakého dôvodu dostali len 9.
Poďme teda vyfarbovať. Tak som sa 20 minút učil ako v google docs vyfarbím text ktorý som vyhľadal. (Áno, OCRkom som to dal do telefónu a nakopíroval do google docs, netuším či dobre.) Tu mi zas tým zabil entuziazmus že nemôžem len robiť globálny search, lebo však všetky riadky sú rovnaké. Plán bol teda že v každom riadku vyfarbiť iné písmenko, buď podľa abecedy, alebo podľa nejakého iného patternu na ktorý prídeme.
Od tohto momentu je už chvíľa k vyriešeniu. Prišlo mi to že chceme príliš nasilu dostať nejaký obrázok a príliš nasilu si vyberáme že z ktorého riadku berieme ktorý znak na vyfarbenie. Čo keby sme to nerobili? Keď sú všetky riadky rovnaké a vyfarbím ich rovnako tak obrázok budú vlastne zvislé čiarky. (Viem, prevratná myšlienka, ale pred Brieždením som spal len asi 6 hodín.) Obrázok asi nemôžu byť zvislé čiarky, že? Ibaže by to bol čiarový kód. Wait a second... To by mohlo byť. A tie 3 trojice sú kvôli tým dlhým čiarkam.
To že ktoré treba vyfarbiť sme zistili podľa tých dlhších čiar ktoré sú v každom čiarovom kóde rovnaké. Počas celého riešenia sme si vôbec neuvedomili že sú tam slová ONYX a SADRA. To že tam boli tie slová takto periodicky iba mýlilo. Keby tam boli nejaké náhodné znaky alebo symboly, tak by to bolo za mňa ľahšie.
Som ináč celkom sklamaný, že to nie je EAN nejakého reálneho produktu, dúfal som že to budú nejaké Horalky alebo Kofola. Nemať zvyšok tímu tak ja osobne by som vyriešil takmer celú šifru a potom by som bol zaseknutý na tom ako previesť to číslo na písmenká 😅. Kukovi to trvalo asi 3 sekundy. Oceňujem že tam boli aspoň tie 4 paličky (aj keď aj to nás ako som písal zmiatlo).
tl;dr pre orgov: Ja viem že SADRA a ONYX a 4 paličky nám mali pomôcť vyriešiť to, ale reálne to bolo ťažšie lebo `len("SADRA"+"ONYX")*9+4=67`. A doteraz som sklamaný že riešenie neboli Horalky 😁
Sa mi páči diskusia komu foťák skenuje barkódy a komu nie. Za mojich čias sme boli radi že foťák na telefóne robil fotky 😁. Ja mám telefón príliš starý na to aby vedel takéto veci. Ale QR Droid Private, a ten to naskenoval v pohode.
Och, XOR, OR, AND a nakoniec je to volaky ONYX so sadrou :) Tuto sme veru nedali, frekvencna analyza ukazala...
Hmm, to je vlastne pravda, že asi nie je na Androide štandardný foťák. Je celkom možné že rôzni výrobci Android telefónov majú rôzne aplikácie na foťák, keďže AOSP Camera nemá veľa funkcií. U mňa s Pixel Camera (com.google.android.GoogleCamera) čítanie tých kódov funguje.
Môj Android 15 to pekne zvláda cez foťák (QR droid appka tiež). Musela som ale snímať dostatočne z diaľky.
Odskúšané tri rôzne verzie Androidu (11, 3, 14), nezvláda (QRká 14ka zvláda, staršie tiež nie). Čo máš za nadstavbu, že to má také fancy fičúrie? 😄
Na androide to zvláda priamo štandardný foťák.
Mňa by zaujímalo, ako bežné je mať v mobile čítačku EAN-8 kódov 🤔 akože ja mám ale príde mi to skôr vzácnosť 😄