Solution 2.1:
Number ::= -? PDigit (Underscore Digit)* | 0
Underscore ::= _*
PDigit ::= 1 | … | 9
Digit ::= 0 | PDigit
Solution 2.2:
a+ : a a*
1. (a | c | … | z)*
2. (a|b) letter* c
3. (a letter* b) | (b letter* a)
Solution 2.3:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
public class Meiern extends MiniJava { public static void main(String[] args) { int number, lastNumber; // Aktueller und letzter Wurf int firstDraw, secondDraw; // Wuerfelaugen int playerNumber; // Spieler (0), Computer (1) int output; lastNumber = playerNumber = 0; number = 1; while (number > lastNumber) { lastNumber = number; // Zweimal wuerfeln: firstDraw = dice(); secondDraw = dice(); //System.out.print("" + firstDraw + secondDraw); // Wuerfelaugen zu einer zweistelligen Zahl kombinieren: if (firstDraw > secondDraw) { number = firstDraw * 10 + secondDraw; } else if (secondDraw > firstDraw) { number = firstDraw + secondDraw * 10; } else { // Pasch ist mehr Wert als ein normaler Wurf number = firstDraw * 100 + secondDraw * 10; } //System.out.println(" " + number); if (number == 21) { // 21 => "Meier" number = number * 1000; } output = number; while (output > 100) { output = output / 10; } if (playerNumber == 0) { write("Du wuerfelst " + output); } else { write("Computer wuerfelt " + output); } // Naechster Spieler: playerNumber = 1 - playerNumber; } if (playerNumber == 0) { write("Du hast gewonnen"); } else { write("Computer hat gewonnen"); } } } |
Solution 2.4:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
public class LustigeSieben extends MiniJava{ public static void main(String[] args){ //Initialisierung int guthaben=100; write("Lass uns spielen! " + "Du hast "+guthaben+" Chips zur Verfuegung."); // Spielablauf while(guthaben>0){ // Einsatz int einsatz=readInt("Wieviel Chips willst Du setzen?"); if(einsatz==0){ //Beenden des Spiels write("Du gewinnst mit "+guthaben+" Chips. " + "Herzlichen Glueckwunsch."); return; } while(einsatz<0 || einsatz>guthaben){ //Einsatz zu hoch oder zu klein if(einsatz>guthaben){ einsatz=readInt("Soviele Chips hast Du nicht mehr. " + "Dein Guthaben betraegt "+guthaben+". " + "Was ist dein Einsatz?"); } if(einsatz<0){ einsatz=readInt("Ungueltige Eingabe." + "Dein Guthaben betraegt "+guthaben+". " + "Was ist dein Einsatz?"); } if(einsatz==0){ //Beenden des Spiels write("Du gewinnst mit "+guthaben+" Chips. " + "Herzlichen Glueckwunsch."); return; } } // Feld int feld=readInt("Auf welches Feld willst Du setzen?"); if(feld==0){ //Beenden des Spiels write("Du gewinnst mit "+guthaben+" Chips. " + "Herzlichen Glueckwunsch."); return; } while(feld>12||feld<2){ // Feld existiert nicht feld=readInt("Es gibt nur die Felder 2 bis 12. " + "Auf welches Feld willst Du setzen?"); if(feld==0){ // Beenden des Spiels write("Du gewinnst mit "+guthaben+" Chips. " + "Herzlichen Glueckwunsch."); return; } } // Wuerfeln write("Rien ne va plus. " + "Du hast "+einsatz+" Chips auf die " + feld +" gesetzt."); int wurf = dice()+dice(); write("Die Wuerfel sind gefallen: "+wurf+" gewinnt."); //Gewinnberechnung int gewinn = 0; if(wurf==feld){ gewinn = einsatz*2; // 2. Fall if(wurf == 7) gewinn = gewinn + einsatz; // 1. Fall } else{ if((wurf<7&&feld<7)||(wurf>7&&feld>7)){ gewinn = einsatz; // 3. Fall } } guthaben=guthaben-einsatz+gewinn; write("Du bekommst "+gewinn+" Chips. " + "Dein Guthaben betraegt nun: "+guthaben + " Chips."); if(guthaben==0){ write("Du hast leider alles verloren."); return; } } } } |