Pokazywanie postów oznaczonych etykietą zagadki. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą zagadki. Pokaż wszystkie posty

niedziela, listopada 23, 2008

Cthulhu nonogram

Na stronie Unspeakable Vault of Doom http://www.macguff.fr/goomi/unspeakable/weblog.html znajduje się zagadka - nonogram:



Rozwiązanie jest proste - szczególnie gdy ma się program który jest w stanie to zrobić :-) Napisałem go na programowanie logiczne. Działa całkiem dobrze, rozwiązanie znajduje bardzo szybko.


| ?- cthulhu(R,W), nono(R,W,O), rysuj(O).
####################
#####.##########..##
#.######.####.###..#
######.....######..#
#####.......####..##
##.##.......########
####.........#####.#
####.........#######
...#....#....###....
...#..#.#....###....
.#..#.#.#....###..#.
###.#.......###..###
#.##.#......###.##.#
.#.###.#....#####.#.
.#.##...#..##.##..#.
####..#.#..#..##.###
#.##.##.##..#..###.#
...#..#.#.#.#..##...
..#.###.#.#.#..##...
..#....#.#.##..##...

O = [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1],[1,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,0,0,1],[1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,1],[1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1],[1,1,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1],[1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1],[0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0],[0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0],[0,1,0,0,1,0,1,0,1,0,0,0,0,1,1,1,0,0,1,0],[1,1,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1],[1,0,1,1,0,1,0,0,0,0,0,0,1,1,1,0,1,1,0,1],[0,1,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,0,1,0],[0,1,0,1,1,0,0,0,1,0,0,1,1,0,1,1,0,0,1,0],[1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,1],[1,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,0,1],[0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,1,0,0,0],[0,0,1,0,1,1,1,0,1,0,1,0,1,0,0,1,1,0,0,0],[0,0,1,0,0,0,0,1,0,1,0,1,1,0,0,1,1,0,0,0]]
R = [[20],[5,10,2],[1,6,4,3,1],[6,6,1],[5,4,2],[2,2,8],[4,5,1],[4,7],[1,1,3],[1,1,1,3],[1,1,1,1,3,1],[3,1,3,3],[1,2,1,3,2,1],[1,3,1,5,1],[1,2,1,2,2,1],[4,1,1,1,2,3],[1,2,2,2,1,3,1],[1,1,1,1,1,2],[1,3,1,1,1,2],[1,1,1,2,2]]
W = [[8,2,2],[2,5,2,3],[5,2,2,2,2],[10,6],[6,2,2,1],[1,2,2,1,1],[3,2,4],[3,1,1],[2,3,5],[3,1,1],[3,2],[4,2,1],[6,4,4],[2,11],[16],[11,7],[1,2,3,2,4],[1,3,2,2],[2,2,1,2,3],[8,2,2]] ? ;

(74 ms) no


Po przekształceniu rozwiązania na bitmapę:

sobota, maja 10, 2008

Gra w ósemkę

Znana jest gra logiczna w "Piętnastkę" - na planszy 4x4 jedno pole jest puste, pozostałe są ponumerowane liczbami od 1 do 15. Należy wychodząc z konfiguracji początkowej dojść do ustawienia:

1 | 2 | 3 | 4
5 | 6 | 7 | 8
9 | 10 | 11 | 12
13 | 14 | 15 | X

Zagadka jest dość trudna obliczeniowo, dlatego na pracowni z Programowania Logicznego rozwiązujemy prostszą wersję - grę w "Ósemkę", której zasady są analogiczne, lecz wszystko rozgrywa się na planszy 3x3. Jakież było moje zdziwienie, gdy okazało się, że przechodzi bardzo niekonstruktywne i krótkie rozwiązanie:

osemka( _, _, _ ).

A wszystko przez błąd sprawdzaczki :-)

Zabieram się do pisania rozwiązania zgodnego z treścią zadania.