[A&C + ProgPar]Evaluatievorm

Forum van 2de Bachelor Informatica.

Moderator: Praesidium

User avatar
Nickman
Posts: 391
Contact:

Post#16 » Mon May 28, 2007 11:29 pm

Sudoku :

Code: Select all


/*
Oefening 5 :

Implement a sudoku-solver (9x9).
Try to make as much use as possible of recursion, i.e.
don't just take the straightforward option where every
position is assigned a different variable, and all
constraints are based on enumerating these
variables...
Hint: Represent a board as a list of rows, which are lists
of numbers.


*/
/*
Voostelling:
[[_, _, _, _, _, _, _, _, _], [_, _, _, _, _, _, _, _, _], [_, _, _, _, _, _, _, _, _], [_, _, _, _, _, _, _, _, _], ...]

*/

element(X) :- L = [1, 2, 3, 4, 5, 6, 7, 8, 9], member(X, L).

solve_sudoku(G,S) :- build_sudoku(G, S), check_sudoku(S), pretty_sudo_print(S).

build_sudoku([],[]).
build_sudoku([OH|OT], [H|T]) :- build_row(OH, H), check_row(H), build_sudoku(OT, T).

build_row([], []).
build_row([OH|OT], [H|T]) :- element(OH), H is OH, build_row(OT, T).

%Controleer heel de sudoku (rijen moeten niet gecontroleerd worden, deze worden al in het opstellen gecontroleerd
check_sudoku(A) :- check_all_columns(A), !, check_all_blocks(A).

%Controleer of alle blokken correct zijn
check_all_blocks([]).
check_all_blocks([A,B,C|Rest]) :- check_three_blocks([A, B, C]), !, check_all_blocks(Rest).

check_three_blocks([[],[],[]]).
check_three_blocks([[A,B,C|R1],[D,E,F|R2],[G,H,I|R3]]) :- check_one_block([A, B, C, D, E, F, G, H, I]), !, check_three_blocks([R1, R2, R3]).

%kan eventueel weg
check_one_block(A) :- all_different(A).

%Controleer of alle kolommen correct zijn
check_all_columns([[],[],[],[],[],[],[],[],[]]).
check_all_columns([[H1|T1],[H2|T2],[H3|T3],[H4|T4],[H5|T5],[H6|T6],[H7|T7],[H8|T8],[H9|T9]]) :-
check_column([H1,H2,H3,H4,H5,H6,H7,H8,H9]), !, check_all_columns([T1,T2,T3,T4,T5,T6,T7,T8,T9]).

%kan eventueel weg
check_column(C) :- all_different(C).

%Controleer of alle rijen correct zijn
check_all_rows([]).
check_all_rows([H|T]) :- check_row(H), !, check_all_rows(T).

%kan eventueel weg
check_row(R) :- all_different(R).

%Ga na of alle ellementen in de gegeven lijst verschillend zijn of niet.
all_different([]).
all_different([H|T]) :- \+ member(H, T), !, all_different(T).

% Dit heb ik gevonden op het internet
% wordt enkel gebruikt voor output
% pretty printing \0/
pretty_sudo_print([]).
pretty_sudo_print([A,B,C|T]) :-
nl,printsudorow(A),
printsudorow(B),
printsudorow(C),
pretty_sudo_print(T).

printsudorow([]) :- nl.
printsudorow([A,B,C|T]) :-
writerepv(A),tab(1),
writerepv(B),tab(1),
writerepv(C),tab(3),
printsudorow(T).

writerepv(X) :-
var(X),!,write(' ').

writerepv(X) :-
write(X).
Dan moet ik toch nog die slides gaan afprinten voor het examen ofwa?
En ik hoop dat het in die computerklas is, want als ge da ni kunt teste werkt da toch nooit... :D.
alhoewel het toch maar logisch denken is...

Maar moogt ge bij da praktisch examen dan ook u oefeningen gebruiken die ge al hebt gemaakt of niet?
Webmaster of http://www.bwf.be
Make it idiot proof and someone will make a better idiot!

[quote="zarry"][url=http://www.winak.be/forum/viewtopic.php?p=12475#12475]wickaaaah! thcikci tschiki paaaauuuuw wicked-original![/url][/quote]

User avatar
slimmy
Prosenior
Posts: 3130
Contact:

Post#17 » Tue May 29, 2007 9:03 am

Oh crap, programmeer paradigmas is OOK openboek? :cry: Hoe leerde nu zoiets...

valt er trouwens iets weg met alg en comp ?

User avatar
Norfolk
WOZ
Posts: 780
Contact:

Post#18 » Wed Jun 06, 2007 6:56 pm

Shinta wrote:
slimmy wrote:geeft er iemand de oplossing van die PROLOG oefening met die nationaliteit van de eigenaar van de zebra vinden?

Vanachter slides 4...

Code: Select all

/*
Auteur: Kristof Overdulve
Studentennr.: 20051392
Datum: 27/04/2007
Sessie 4 Prolog
*/

%Exercise 1
tran(eins,one).
tran(zwei,two).
tran(drei,three).
tran(vier,four).
tran(fuenf,five).
tran(sechs,six).
tran(sieben,seven).
tran(acht,eight).
tran(neun,nine).

listtran([], []).
listtran([Q|T1], [A|T2]) :- tran(Q, A), listtran(T1, T2).
listtran(T1, T2) :- listtran(T2, T1).

%Exercise 2
twice([], []).
twice([H|T1], [H, H|T2]) :- twice(T1, T2).

%Exercise 3
equals([], []).
equals([H|T1], [H|T2]) :- equals(T1, T2).
palindrome(T1) :- reverse(T1, A), equals(T1, A).

%Exercise 4
zebra(Zebraowner) :- Street = [H1, H2, H3],
member(house(red, _, _), Street),
member(house(blue, _, _), Street),
member(house(green, _, _), Street),
member(house(red, englishman, _), Street),
member(house(_, spanish, jaguar), Street),
sublist([house(_, _, snail), house(_, japanese, _)], Street),
sublist([house(blue, _, _), house(_, _, snail)], Street),
member(house(_, Zebraowner, zebra), Street).

%define a sublist
sublist(SubList, List) :- append(_, Suffix, List),
append(SubList, _, Suffix).
Shinta, met mijn code kom ik het volgende uit

Code: Select all

1 ?- zebra(X).
[house(red, englishman, snail), house(blue, spanish, jaguar), house(green, japanese, zebra)]

X = japanese ;
[house(red, englishman, snail), house(blue, japanese, zebra), house(green, spanish, jaguar)]

X = japanese ;
[house(red, englishman, snail), house(green, spanish, jaguar), house(blue, japanese, zebra)]

X = japanese ;
[house(red, englishman, snail), house(green, japanese, zebra), house(blue, spanish, jaguar)]

X = japanese ;
[house(green, spanish, jaguar), house(red, englishman, snail), house(blue, japanese, zebra)]

X = japanese ;

No
Bij jou enkel:

Code: Select all

[house(blue, spanish, jaguar), house(red, englishman, snail), house(green, japanese, zebra)]

X = japanese ;

No
Er is dus nog iets fout in jou code. Datgene dat fout is dat is uw sublist, of toch datgene waarvoor je het gebruikt. Als de japanner in het rechtse huis woont, en de snailkeeper in het linkse, met dus nog een huis ertussen, dan woont de japanner nog steeds rechts van de snailkeeper. Bij jou is dat enkel als deze er VLAK naast woont :)

Maar dat het een japanner is blijft wel correct :) Dus het is eigenlijk maar een klein schoonheidsfoutje :P

