abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:44 | Nová verze

    Byla vydána nová verze 1.16.0 klienta a serveru VNC (Virtual Network Computing) s názvem TigerVNC (Wikipedie). Z novinek lze vypíchnout nový server w0vncserver pro sdílení Wayland desktopu. Zdrojové kódy jsou k dispozici na GitHubu. Binárky na SourceForge. TigerVNC je fork TightVNC.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Nová verze

    Byla vydána nová verze 4.6 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 2
    včera 13:33 | Humor

    Rozsáhlá modernizace hardwarové infrastruktury Základních registrů měla zabránit výpadkům digitálních služeb státu. Dnešnímu výpadku nezabránila.

    Ladislav Hagara | Komentářů: 9
    včera 13:11 | Nová verze

    Čínský startup Kimi představil open-source model umělé inteligence Kimi K2.5. Nová verze pracuje s textem i obrázky a poskytuje 'paradigma samosměřovaného roje agentů' pro rychlejší vykonávání úkolů. Kimi zdůrazňuje vylepšenou schopnost modelu vytvářet zdrojové kódy přímo z přirozeného jazyka. Natrénovaný model je dostupný na Hugging Face, trénovací skripty však ne. Model má 1 T (bilion) parametrů, 32 B (miliard) aktivních.

    NUKE GAZA! 🎆 | Komentářů: 6
    včera 09:00 | IT novinky

    V Raspberry Pi OS lze nově snadno povolit USB Gadget Mode a díky balíčku rpi-usb-gadget (CDC-ECM/RNDIS) mít možnost se k Raspberry Pi připojovat přes USB kabel bez nutnosti konfigurování Wi-Fi nebo Ethernetu. K podporovaným Raspberry Pi připojeným do USB portu podporujícího OTG.

    Ladislav Hagara | Komentářů: 0
    včera 03:33 | Komunita

    Konference Installfest 2026 proběhne o víkendu 28. a 29. března v budově FELu na Karlově náměstí v Praze. Přihlásit přednášku nebo workshop týkající se Linuxu, otevřených technologií, sítí, bezpečnosti, vývoje, programování a podobně lze do 18. února 0:15.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Komunita

    Fedora Flock 2026, tj. konference pro přispěvatele a příznivce Fedory, bude opět v Praze. Proběhne od 14. do 16. června. Na Flock navazuje DevConf.CZ 2026, který se uskuteční 18. a 19. června v Brně. Organizátoři konferencí hledají přednášející, vyhlásili Call for Proposals (CfP).

    Ladislav Hagara | Komentářů: 1
    včera 03:11 | Zajímavý software

    Z80-μLM je jazykový model 'konverzační umělé inteligence' optimalizovaný pro běh na 8-bitovém 4Mhz procesoru Z80 s 64kB RAM, technologii z roku 1976. Model používá 2-bitovou kvantizaci a trigramové hashování do 128 položek, což umožňuje zpracování textu i při velmi omezené paměti. Natrénovaný model se vejde do binárního souboru velkého pouhých 40 KB. Tento jazykový model patrně neprojde Turingovým testem 😅.

    NUKE GAZA! 🎆 | Komentářů: 4
    26.1. 17:44 | IT novinky

    Digitální a informační agentura (DIA) na přelomu roku dokončila rozsáhlou modernizaci hardwarové infrastruktury základních registrů. Projekt za 236 milionů korun by měl zabránit výpadkům digitálních služeb státu, tak jako při loňských parlamentních volbách. Základní registry, tedy Registr práv a povinností (RPP), Informační systém základních registrů (ISZR) a Registr obyvatel (ROB), jsou jedním z pilířů veřejné správy. Denně

    … více »
    Ladislav Hagara | Komentářů: 5
    26.1. 17:33 | IT novinky

    Evropská komise (EK) zahájila nové vyšetřování americké internetové platformy 𝕏 miliardáře Elona Muska, a to podle unijního nařízení o digitálních službách (DSA). Vyšetřování souvisí se skandálem, kdy chatbot s umělou inteligencí (AI) Grok na žádost uživatelů na síti 𝕏 generoval sexualizované fotografie žen a dětí. Komise o tom dnes informovala ve svém sdělení. Americký podnik je podezřelý, že řádně neposoudil a nezmírnil rizika spojená se zavedením své umělé inteligence na on-line platformě.

    Ladislav Hagara | Komentářů: 14
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (10%)
     (23%)
     (3%)
     (5%)
     (2%)
     (12%)
     (33%)
    Celkem 648 hlasů
     Komentářů: 17, poslední 22.1. 15:24
    Rozcestník

    Sudoku

    7.1.2006 22:31 | Přečteno: 6512× | Ostatní

    Krátký příběh o tom, jak hraje tuto hru programátor a uživatel Linuxu v jednom

    Dnes jsem v jednom nejmenovaném časopise narazil na tuto hru. Rozhodl jsem se, že bych si ji mohl zkusit vyřešit. Sudoku je docela hit a navíc jsem si říkal, že "to přece nemůže být těžké". Asi po půl hodince jsem zjistil, že deterministické řešení daného rozložení prostě neexistuje, a že to zase není tak lehké, jak jsem si myslel. Časopis jsem dosti znechuceně odložil.

    Poté jsem se začal učit na zkoušku, což mě příšerně nebavilo, a tak jsem se rozhodl, vrátit se k Sudoku. Tentokrát vśak poněkud jiným způsobem. Přece jen, proč bych se trápil se zkoušením všech možných i nemožných řešení, když můj křemíkový miláček, to zvládne rychleji a lépe? No a protože se mi vhodný program nechtělo hledat, udělal jsem malý (ale plně funkční) návrh v jazyce C (konkrétně C99).

    Původně jsem algoritmus chtěl koncipovat jako rekurzivní testování všech možností, ale to jsem brzy zavrhnul kvůli rychlosti. Nakonec jsem vymyslel relativně jednoduchý, průhledný,nerekurzivní a jak se později ukázalo, také velmi rychlý, algoritmus o kterým bych se s vámi rád podělil

    Pole sudoku je definováno jako pole (nečekaně :-)), které je jednorozměrné (což je nedůležité) a konkrétně se jedná o pole struktur. Struktura je jednoduchá. Má hodnotu value (tedy hodnota, která je v poli, kde 0 = neobsazené pole) a constant (tedy konstantní hodnota, která je předtištěná, třeba v časopise). Dále se v programu nachází funkce, která testuje, zda položením hodnoty do určeného políčka, neporuší základní pravidlo sudoku (tedy 1-9 v řádku, sloupci a čtverci 3x3). Tato funkce by zasloužila optimalizaci, ale jak uvedu později, stejně je to celé rychlé. Takže máme datovou strukturu (opravdoví programátoři z ní jistě algoritmus už dávno odhadli :-)) a máme testovací funkci. Zbývá vlastní implementace vyhledávání. Ta je založena na cyklu s proměnnou pos (pozice v poli). Pozice pos je při volání fce. nastavena na 0. Pokud je menší, než 0, žádné další řešení neexistuje a funkce končí. Pokud je naopak rovna velikosti pole, je nalezeno řešení, které je vypsáno. Pokud se na pozici pos nachází konstanta, inkrementujeme pos (konstanta nemůže být měněna), jinak inkrementujeme hodnotu v poli. Pokud je po inkrementaci hodnota v poli větší než 9, nastavíme pos na index předchozí nejblyžší ne-konstantní hodnoty, jinak inkrementujeme pos. No a nakonec zapíšeme novou hodnotu do pole. A to je vše. Tento jednoduchý algoritmus řeší sudoku bez rekurze (a tím přidané paměti)

    Když jsem toto doprogramoval, zkusil jsem rychlost. Byl jsem mile překvapen. Jedna varianta Sudoku (lépe řečeno VŠECHNY jeho možnosti řešení) bylo vyřešeno za asi za 0.1s.

    Pokud by někdo měl o implementaci zájem, je ke stažení na http://tux.wz.cz/files/sudoku/sudoku-solve.tar.gz

    Jedná se o neúplnou implementaci, která neumí načítat pole ze souboru, což možná dodělám (no a možná taky ne ;-)), nicméně implementace je (aspoň myslím), relativně slušná a i programátor začátečník snadno pochopí, jak definovat vlastní hrací pole (tedy vyplněné hodnoty).

    Nakonec malá otázka. Jak byste tento problém řešili vy?

           

    Hodnocení: 93 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    7.1.2006 22:57 Ondrej Sykora | blog: oblok
    Rozbalit Rozbalit vše Re: Sudoku
    Ja jsem sudoku resil docela jednoduchym rekursivnim prohledavanim, ale podstatne vylepsenym o vyskrtavani nepouzitelnych hodnot a okamzitym dosazovanim ve chvili, kdy na policku zustane jenom jedna mozna hodnota (samozrejme nasledovanym dalsim vyskrtavanim v radku, sloupci a ve skupine a pripadne dosazenim).

    I kdyz je to jednoducha rekurze a je tam pri ni spousta zbytecnych alokaci pameti pro potreby backtrackingu, tak vsechna testovana zadani vyresila pod 10 ms (to je asi nejmensi casovy rozdil co jde v jave zmerit).
    8.1.2006 10:29 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše Re: Sudoku
    Tohle řešení mne taky napadlo, ale nechtěl jsem k řešení používat další paměť, která by vznikla z rekurze a hlavně (pokud jsem to tedy správně pochopil) bych musel mít u každého políčka pole/vektor/list hodnot, které tam mohou být. Nicméně Vaše řešení by zřejmě pro větší sudoku (typu 16x16) bylo rychlejší.
    8.1.2006 11:25 Ondrej Sykora | blog: oblok
    Rozbalit Rozbalit vše Re: Sudoku
    Zas tak strasne to neni, mozne hodnoty pro kazde policko mam reprezentovane pomoci bitove masky v jednom integeru. Tim jsem sice omezeny na sudoku 25x25, ale to me zas tolik nevadi :)

    S tou pameti to v mem reseni snad az tak horke neni, ono se tech maximalne 81 poli o velikosti 32bytu (pro sudoku 9x9) nekam posklada ;) A protoze vliv na vykon je dost zasadni, rozhodl jsem se ze pameti tolik setrit nebudu..

    V te svoji javove implementaci jsem zkousel vypnout proskrtavani a bez nej byl cas vypoctu nekolikrat vyssi. Semtam i kolem vteriny, prumerne tak 400-500ms. S proskrtavanim (a bez dalsich optimalizaci) jsem se dostal na 10, maximalne 20ms u vsech zadani. A to uz zato stoji :)
    7.1.2006 23:00 petr_p
    Rozbalit Rozbalit vše Re: Sudoku
    Ja kdybych nebyl liny a rovzpomnel se na Prolog, tak bych to napsal v nem. Prolog je na prohledavani stavoveho prostoru s omezujicimi podminkami jako sity (no, byl prave kvuli tomu navrzen).

    Tu hru jsem si zkousel na papire (taky z nejmenovaneho casopisu) a pokud je zadani slusne, tak lze najit reseni i bez prochazeni slepych cest (tak za hodinku).

    A jinak pojem deterministicky znamena trochu neco jineho, nez jak jsi to podal. Nedeterministicky program ma totiz tu vyhodu, ze nejdrive uhadne reseni, a pak jej deterministicky overi. Bohuzel takove stroje jeste nemame :( Vsechny ostatni programy jsou deterministicke, i kdyz casto se musi vracet ze slepych cest.
    8.1.2006 13:26 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
    Rozbalit Rozbalit vše Re: Sudoku
    Nedeterministický program bych chtěl vidět :-)
    8.1.2006 00:37 Pmx
    Rozbalit Rozbalit vše Re: Sudoku
    Tak jsem si to cvičně vyzkoušel, úspěšně. Akorát jsem si k tomu napsal jednoduché rozhraní v GTK (hafo spinbuttonů) ;-)

    Už jsem předtím viděl i jeden pythonovej prográmek, který to řešil stejně. Když jsem byl na dni otevřených dveří na matfyzu, tak tam při studijním programu Informatika byla přednáška Od sudoku k omezujícím podmínkám. Úplně jsem ji v závěru nepochopil, ale řekl bych, že tam sudoku řešili nějak podobně.
    8.1.2006 10:31 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše Re: Sudoku
    Existuje vůbec pro Linux nějaká implementace v GTK? Pokud ne, tak byste to svoje rozhraní mohl vylepšit a vypustit free.
    8.1.2006 11:20 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: Sudoku
    Ve svých záložkách jsem objevil odkaz na G-Sudoku. Bohužel už nevím, jak se mi tam dostal.
    8.1.2006 09:37 Filda
    Rozbalit Rozbalit vše Re: Sudoku
    Nijak jsem ten zdroják nestudoval, ale zajímalo by mě, jestli dovede vyřešit i ty opravdu težký případy
    8.1.2006 10:25 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše Re: Sudoku
    Jeden jsem zkusil. Výsledek :
    honza@daemon:~/Develop/sudoku-solve$ time ./sudoku-solve
    2 0 4 0 1 0 0 0 0
    0 1 5 0 0 0 0 0 4
    0 0 0 9 6 0 0 0 0
    3 0 7 0 0 1 0 0 0
    0 4 0 0 0 0 0 5 0
    0 0 0 4 0 0 9 0 3
    0 0 0 0 3 9 0 0 0
    1 0 0 0 0 0 6 2 0
    0 0 0 0 8 0 3 0 9
    Solution :
    2 9 4 5 1 8 7 3 6
    6 1 5 3 7 2 8 9 4
    7 8 3 9 6 4 2 1 5
    3 5 7 6 9 1 4 8 2
    9 4 6 8 2 3 1 5 7
    8 2 1 4 5 7 9 6 3
    4 6 8 2 3 9 5 7 1
    1 3 9 7 4 5 6 2 8
    5 7 2 1 8 6 3 4 9
    
    real    0m0.100s
    user    0m0.085s
    sys     0m0.003s
    
    Takže ano, dovede řešit i těžké příklady.
    8.1.2006 11:45 Haaja | skóre: 25 | blog: haaja | Praha
    Rozbalit Rozbalit vše Re: Sudoku
    Jsou i težší případy, toto sudoku jak jste sem poslal jsem bez použití jakéhokoliv programu vyřešil cca za 25 minut a musel jsem provést tipnutí pouze tří čísel. Najdou se mnohem složitější. ;)
    8.1.2006 11:53 kavol | skóre: 28
    Rozbalit Rozbalit vše Re: Sudoku
    Sudoku je docela hit
    hm, poprvé jsem to viděl před pár lety na matfyzáckejch přijímačkách, a najednou je z toho děsnej hit a říká se tomu sudoku, hm :)

    btw, "poprvé" - co pamatuju, určitě se to vyskytuje i v nějaký starší literatuře ...
    a navíc jsem si říkal, že "to přece nemůže být těžké".
    správný postřeh ;-)
    Asi po půl hodince jsem zjistil, že deterministické řešení daného rozložení prostě neexistuje
    no ... většina mých známých (nejen informatici) to do té půlhodinky vyřeší ;-) ... ještě jsem neviděl zadání, které by k jednoznačnému řešení nevedlo ...
    28.5.2007 11:51 bahno
    Rozbalit Rozbalit vše Re: Sudoku
    Ale ano, najdou se takove, jenze pak to neni sudoku. Sudoku zadani musi mit prave jedno reseni a to ze otisknou sudoku ktere jich ma vice je chyba.
    eXces avatar 8.1.2006 16:35 eXces | skóre: 15 | blog: i hate mondays;) | Jihlava
    Rozbalit Rozbalit vše Re: Sudoku
    Souhlas s jedním příspěvkem výše. Dnas velký hit, když jdem dělal přijímačky na MAT-FYZ tak jsem si přál ať to tam je, byla to ta nejstupidnější věc, co tam mohli hodit. S tou půlhodinou bych řekl, že to je přehnané. Tohle se řeší do pěti minut. Nechci pochybovat o tvojí inteligenci, ale je celkem nemožný to nevyřešit, pokud to jako neřešitelný není vyrobený...
    Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. --Albert Einstein
    8.1.2006 16:55 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše Re: Sudoku
    Nechci pochybovat o Vašem egu, ale myslím, že by bylo dobré ho snížit (hodně). Jinak, nevím, že bychom se spolu znali, že si tykáme. A řešit za 5 minut to nejtěžší Sudoku... no nevím nevím.
    eXces avatar 8.1.2006 17:25 eXces | skóre: 15 | blog: i hate mondays;) | Jihlava
    Rozbalit Rozbalit vše Re: Sudoku
    Sorry za to tykání. Je jasné, že když máte to nejtěžší sudoku, tak je fakt těžký to vyřešit.
    Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. --Albert Einstein
    9.1.2006 11:23 kavol | skóre: 28
    Rozbalit Rozbalit vše Re: Sudoku
    no, jsou tací, co to za pět minut tak sotva ručně zkontrolují, že to splňuje podmínky (trošku přeháním, ale ne moc ... a nejsou blbí, jen pomalí)

    p.s. "Nechte si už těch svých Kidů!" - nemělo tam být "Nestojím o vaše Kidy"? (případně "I do not care for your kids."?)
    8.1.2006 22:23 merlik | skóre: 13 | blog: merlik
    Rozbalit Rozbalit vše Re: Sudoku
    Pekne reseni... ;)
    I cesta může být cíl.
    8.1.2006 22:37 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
    Rozbalit Rozbalit vše Re: Sudoku
    Nechci být sprostý a bývám i slepý, ale pokud místo "prohledávání do hloubky realizované zásobníkem (místo rekurze)" musíš napsat odstavec o tom ... nevím, jak to nazvat ... možná bych si být tebou rozšířil obzory (i v angličtině). Nicméně gratuluju, že jsi úlohu vyřešil a máš z toho radost, to je hlavní.
    Math, as Barbie says, is hard.
    9.1.2006 12:19 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše Re: Sudoku
    Ale právěže tam není ani rekurze, ani zásobník, vše pracuje pouze v tom poli.

    Obzory v angličtině rozšiřuji jak se to jen dá, ale čeština je krásná a myslím, že i informatik by se měl umět vyjádřit v češtině.

    Mám radost :-)
    9.1.2006 13:42 Pavel 'lingeek' Szalbot | skóre: 54 | Třinec
    Rozbalit Rozbalit vše Re: Sudoku
    Zásobník to není pravý, je to přímo na místě, budiž. Pěkné.
    Math, as Barbie says, is hard.
    9.1.2006 10:39 janosh | skóre: 8 | blog: janosh_blog | Třebíč
    Rozbalit Rozbalit vše Re: Sudoku
    kdyby se radeji ucil na zkousky :-)
    Linux is like teepee, no windows, no gates, apache inside!
    9.1.2006 12:22 Honza "tux" Friesse | skóre: 15 | blog: Tuxův blog | Vyškov
    Rozbalit Rozbalit vše Re: Sudoku
    Tak někdo paří AOE 3 či jiné, a někdo holt píše v C nerekurzivní, bezzásobníkové (prostě in-situ) řešení Sudoku no. A stejně mě to IMS nebavilo.
    13.1.2007 17:09 jarek.cz
    Rozbalit Rozbalit vše Re: Sudoku
    Pekny algoritmus na prohledavani reseni (i s popisem) se da najit tady: http://en.wikipedia.org/wiki/Algorithmics_of_Sudoku#Discussion_of_the_reference_implementation

    Pred casem sem k nemu vytvoril webove rozhrani: http://www.jarek.cz/logicke-hadanky/sudoku/automaticky-vyresit/
    8.9.2014 11:29 raven
    Rozbalit Rozbalit vše Re: Sudoku
    Zdravím všechny,

    nemá někdo náhodou kód popisovaného řešení sudoku? Odkaz autora již nefunguje a zdroják by mi dost hodně pomohl

    Díky všem

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.