1.1
void main() {
vor();
vor();
linksUm();
linksUm();
linksUm();
vor();
vor();
nimm();
linksUm();
vor();
vor();
vor();
linksUm();
linksUm();
linksUm();
vor();
vor();
nimm();
}
1.2
void main() {
vor3();
vor3();
vor();
rechtsUm();
nimm();
nimm();
nimm();
vor();
vor();
vor();
vor();
rechtsUm();
vor();
vor3();
kehrt();
nimm();
nimm();
vor3();
rechtsUm();
vor3();
gib();
gib();
gib();
gib();
gib();
kehrt();
vor();
}
void rechtsUm() {
kehrt();
linksUm();
}
void kehrt() {
linksUm();
linksUm();
}
void vor3() {
vor();
vor();
vor();
}
1.3
void main() {
vor();
rechtsUm();
reihe();
linksUm();
reihe();
linksUm();
reihe();
rechtsUm();
reihe();
rechtsUm();
reihe();
linksUm();
reihe();
linksUm();
reihe();
rechtsUm();
vor();
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void reihe() {
vor();
vor();
}
1.4
void main() {
nimm();
vor();
rechtsUm();
reihe();
linksUm();
reihe();
linksUm();
reihe();
rechtsUm();
reihe();
rechtsUm();
reihe();
linksUm();
reihe();
linksUm();
reihe();
rechtsUm();
reihe();
rechtsUm();
reihe();
nimm();
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void reihe() {
nimm();
vor();
nimm();
vor();
}
1.5
void main() {
nimmWennDa();
vor();
rechtsUm();
reihe();
linksUm();
reihe();
linksUm();
reihe();
rechtsUm();
reihe();
rechtsUm();
reihe();
linksUm();
reihe();
linksUm();
reihe();
rechtsUm();
reihe();
rechtsUm();
reihe();
nimmWennDa();
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void reihe() {
nimmWennDa();
vor();
nimmWennDa();
vor();
}
void nimmWennDa() {
if (kornDa()) {
nimm();
}
}
1.6
void main() {
reihe();
rechtsUm();
vor();
rechtsUm();
reihe();
linksUm();
vor();
linksUm();
reihe();
rechtsUm();
vor();
rechtsUm();
reihe();
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void reihe() {
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
}
void nimmAlle() {
nimmWennDa();
nimmWennDa();
nimmWennDa();
}
void nimmWennDa() {
if (kornDa()) {
nimm();
}
}
2.1
void main() {
while (vornFrei()) {
vor();
}
nimm();
}
2.2
void main() {
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
vor();
nimmAlle();
}
void nimmAlle() {
while (kornDa()) {
nimm();
}
}
2.3
void main() {
nimmAlle();
while (vornFrei()) {
vor();
nimmAlle();
}
}
void nimmAlle() {
while (kornDa()) {
nimm();
}
}
2.4
void main() {
nimmAlle();
vor();
rechtsUm();
reihe();
linksUm();
while (vornFrei()) {
reihe();
linksUm();
reihe();
rechtsUm();
reihe();
rechtsUm();
reihe();
linksUm();
}
nimmAlle();
}
void reihe() {
nimmAlle();
vor();
nimmAlle();
vor();
}
void kehrt() {
linksUm();
linksUm();
}
void rechtsUm() {
kehrt();
linksUm();
}
void nimmAlle() {
while (kornDa()) {
nimm();
}
}
2.5
void main() {
vorBisLueckeRechts();
rechtsUm();
vor();
vorBisLueckeRechts();
rechtsUm();
vor();
}
void vorBisLueckeRechts() {
while (!rechtsFrei()) {
vor();
}
}
boolean rechtsFrei() {
rechtsUm();
boolean res = vornFrei();
linksUm();
return res;
}
void kehrt() {
linksUm();
linksUm();
}
void rechtsUm() {
kehrt();
linksUm();
}
2.6
void main() {
vorBisLueckeRechts();
rechtsUm();
vor();
linksUm();
vorBisWand();
rechtsUm();
vor();
linksUm();
vor();
vorBisLueckeLinks();
linksUm();
vor();
rechtsUm();
vorBisWand();
linksUm();
vor();
rechtsUm();
vor();
vorBisLueckeRechts();
rechtsUm();
vor();
linksUm();
vorBisWand();
rechtsUm();
vor();
linksUm();
vor();
vorBisLueckeLinks();
linksUm();
vor();
rechtsUm();
vorBisWand();
}
void vorBisLueckeRechts() {
while (!rechtsFrei()) {
vor();
}
}
void vorBisLueckeLinks() {
while (!linksFrei()) {
vor();
}
}
void vorBisWand() {
while (vornFrei()) {
vor();
}
}
boolean rechtsFrei() {
rechtsUm();
boolean res = vornFrei();
linksUm();
return res;
}
boolean linksFrei() {
linksUm();
boolean res = vornFrei();
rechtsUm();
return res;
}
void kehrt() {
linksUm();
linksUm();
}
void rechtsUm() {
kehrt();
linksUm();
}
3.1
void main() {
int koerner = zaehleKoerner();
vor(koerner);
}
int zaehleKoerner() {
int anzahl = 0;
while (!maulLeer()) {
gib();
anzahl++;
}
int temp = anzahl;
while (temp > 0) {
nimm();
temp--;
}
return anzahl;
}
void vor(int num) {
while (num > 0) {
vor();
num--;
}
}
3.2
void main() {
while (true) {
vor(3);
int koerner = zaehleKoerner();
if (koerner == 1) {
drehe(3);
} else if (koerner == 2) {
drehe(1);
} else if (koerner == 3) {
break;
}
}
}
int zaehleKoerner() {
int anzahl = 0;
while (kornDa()) {
nimm();
anzahl++;
}
int temp = anzahl;
while (temp > 0) {
gib();
temp--;
}
return anzahl;
}
void vor(int num) {
while (num > 0) {
vor();
num--;
}
}
void drehe(int num) {
while (num > 0) {
linksUm();
num--;
}
}
3.3
void main() {
vor(11);
drehe(3);
vor(7);
drehe(3);
vor(2);
drehe(3);
vor(3);
drehe(1);
vor(2);
drehe(1);
vor(3);
drehe(3);
vor(7);
drehe(3);
vor(3);
nimm();
}
void vor(int num) {
while (num > 0) {
vor();
num--;
}
}
void drehe(int num) {
while (num > 0) {
linksUm();
num--;
}
}
3.4
void main() {
int laenge = vorBisWandZaehlen();
drehe(3);
int breite = vorBisWandZaehlen();
gib(laenge * breite);
drehe(3);
vorBisWandZaehlen();
drehe(3);
vorBisWandZaehlen();
drehe(3);
}
int vorBisWandZaehlen() {
int schritte = 1;
while (vornFrei()) {
vor();
schritte++;
}
return schritte;
}
void drehe(int num) {
while (num > 0) {
linksUm();
num--;
}
}
void gib(int num) {
while (num > 0) {
gib();
num--;
}
}
3.5
void main() {
vorBisWand();
drehe(2);
addiereSpalte();
vor();
addiereSpalte();
vor();
addiereSpalte();
vor();
drehe(2);
}
void drehe(int num) {
while (num > 0) {
linksUm();
num--;
}
}
void vorBisWand() {
while (vornFrei()) {
vor();
}
}
void addiereSpalte() {
drehe(3);
int anzahl = 0;
vor();
anzahl += zaehleKoerner();
vor();
anzahl += zaehleKoerner();
vor();
anzahl += zaehleKoerner();
drehe(2);
vorBisWand();
lege(anzahl);
drehe(3);
}
int zaehleKoerner() {
int anzahl = 0;
while (kornDa()) {
nimm();
anzahl++;
}
int temp = anzahl;
while (temp > 0) {
gib();
temp--;
}
return anzahl;
}
void lege(int anzahl) {
while (anzahl > 0) {
gib();
anzahl--;
}
}
3.6
void main() {
vorBisWand();
drehe(2);
int rest = addiereSpalte(0);
vor();
rest = addiereSpalte(rest);
vor();
rest = addiereSpalte(rest);
vor();
lege(rest);
drehe(2);
}
void drehe(int num) {
while (num > 0) {
linksUm();
num--;
}
}
void vorBisWand() {
while (vornFrei()) {
vor();
}
}
int addiereSpalte(int uebertrag) {
drehe(3);
int anzahl = uebertrag;
vor();
anzahl += zaehleKoerner();
vor();
anzahl += zaehleKoerner();
vor();
anzahl += zaehleKoerner();
drehe(2);
vorBisWand();
lege(anzahl % 10);
drehe(3);
return (anzahl - (anzahl % 10)) / 10;
}
int zaehleKoerner() {
int anzahl = 0;
while (kornDa()) {
nimm();
anzahl++;
}
int temp = anzahl;
while (temp > 0) {
gib();
temp--;
}
return anzahl;
}
void lege(int anzahl) {
while (anzahl > 0) {
gib();
anzahl--;
}
}