Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:java:aoc:aco2023:day1:start [01.12.2023 18:12] – [Hilfestellungen Variante 2] Frank Schiebel | faecher:informatik:oberstufe:java:aoc:aco2023:day1:start [12.11.2024 06:25] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Tag 1 ====== | ====== Tag 1 ====== | ||
+ | ===== Aufgabe ===== | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * Beispiele d1e1.txt, d1e2.txt | ||
+ | * Input d2i.txt. | ||
+ | ++++ Kontrollergebnisse | | ||
+ | * Eingabedatei d1i.txt: | ||
+ | * Teil 1 - '' | ||
+ | * Teil 2 - '' | ||
+ | ++++ | ||
< | < | ||
Zeile 157: | Zeile 167: | ||
Prinzipielles Vorgehen, um eine Zeile zu untersuchen: | Prinzipielles Vorgehen, um eine Zeile zu untersuchen: | ||
- | * Wandle die Zeile in ein Array aus Zeichen um: '' | + | * Wandle die Zeile in ein Array aus Zeichen um: '' |
* Betrachte jedes Zeichen in einer '' | * Betrachte jedes Zeichen in einer '' | ||
* Entscheide, ob das Zeichen eine Ziffer ist: '' | * Entscheide, ob das Zeichen eine Ziffer ist: '' | ||
Zeile 218: | Zeile 228: | ||
* Aufpassen muss man - wie schon in Teil 1 - dass man die passenden Typen für die gewünschten Operationen verwendet und diese wenn nötig passend umwandelt. | * Aufpassen muss man - wie schon in Teil 1 - dass man die passenden Typen für die gewünschten Operationen verwendet und diese wenn nötig passend umwandelt. | ||
- | Man kann zur Vereinfachung mit folgendem Array für die Zahlenorte | + | Man kann zur Vereinfachung mit folgendem Array für die Zahlenworte |
<code java> | <code java> | ||
Zeile 227: | Zeile 237: | ||
</ | </ | ||
- | Der " | + | Der " |
- | Jetzt kanns losgehen: | + | Um die Zehnerstelle zu finden, sucht man jedes Zahlwort und jede dazugehörige Ziffer in der zu untersuchenden Zeile. Hier hilft die Methode '' |
**Beispiel: | **Beispiel: | ||
Zeile 238: | Zeile 248: | ||
zeile.indexOf(" | zeile.indexOf(" | ||
</ | </ | ||
+ | |||
+ | Die Methode '' | ||
+ | |||
+ | Das folgende Codegerüst beinhaltet die nach dieser Logik implementierte Suche nach der Zehnerstelle - du kannst das nachvollziehen und versuchen, die Einerstelle und die Berechnung der GEsamtsumme nachzutragen. | ||
+ | |||
+ | ++++ Codegerüst für die Zehnerstelle | | ||
+ | <code java> | ||
+ | public int partTwo() { | ||
+ | int answer=0; | ||
+ | |||
+ | String [] werte = { | ||
+ | " | ||
+ | " | ||
+ | }; | ||
+ | |||
+ | for(String line: inputLines) { | ||
+ | |||
+ | // Suche Zehner, Positionen sind nicht vorhanden: -1 | ||
+ | int zehnerPosition=-1; | ||
+ | int zehnerWert=-1; | ||
+ | | ||
+ | // Jede Zahl von 1 bis 10 in der Zeile suchen, | ||
+ | // als Ziffer und als Zahlwort | ||
+ | for(int i=1; i< | ||
+ | // Gibts die Ziffer in der Zeile? | ||
+ | // Achtung: Integer.toString(i), | ||
+ | // Argument einen String! | ||
+ | int zifferPosition = line.indexOf(Integer.toString(i)); | ||
+ | // Gibst das Zahlwort in der Zeile? | ||
+ | int wortPosition = line.indexOf(werte[i]); | ||
+ | | ||
+ | // Position merken, wenn gefunden. | ||
+ | // Nur die am weitesten links stehende Postion liefert | ||
+ | // den Zehnerwert | ||
+ | | ||
+ | // Zuerst für die Ziffer | ||
+ | if(zifferPosition != -1) { | ||
+ | if( zehnerPosition == -1 || zifferPosition < zehnerPosition) { | ||
+ | zehnerPosition = zifferPosition; | ||
+ | zehnerWert = i; | ||
+ | } | ||
+ | } | ||
+ | // Jetzt für das Wort | ||
+ | // Beide Untersuchungen setzen wenn nötig | ||
+ | // zehnerPosition und zehnerWert neu | ||
+ | if(wortPosition != -1) { | ||
+ | if( zehnerPosition == -1 || wortPosition < zehnerPosition) { | ||
+ | zehnerPosition = wortPosition; | ||
+ | zehnerWert = i; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | // Suche Einer | ||
+ | | ||
+ | // TODO | ||
+ | | ||
+ | answer = // Rechnen! | ||
+ | } | ||
+ | return answer | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | === Lösungsvorschlag === | ||
+ | |||
+ | Einen Lösungsvorschlag nach der Beschreibung Variante 2 findest du hier: https:// | ||
</ | </ | ||
</ | </ | ||