faecher:informatik:oberstufe:java:aoc:aoc2021:day4:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
faecher:informatik:oberstufe:java:aoc:aoc2021:day4:start [07.12.2021 07:28] – [Aufgabe, Beispiele, Input] sbelfaecher:informatik:oberstufe:java:aoc:aoc2021:day4:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Tag 4: Bingo mit dem Riesenkraken ====== 
- 
-===== Aufgabe, Beispiele, Input ===== 
- 
-  * Aufgabe: https://adventofcode.com/2021/day/4 
-  * Input-Dateien: {{ d4.zip |}} 
-  * Ergebnis für die Datei ''d4i'': ++ Teil 1 | 50008 ++ ++Teil2 | 17408  ++ 
- 
-===== Tipp ==== 
- 
-Hier kann man objektorientiert modellieren:  
- 
-{{ :faecher:informatik:oberstufe:java:aoc:aoc2021:day4:bingo.png |}} 
- 
-Man kann eine Klasse ''bingoBoard'' verwenden, um die Boards zu speichern, eine Methode ''checkWin'' kann dann zrückgeben, ob ein Board nach einer neuen Zahl gewonnen hat. 
- 
-In ''day4'' hat mein zwei ArrayLists für die Bingozahlen und die Boards: 
- 
-<code java> 
-    // day4: bingo numbers and bingoboards 
-    ArrayList<Integer> bingoNumbers = new ArrayList<>(); 
-    ArrayList<bingoBoard> bingoBoards = new ArrayList<>(); 
-</code> 
- 
-Die ''bingoBoard''-Klasse hat die Felder als zweidimensionales Array von int-Werten: 
- 
-<code java> 
-public class bingoBoard 
-{ 
-    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen 
-    private int[][] bField; 
-    private int boardSize = 5; 
-    private int winningNumber; 
- 
-    /** 
-     * Konstruktor für Objekte der Klasse bingoBoard 
-     */ 
-    public bingoBoard() 
-    { 
-        bField = new int[boardSize][boardSize]; 
-    } 
-</code> 
- 
-Außerdem sind Methoden wie  
- 
-  * ''setBoardFieldValue(int x, int y, int value)'' 
-  * ''checkWin()'' 
-  * ''calcScore()'' 
-  * ''markNumber(int number)'' 
- 
-möglicherweise hilfreich. 
- 
-Das zentrale Problem ist die Verarbeitung des Inputs. Die erste Zeile muss in die bingoNumbers geparst werden, und die weiteren Zeilen, getrennt durch Leerzeilen geben jeweils ein Board. 
- 
-++++ Codegerüst zur Verarbeitung des Inputs | 
-<code java> 
-  public void parseInputToBoards () { 
-        this.bingoNumbers.clear(); 
-        this.bingoBoards.clear(); 
-        int lineNum = 0; 
- 
-        bingoBoard b = null; 
-        int fRow = 0; 
-        int fCol = 0; 
- 
-        for ( String[] line: input) { 
-            // Trim whitespaces 
-            line[0] = line[0].trim(); 
-            // first line holds bingo numbers 
-            if (lineNum == 0) { 
-                String[] temp = line[0].split(","); 
-                for(String t: temp) { 
-                    bingoNumbers.add(Integer.parseInt(t)); 
-                } 
-                System.out.println("Bingo Numbers: " + bingoNumbers); 
-            } else { 
-                // Empty line starts new board 
-                if (line[0].trim().isEmpty()) { 
-                     
-                    if ( b != null ) { 
-                        bingoBoards.add(b); 
-                    } 
-                    b=new bingoBoard(); 
-                    fRow = 0; 
-                } else { 
-                    String[] temp = line[0].split("\\s+"); 
-                    fCol = 0; 
- 
-                    for (String t: temp) { 
-                        b.setBoardFieldValue(fCol,fRow,Integer.parseInt(t)); 
-                        fCol++; 
- 
-                    } 
-                    fRow++; 
-                } 
-            } 
-            lineNum++; 
-        } 
-        // Add last board 
-        bingoBoards.add(b); 
-    } 
- 
-</code> 
-++++ 
  
  • faecher/informatik/oberstufe/java/aoc/aoc2021/day4/start.1638858509.txt.gz
  • Zuletzt geändert: 07.12.2021 07:28
  • von sbel