Page 1 of 1

[ProgPara] Oplossingen

Posted: Sun May 27, 2007 12:00 pm
by slimmy
Allez, we kunnen ni blijven praten in de alg en comp thread over programmeer paradigmas...

shinta vroeg mij de oplossing van de sudoku. Eerst een disclaimer: het ding werkt ni zo goe, en is slecht geprogrammeert, dus geen gezaag van: da's verkeerd :D als ge ook een oplossing hebt, please post

Code: Select all

uniek(X,[]).
uniek(X, [H|T]) :- (X =\= H), uniek(X,T).

checkLine([]).
checkLine([X | Rest]) :-
checkLine(Rest),
member(X,[1,2,3,4,5,6,7,8,9]),
uniek(X, Rest).

checkLines([]).
checkLines([X | Rest]) :-
checkLines(Rest),
checkLine(X).

turnAround([[],[],[],[],[],[],[],[],[]],[]).
turnAround([[A|AS],[B|BS],[C|CS],[D|DS],[E|ES],[F|FS],[G|GS],[H|HS],[I|IS]], X) :-
turnAround([AS,BS,CS,DS,ES,FS,GS,HS,IS], Y),
append([[A,B,C,D,E,F,G,H,I]],Y,X).

checkSudoku(Sud) :-
checkLines(Sud),
turnAround(Sud,RevSud),
checkLines(RevSud),
checkBlocks(Sud).

checkBlocks(Sud) :-
Sud = [
[S11,S12,S13,S14,S15,S16,S17,S18,S19],
[S21,S22,S23,S24,S25,S26,S27,S28,S29],
[S31,S32,S33,S34,S35,S36,S37,S38,S39],
[S41,S42,S43,S44,S45,S46,S47,S48,S49],
[S51,S52,S53,S54,S55,S56,S57,S58,S59],
[S61,S62,S63,S64,S65,S66,S67,S68,S69],
[S71,S72,S73,S74,S75,S76,S77,S78,S79],
[S81,S82,S83,S84,S85,S86,S87,S88,S89],
[S91,S92,S93,S94,S95,S96,S97,S98,S99]
],
checkLine([S11,S12,S13,S21,S22,S23,S31,S32,S33]),
checkLine([S41,S42,S43,S51,S52,S53,S61,S62,S63]),
checkLine([S71,S72,S73,S81,S82,S83,S91,S92,S93]),
checkLine([S14,S15,S16,S24,S25,S26,S34,S35,S36]),
checkLine([S44,S45,S46,S54,S55,S56,S64,S65,S66]),
checkLine([S74,S75,S76,S84,S85,S86,S94,S95,S96]),
checkLine([S17,S18,S19,S27,S28,S29,S37,S38,S39]),
checkLine([S47,S48,S49,S57,S58,S59,S67,S68,S69]),
checkLine([S77,S78,S79,S87,S88,S89,S97,S98,S99]).

solve(Sud) :-

checkSudoku(Sud),
pretty_print(Sud).


pretty_print([]).
pretty_print([H|T]) :-
write(H),nl,
pretty_print(T).

testSudoku2 :- solve([
[8,6,1,4,5,9,7,2,3],
[_,5,_,3,1,7,6,_,8],
[_,9,_,6,_,2,_,1,4],
[2,_,_,8,3,5,4,7,9],
[9,8,4,2,7,6,1,3,5],
[3,_,5,1,_,_,_,6,2],
[5,4,7,9,2,1,3,8,6],
[1,_,9,5,6,8,_,4,7],
[6,2,8,7,4,3,9,5,1]
]).

Posted: Sun May 27, 2007 12:48 pm
by Shinta
Wrom is je oplossing slecht geprogrammeerd ? :)

Door jou oplossing te vergelijke me de mijn hebben men fout gevonden.. dus nu werkt de mijne ook :p merci !

Posted: Sun May 27, 2007 1:27 pm
by slimmy
Allez dan ;) blij dat het ding toch geholpen heeft :D

kvind Prolog wel leuk eigenlijk

Posted: Sun May 27, 2007 5:35 pm
by Shinta
slimmy wrote:Allez dan ;) blij dat het ding toch geholpen heeft :D

kvind Prolog wel leuk eigenlijk
ja sni slecht, tzou handig zijn dage da zou kunne imbedde in general purpose languages zodage makkelijk AI kunt programmere. Der zal wel zoiets bestaan.

Haskell vink dan weral sucke :p

Posted: Sun May 27, 2007 7:21 pm
by Jinx
google is your friend!

http://www.declarativa.com/interprolog/


(da was den 1e link.. der zulle der nog wel bestaan)

Posted: Mon May 28, 2007 9:52 am
by Shinta
Jinx wrote:google is your friend!

http://www.declarativa.com/interprolog/


(da was den 1e link.. der zulle der nog wel bestaan)
hehe, nice :) kneem aan da zoiets wel gebruikt wordt int dagelijkse leven. Khad dit moeten weten bij de laatste aspects challenge :d kzou dan iig wel de kortste oplossing hebben gehad.

Posted: Mon May 28, 2007 11:31 am
by slimmy
Btw jinx hadde gelle op KDG bij international courses geen stuk over Prolog? :) ik stel mij daar zoiets van voor

Posted: Mon May 28, 2007 11:51 am
by Jinx
wij hadden prolog ja... maar ni echt hoogdravend ze.
ma zoals kristof zegt... tis perfect om alles waarvoor een 'oplossing' me bepaalde voorwaarden moet zijn te vergemakkelijken.