Portál AbcLinuxu, 7. května 2025 07:16
Delfská veštírna trochu jinak
1.7.2010 00:44
| Přečteno: 1852×
| Jen tak
| poslední úprava: 1.7.2010 12:50
Inspirován zápisem o pořádně napěchované skříni s disketama sem se rozhodl napsat prográmek, co by simuloval cosi podobného. Kdo už takovou sbírku disket vlastní a nic emulovat nepotřebuje, dál číst nemusí
.
Myšlenka je jednoduchá. Místo všech kombinací 1,44 MB disket budeme mít prográmek, co dokáže vykreslit 8x8 pixelů velký monochromatický piktogram (tedy aspoň na architekturách, kde je long long int 64bitů). Proč zrovna 8x8? Jednak proto, že se mi to dobře programovalo a taky proto, že na vstupu může být stále celkem zapamatovatelné a vymyslitelné číslo.
Ano číslo, další podstatná věc, která v odkazovaném blogu zazněla. Každá informace se dá převést na číslo a chtěl jsem, aby s ním prográmek umožnil pracovat.
Tak co to vlastně umí: Program může mít jeden volitelný parametr a to právě to číslo, ze kterého vykreslí piktogram. Jinak kdykoliv je možné v programu zmáčknout klávesu [mezerník] co spustí promítání náhodných piktogramů v intervalu jedna sekunda, znovu stisknutím [mezerníku] se to pauzne. Číslo vygenerovaných piktogramů se vypisuje do konsole, i do titulku okna.
Protože některé piktogramy mohou invertovaně působit odlišně, klávesa [I] spustí (a vypne) střídání inverze.
Cože to vlastně může dokázat vykreslit? No máme 18446744073709551615 18446744073709551616 kombinací (větší čísla nezadávat ;)). To je celkem slušné. 8x8 fonty existují, taky jsem objevil jakýsi pixelart (akorát barevný). Takže nějaké "poselství" by mělo být možné tímto věštícím nástrojem přijmout
.
Náhodné generování pomocí rand() použité v programu ve funkci [mezerník] má bohužel nevýhodu v tom, že je RAND_MAX podstatně menší než LONG LONG INT. Řeším to škálováním, ale tím jsem spoustu kombinací vyřadil
. Lepší by to bylo propojit s /dev/random, nebo /dev/urandom, ale to už se mi (zatím) nechtělo.
Po krátkém testování mi to pár hezkých obrázků vyrobilo, tak je přikládám. Zdroják hodím do prvního komentáře jako přílohu. Přeložit to jde snad všude kde je gcc a nainstalovaná i devel verze sdl (obvykle balíček sdllib-dev). Nemělo by to jakkoliv poškodit počítač ani data
. Překládat takhle:
gcc -o main main.c `pkg-config --cflags --libs sdl`
Jinak proč? No potřeba po dlouhé době provětrat znalosti SDL a C. Jsem prasič, takže kód je šílený
.
A jinak, kdyby tam někdo zahlédl odpověď na otázku života, vesmíru a vůbec a podobně, poslat screen
(a nebo projít všechny možné kombinace a poslat ty nejhezčí pixelarty ;)).
Update: pod prvním komentářem najdete soubor vestirna.c, což je vylepšená verze, která čte z /dev/urandom (kdo chce /dev/random, ať změní ve zdrojáku - dík FAtbluNTovi) a navíc opravuje chybku se čtením vstupu (nečetlo správně nejvyšší řády, teď to po zadání maxima - 18446744073709551615 - vykreslí bílou obrazovku.
Obrázky
Tiskni
Sdílej:
Komentáře
Vložit další komentář
1.7.2010 00:55
Mrkva | skóre: 22
| blog:
urandom
Re: Delfská veštírna trochu jinak
1.7.2010 01:13
FAtbluNT
Re: Delfská veštírna trochu jinak
1.7.2010 08:00
Michal Wirth | skóre: 26
Re: Delfská veštírna trochu jinak
1.7.2010 08:33
Allah Akbar
Re: Delfská veštírna trochu jinak
1.7.2010 10:39
Jendа | skóre: 78
| blog:
Jenda
| JO70FB
Re: Delfská veštírna trochu jinak
1.7.2010 12:11
Dadam | skóre: 12
| blog:
dadamovo
Re: Delfská veštírna trochu jinak
Založit nové vlákno •
Nahoru
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.