March 2010 Exam Solutions
<< | OtherProjectsTrailIndex | >>
MazeBug
import info.gridworld.grid.*;
import info.gridworld.actor.*;
import java.util.ArrayList;
public class MazeBug extends Bug
{
//part a
public boolean isValidGrid()
{
Grid<Actor> gr =getGrid();
if (gr==null)
return false;
ArrayList<Location> occupiedLocs = gr.getOccupiedLocations();
for (Location loc: occupiedLocs)
{
Actor a = gr.get(loc);
if (!(a instanceof Rock || a instanceof Flower) && a!=this)
return false;
}
return true;
}
public void act()
{
if (canMoveLeft())
moveLeft();
else super.act();
}
//part b
public void moveLeft()
{
setDirection(getDirection() + Location.LEFT);
move();
}
//part c
public boolean canMoveLeft()
{
Grid gr = getGrid();
if (gr == null)
return false;
Location loc = getLocation();
Location next =
loc.getAdjacentLocation(getDirection() - 90);
Location corner = loc.getAdjacentLocation(getDirection() - 135);
return gr.isValid(next) &&
!(gr.get(next) instanceof Rock) &&
(!gr.isValid(corner) ||gr.get(corner) instanceof Rock);
}
//part d
public void turn()
{
super.turn();
super.turn();
}
}
ScoreUp
public class ScoreUpTest
{
//part a
public static int scoreUp(String[] key, String[] answers) {
int score=0;
for (int i=0; i<key.length; i++)
if (key[i].equals(answers[i]))
score+=4;
else if (!answers[i].equals("?"))
score--;
return score;
}
//part b
public static String[] split(String s)
{
String[] result=new String[s.length()];
for (int i=0; i<s.length(); i++)
result[i]=s.substring(i,i+1);
return result;
}
public static int scoreUp(String key, String answers)
{
String[] keyArray=split(key);
String[] answerArray = split(answers);
return scoreUp(keyArray, answerArray);
}
public static void main(String[] args)
{
String[] key1={"a", "a", "b", "b"};
String[] six={"a", "c", "b", "c"};
String[] elf={"a", "a", "b", "c"};
String[] sixteen={"a", "a", "b", "b"};
String[] seven={"a", "a", "?", "c"};
System.out.println("Part (a) Test:");
System.out.println("Should be 6->"+scoreUp(key1, six) );
System.out.println("Should be 11->"+scoreUp(key1, elf) );
System.out.println("Should be 16->"+scoreUp(key1, sixteen) );
System.out.println("Should be 7->"+scoreUp(key1, seven) );
System.out.println("Part (b) Test:");
String key="aabb";
int abbyScore = scoreUp(key, "acbc");
int beckyScore = scoreUp(key, "aabc");
int clarissaScore = scoreUp(key, "aabb");
int darlaScore = scoreUp(key, "aa?c");
System.out.println("Should be 6->"+abbyScore);
System.out.println("Should be 6->"+beckyScore);
System.out.println("Should be 6->"+clarissaScore);
System.out.println("Should be 6->"+darlaScore);
}
}
