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 11:11 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 161 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 10:44 | Nová verze

    Po delší době vývoje vyšla nativní linuxová verze virtuálního bubeníka MT-PowerDrumKit 2 ve formátu VST3. Mezi testovanými hosty jsou Reaper, Ardour, Bitwig a Carla.

    balda | Komentářů: 1
    včera 21:33 | Nová verze

    Desktopové prostředí Budgie bylo vydáno ve verzi 10.10. Dokončena byla migrace z X11 na Wayland. Budgie 10 vstupuje do režimu údržby. Vývoj se přesouvá k Budgie 11. Dlouho se řešilo, v čem bude nové Budgie napsáno. Budgie 10 je postaveno nad GTK 3. Přemýšlelo se také nad přepsáním z GTK do EFL. Budgie 11 bude nakonec postaveno nad Qt 6.

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Humor

    OpenChaos.dev je 'samovolně se vyvíjející open source projekt' s nedefinovaným cílem. Každý týden mohou lidé hlasovat o návrzích (pull requestech), přičemž vítězný návrh se integruje do kódu projektu (repozitář na GitHubu). Hlasováním je možné změnit téměř vše, včetně tohoto pravidla. Hlasování končí vždy v neděli v 9:00 UTC.

    NUKE GAZA! 🎆 | Komentářů: 3
    včera 03:00 | Nová verze

    Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    10.1. 03:00 | Komunita

    Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.

    Ladislav Hagara | Komentářů: 6
    9.1. 19:44 | Zajímavý software

    Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.

    Ladislav Hagara | Komentářů: 5
    9.1. 19:11 | IT novinky

    Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).

    NUKE GAZA! 🎆 | Komentářů: 2
    9.1. 14:22 | Zajímavý článek

    Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.

    Ladislav Hagara | Komentářů: 7
    9.1. 03:33 | Zajímavý software

    AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (4%)
     (0%)
     (9%)
     (20%)
     (3%)
     (5%)
     (3%)
     (11%)
     (49%)
    Celkem 381 hlasů
     Komentářů: 8, poslední 10.1. 23:18
    Rozcestník

    Automatický Slitherlink solver

    30.8.2010 11:33 | Přečteno: 1801× | GNU | poslední úprava: 30.8.2010 11:43

    Přemýšlel jsem jak co nejlépe implementovat řešení tohoto hlavolamu. Použil jsem opět starý dobrý DLX solver, který výborně funguje pro Sudoku, a který docela dobře šel použít i pro Kakuro. Zatím jsem skončil zhruba u tohoto postupu, který dobře (tj do desítek sekund) řeší 7x7 puzzle, a většinu 10x10 puzzlí:

    1) Pro střed každého čtverce vygeneruj "tahy", které pokryjí 4 strany tohoto čtverce správným počtem čar. Tj pro "0" bude možnost jen jedna, pro "1" budou 4, pro "2" jich bude 6 apod. Tohle je jednoduché, prostě smyčka 0-15, a počítá se hammingova váha.

    2) Je třeba zajistit, aby tahy které pokryjí sousední čtverce, nastavovaly společnou hranu stejně. Tohle řeším pomocí optional constraints, podobně jako v 8-queens. Každý tah na každém čtverci jednak pokryje tento čtverec, a dál pokryje optional constraint pro svou "jižní" a "východní" stranu. "Severní" a "západní" hrana je ale 1) přesunuta do sousedícího čtverce, 2) negována. Díky tomu by v případě že by sousední čtverce nastavovaly společnou hranu na opačnou hodnotu, díky této negaci sdílely stejný optional constraint, a tím jsou tyto tahy eliminovány.

    3) Správné řešení má mít jen jednu smyčku. Proto jsem ještě zavedl omezení na počet hran, které se mohou potkat ve vrcholech čtverců. Aby se zamezilo větvení a křížení, každý vrchol může mít právě 2 nebo právě 0 hran.

    Tohle jsem zatím trochu odbyl, a řeším to až po výběru tahu jeho validací, a zahozením v případě že by a) zvýšil počet hran vedoucích do některého z 4 vrcholů na 3, nebo b) pokrývá poslední hranu do některého vrcholu, a nastavuje ji na jedničku. Tohle je složitější, musí se kvůli tomu ještě testovat na okraj hracího pole.

    Přemýšlím že bych ten kód místo do verifikace tahu změnil na udržování invariantu, že všechny dostupné tahy jsou OK, a když některý čtverec pokryju, tak prořežu volné tahy pro ostatní čtverce (a samozřejmě strčím je na stack, a při backtracku je zase obnovím). Tohle se pro Kakuro velice osvědčilo, a urychlilo to řešení fakt dost.

    4) První 3 možnosti řeší lokální vlastnosti řešení, ale správné řešení má být jedna uzavřená smyčka. Tahle verifikace není úplně triviální na naprogramování, a zatím jsem ji ani nenapsal. Místo jednoho správného řešení se mi proto vygeneruje i cca 2-5 dalších, které ale taky vypadjí zajímavě, a to správné pořád snadno vyberu.

    Otevřené otázky:

    * Má smysl přepisovat test na spojitost (bod 3)? na prožezávání? Má smysl testovat řešení že obsahuje pouze jednu smyčku (bod 4)?

    * Nejsem si jistý jestli ten test na spojitost nečistí stavový prostor víc, než samotné omezení na počet hran u čtverce. Jestli jo, asi by bylo lepší postupovat opačným směrem- pokrývat tahy vrcholy tak, že pro každý vrchol bude právě 7 možností jak jej pokrýt- buď bude vrchol holý (1 možnost), nebo pokytý dvěma hranami (6 možností). Při pokrývání by se počítaly hrany po obvodech čtverců, a verifikovalo/prožezávalo by se podle toho teprve dodatečně.

    * Úplně jiné řešení: Nebudou se vůbec generovat "hrany", budu přímo "barvit" čtverce na 2 možné barvy. Hrany budou definovány implicitně, kde se stýkají rozdílné barvy, bude hrana. Tohle vypadá lákavě, protože pro každý čtverec jsou jen 2 možné tahy, takže stavový prostor je nejmenší. Jenže zase by to povolovalo "šachovnicové" vzory, které jsou ve správných řešeních zakázány, tohle by bylo potřeba explicitně testovat a vyhazovat.. Imlementace by jinak byla podobná jako u pokrývání vrcholů- verifikace/prožezávání podle počtu hran kolem každého čtverce..

    Možná je ještě nějaké další dobré řešení? Preferuji jednoduchost a eleganci i mírně na úkor efektivity.        

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    vlastikroot avatar 1.9.2010 06:24 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: Automatický Slitherlink solver
    Díky, to puzzle vypadá dobře :-)
    We will destroys the Christian's legion ... and the cross, will be inverted
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.