User avatar
Shinta
WOZ
Posts: 1122

Post#19 » Wed Jun 06, 2007 11:47 pm

Sublist was gedownload vant internet ;) so damn you mister internet!

Programmeerparadigmas is ook openboek ja, dat leren is inderdaad vrij, hmm, lame, vooral da van prolog wat zo eenvoudig is als iets.
Ma kben er bna zeker van da bij da theoretisch gedeelte die ga vrage om die proof trees op te stelle vo logisch programmeren.

Oefeningen zijn in computerklas. Almaal op de voormidag.
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

User avatar
Norfolk
WOZ
Posts: 780
Contact:

Post#20 » Thu Jun 07, 2007 12:19 am

Shinta wrote:Oefeningen zijn in computerklas. Almaal op de voormidag.
Dit was antwoord van pieter van gorp:

> Ten eerste vroeg ik mij af hoe het praktijkgedeelte er zou uitzien?
Het praktisch gedeelte zal hoofdzakelijk bestaan op een aantal gesloten invulvragen. Bovendien moet je kleine stukjes programma code kunnen opleveren op papier. Hier wordt je niet afgestraft voor eventuele syntaxfoutjes.

User avatar
slimmy
Prosenior
Posts: 3130
Contact:

Post#21 » Thu Jun 07, 2007 8:08 am

Norfolk wrote:
Shinta wrote:Oefeningen zijn in computerklas. Almaal op de voormidag.
Het praktisch gedeelte zal hoofdzakelijk bestaan op een aantal gesloten invulvragen. Bovendien moet je kleine stukjes programma code kunnen opleveren op papier. Hier wordt je niet afgestraft voor eventuele syntaxfoutjes.
wa ist nu? :)

User avatar
Norfolk
WOZ
Posts: 780
Contact:

Post#22 » Thu Jun 07, 2007 9:47 am

Weet ik veel, weet niet waar Shinta zijn stuk vandaan haalde. Hetgene ik typte komt van pieter van gorp :)

User avatar
Shinta
WOZ
Posts: 1122

Post#23 » Thu Jun 07, 2007 11:50 am

Norfolk wrote:Weet ik veel, weet niet waar Shinta zijn stuk vandaan haalde. Hetgene ik typte komt van pieter van gorp :)
Van mij komt van den Dirk ... de Pieter zen antwoord wast recentste dus da zal wel juister zijn zeker ...

2e Bachelor is qua organisatie wel ni zo sterk eilijk he ..
Remember remember the fifth of November
Gunpowder, treason and plot.
I see no reason why gunpowder, treason
Should ever be forgot...

User avatar
EagleEye812
Posts: 406

Post#24 » Mon Jun 11, 2007 11:11 am

diene zei da toch
Voor Programmeerparadigma's beginnen we met een schriftelijk theorie-examen (open boek), gevolgd door een deel over de oefeningen. Voor dat laatste deel probeer ik vanaf 11.00 lokaal G025 te reserveren, maar ik heb nog geen bevestiging. Desnoods kan ook dat laatste deel schriftelijk, omdat er toch geen ruimte is om erg grote opdrachten te geven. In elk geval blijft het hele examen op één halve dag (21 juni, 9.00-13.00).
hij heeft gewoon dat lokaal niet kunnen reserveren dus is hij teruggevallen op plan B :p
[quote="zarry"][url=http://www.winak.be/forum/viewtopic.php?p=12475#12475]wickaaaah! thcikci tschiki paaaauuuuw wicked-original![/url][/quote]

Return to “2de Bachelor”

Who is online

Users browsing this forum: No registered users and 55 guests