donderdag 23 juni 2011

Dag 4

Onze laatste officiële werkdag! Vandaag zijn wij van plan om nog een methode te implementeren en de andere methoden nog efficiënter te maken.

Wij hebben op deze laatste dag zelf een methode verzonnen. Na wat hevige discussies zijn we erop uitgekomen een 'anti-chaos' methode te implementeren. Deze methode zal proberen een zo optimaal mogelijke oplossing te geven door alleen een beweging toe te passen als deze het aantal vakjes dat op de juiste plek zit vergroot.

Het is duidelijk dat dit niet vaak tot een oplossing zal leiden. Dit komt doordat er ergens tijdens het oplossen waarschijnlijk een beweging gemaakt worden moet die de chaos vergroot om vervolgens een betere toestand te bereiken. Maar, deze optie wordt natuurlijk uitgesloten in ons programma.

Volgens ons werkt dit programma wel heel goed met de laatste drie bewegingen, dus hebben wij bedacht dit in iedere final predicaat in de andere methoden te gebruiken. Zo is ons werk toch niet voor niets geweest.

Verder hebben wij nog één klein probleem opgelost. Wat in de door de programma's gegenereerde oplossingen vaak voorkwam waren twee oplossingen, bijvoorbeeld [rrr, u, d, r, l] en [rrr, u, d, l, r]. Hier kun je zien dat de laatste twee stappen in twee verschillende volgorden uitgevoerd kunnen worden en nog steeds tot dezelfde oplossing leiden. Wij hebben een predicaat geschreven (prior/2) waarbij de voorkeur van volgorde als volgt wordt: eerst r dan l, eerst u dan d en eerst f dan b. Door dit predicaat toe te passen binnen ieder next predicaat, hebben wij de 'dubbele' oplossing uit de output weten te verwijderen.