import stanford.karel.*;
public class MidpointFindingKarel extends SuperKarel {
public void run() {
if(frontIsBlocked()) {
putBeeper();
}
else {
findMidPoint();
}
}
private void findMidPoint() {
while (noBeepersPresent()) {
putTwoBeeper();
back();
pickBeeper();
if(noBeepersPresent()) {
putBeeper();
move();
}
}
}
private void putTwoBeeper() {
turnAround();
if(frontIsClear()) {
move();
pickBeeper();
turnAround();
move();
putBeeper();
}
else {
turnAround();
putBeeper();
}
move();
while(frontIsClear() && noBeepersPresent()) {
move();
}
if (beepersPresent()){
pickBeeper();
turnAround();
move();
putBeeper();
turnAround();
}
else {
putBeeper();
}
}
public void back(){
turnAround();
move();
while(noBeepersPresent() && frontIsClear()){
move();
}
if(frontIsBlocked() && noBeepersPresent()){
turnAround();
while(noBeepersPresent()){
move();
}
}
turnAround();
}
}