"Plin plin plon 1"

plin plin plon 2

plin plin plon 3

#include < superkarel.h>

void pick_all() {
  while(beepers_present()) {
    pick_beeper();
  }
}

void find_south_east() {
  while(!facing_east()) turn_left();
  while(front_is_clear()) step();
  while(!facing_south()) turn_left();
  while(front_is_clear()) step();
}

bool facing_vertical() {
  return facing_north() || facing_south();
}

void climb_stairs() {
  while(front_is_clear()) step();
  while(1) {
    turn_left();
    while(right_is_blocked()) {
      step();
    }
    turn_left();
    turn_left();
    turn_left();
    do {
      step();
      if(right_is_clear()) break;
      while(beepers_present()) pick_beeper();
    } while(front_is_clear());
    if(right_is_clear()) break;
  }
  turn_left();
  turn_left();
  step();
  turn_left();
  turn_left();
}

void olympics() {
  while(!facing_east()) turn_left();
  while(front_is_clear()) step();

  while(!beepers_present()) {
    turn_left();
    if(front_is_blocked()) turn_left();
    while(right_is_blocked()) {
      step();
      if(beepers_present()) return;
    }
    turn_left();
    turn_left();
    turn_left();
    do {
      step();
      if(beepers_present()) return;
    } while(right_is_blocked());
    turn_left();
    turn_left();
    turn_left();
    do {
      step();
      if(beepers_present()) return;
    } while(front_is_clear());
  }
}

void chessboard() {
  while(front_is_clear()) {
    step();
    put_beeper();
    if(front_is_clear()) {
      step();
      if(front_is_blocked()) {
        if(facing_east()) {
          turn_left();
        }
        else {
          turn_left();
          turn_left();
          turn_left();
        }
        if(front_is_blocked()) return;
        if(beepers_present()) {
          step();
          if(right_is_blocked()) { 
            turn_left();
          }
          else {
            turn_left();
            turn_left();
            turn_left();
          }
        }
      }
    } else {
      if(facing_east()) { 
        turn_left(); 
      }
      else {
        turn_left();
        turn_left();
        turn_left();
      }
      if(front_is_blocked()) return;
      if(beepers_present()) {
        step();
        if(right_is_blocked()) { 
          turn_left(); 
        }
        else {
          turn_left();
          turn_left();
          turn_left();
        }
      }
    }
  }
}

void x_mas() {
  turn_left();
  step();
  turn_left();
  turn_left();
  turn_left();
  while(right_is_clear() ) {
    step();
    if(front_is_blocked()) {
      turn_left();
      turn_left();
      turn_left();
      step();
      turn_left();
    }
  }
  while(right_is_blocked()) {
    put_beeper();
    turn_left();
    step();
    turn_left();
    turn_left();
    turn_left();
    step();
  }
  put_beeper();
  put_beeper();
  do {
    step();
    turn_left();
    turn_left();
    turn_left();
    if(front_is_blocked()) {
      turn_left();
      turn_left();
      turn_left();
      step();
      pick_beeper();
      turn_left();
      turn_left();
      while(!front_is_blocked()) {
        step();
      }
      return;
    }
    step();
    turn_left();
    put_beeper();
  } while(right_is_blocked());
}

void divide_even_beepers() {
  if(!beepers_present() && !beepers_in_bag()) {
    step();
  }
  pick_beeper();
  if(beepers_present()) {
    divide_even_beepers();
  }


  put_beeper();
  step();
  put_beeper();
  turn_left();
  turn_left();
  step();
  if(!beepers_in_bag()) {
    step();
    turn_left();
    turn_left();
    turn_off();
  }
  turn_left();
  turn_left();
}

bool no_beepers() {
  return !beepers_in_bag() && !beepers_present();
}

void find_center() {
  while(!beepers_present()) {
    put_beeper();
    while(front_is_clear()) {
      step();
      if(beepers_present()) {
        turn_left();
        turn_left();
        step();
        put_beeper();
        step();
        if(beepers_present()) {
          while(front_is_clear()) {
            if(beepers_present()) pick_beeper();
            step();
          } 
          if(beepers_present()) pick_beeper();
          turn_left();
          turn_left();
          while(!beepers_present()) {
            step();
          }
          step();
          while(beepers_present()) {
            pick_beeper();
            if(front_is_clear()) step();
          }
          turn_left();
          turn_left();
          while(!beepers_present()) {
            step();
          }
          pick_beeper();
          turn_left();
          turn_left();
          turn_left();
          return;
        }
      }
    }
    if(front_is_blocked()) {
      turn_left();
      turn_left();
      put_beeper();
      step();
    }
  }
}

void turn_to_south() {
  while(!facing_south()) turn_left();
}

void mark_empty_line() {
  while(front_is_clear()) {
    step();
    if(!beepers_present()) put_beeper();
  }
  turn_left();
  turn_left();
  while(front_is_clear()) {
    step();
    if(!beepers_present()) put_beeper();
  }
}

int main() {
  set_step_delay(10);
  turn_on("find_center.kw");
  find_center();
  turn_off();
  return 0;
}