int feldBreite=0; int anzahlUmlaeufe=0; int vorhandenekoerner=0; int benoetigteKoerner=0; void main() { vorhandenekoerner=testeVorhandeneKoerener(); feldBreite=testeFeldBreite(); geheMitte(); while (vorhandenekoerner< berechneBenoetigteKoerner()){ feldBreite=feldBreite-2; } anzahlUmlaeufe=(feldBreite-1/2); legeRaute(); } void laufeBisZurWand() { while (vornFrei()){ vor(); } } int testeVorhandeneKoerener(){ int zaehler=0; while (!maulLeer()){ gib(); zaehler++; } while (kornDa()){ nimm(); } return zaehler; } int testeFeldBreite(){ int zaehler=0; laufeBisZurWand(); linksUm(); laufeBisZurWand(); linksUm(); while (vornFrei()){ vor(); zaehler++; } linksUm(); return zaehler; } int berechneBenoetigteKoerner(){ int i=0; int benoetigteKoerner=1; for(i=0;i<=(feldBreite-1/2);i++){ benoetigteKoerner=benoetigteKoerner+i*4; } return benoetigteKoerner; } void geheMitte(){ int i=0; int j=0; for (i=0;i<=((feldBreite-1)/2) ;i++){ vor(); } linksUm(); for (j=0;j<=((feldBreite-1)/2) ;j++){ vor(); } } void rechtsUm(){ linksUm(); linksUm(); linksUm(); } void geheDiagonal(){ vor(); linksUm(); vor(); rechtsUm(); gib(); } void legeRaute(){ int i=0; int j=0; int k=0; gib(); for (i=1;i<=anzahlUmlaeufe;i++){ if(vornFrei()){ vor(); linksUm(); for(j=1;j<=4;j++){ for (k=1;k<=i;k++){ geheDiagonal(); } linksUm(); } rechtsUm(); } } }