DCV 2024 09/Selbsttest: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Sandro (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Sandro (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:
  Der Punkt Datenströme ist '''optional''', da dieser noch nicht behandelt wurde. Man kann es natürlich trotzdem erledigen!
  Der Punkt Datenströme ist '''optional''', da dieser noch nicht behandelt wurde. Man kann es natürlich trotzdem erledigen!


=== Hackerrank ===
=== Tipp des Tages: Hackerrank ===
Probiert es doch mal aus, macht spaß: https://hackerrank.com
Probiert es doch mal aus, macht spaß: https://hackerrank.com


=== Aufgabe: GameOfLife ===
=== BonusAufgabe: GameOfLife ===
[[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_Conways_Game_of_life|Conways Game of life]]
[[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_Conways_Game_of_life|Conways Game of life]]


=== Aufgabe: TicTacToe KI ===
=== BonusAufgabe: TicTacToe KI ===
Erweitere [[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_TicTacToe|TicTacToe]], dass gegen den Computer gespielt werden kann. Siehe [https://www.geeksforgeeks.org/minimax-algorithm-in-game-theory-set-3-tic-tac-toe-ai-finding-optimal-move/ MiniMax Algorithmus].
Erweitere [[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_TicTacToe|TicTacToe]], dass gegen den Computer gespielt werden kann. Siehe [https://www.geeksforgeeks.org/minimax-algorithm-in-game-theory-set-3-tic-tac-toe-ai-finding-optimal-move/ MiniMax Algorithmus].


=== Aufgabe: Türme von Hanoi ===
=== BonusAufgabe: Türme von Hanoi ===
Finde eine programmatische Lösung für die [https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi Türme von Hanoi].
Finde eine programmatische Lösung für die [https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi Türme von Hanoi].


Zeile 41: Zeile 41:
  '''Tip:''' [https://de.wikipedia.org/wiki/Fibonacci-Folge Fibonacci]
  '''Tip:''' [https://de.wikipedia.org/wiki/Fibonacci-Folge Fibonacci]


=== Aufgabe: Blackjack ===
=== BonusAufgabe: Blackjack ===


Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)
Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)
Zeile 59: Zeile 59:


Achte auf eine schöne Ausgabe!
Achte auf eine schöne Ausgabe!
=== Aufgabe: Hashsumme/Prüfsumme ===
Erstelle ein Programm welches die Prüfsumme einer gegebenen Datei berechnet und ausgibt. Hierbei kann auch gerne '''resources/txt/simpeText.txt''' verwendet werden. Nähere Informationen zur Hashsumme finden sich [https://de.wikipedia.org/wiki/Hashfunktion hier].
Lies die Datei mithilfe eines {{JSL|FileInputStream}}:
{{JML|code=
InputStream in = [YourClass].class.getClassLoader().getResourceAsStream("txt/simpleText.txt");
byte[] buffer = new byte[1024];
int read = 0;
while((read = in.read(buffer)) > 0) {
    //Digest aktualisieren         
}
}}
Erstelle einen {{JSL|MessageDigest}} für '''MD5''' und '''SHA256''' und befülle diesen mit dem {{JSL|byte[] buffer}}. Instanzen von {{JSL|MessageDigest}} erhältst du mittels {{JSL|MessageDigest.getInstance([algorithm])}}.
Um die Prüfsumme des {{JSL|MessageDigest}} lerbar zu machen verwende:
{{JML|code=
private static String toString(MessageDigest digest) {
    return new BigInteger(1,digest.digest()).toString(16);
}
}}
{{BML|code=
#Prüfsummen für resources/txt/simpleText.txt
md5: a82e2148461ca6b10c48ddb920a40f15
sha256: 4711958a43201ac481b37ab2f50a1fd366cc14f5996ad7e02bc01b2f9ea0d12
}}
'''Online MD5 Hash generator'''
Hier kann die '''Hashsumme''' für einen gegebenen Text berechnet werden: [http://www.md5.cz/ MD5 Generator]
=== Aufgabe: Cäsar-Verschlüsselung ===
Bei der Cäsar-Verschlüsselung werden die Buchstaben um eine fixe Anzahl Stellen
verschoben (z.B. 2) a wird zu c, f wird zu h, z wird zu b usw.
Implementiere eine Methode {{JSL|encrypt(String)}} welche einen {{JSL|String}} zurückgibt und und eine Methode
{{JSL|decrypt(String)}} welche einen {{JSL|String}}.
'''Entschlüsselt'''
{{BML|code=
Dies ist ein Beispieltext der mit einem Klick verschlüsselt werden kann. Hier kann auch
ein eigenen Text herein geschrieben, oder ein Geheimcode zum Entschlüsseln herein
kopiert werden.
}}
'''Verschlüsselt (um 3 verschoben)'''
{{BML|code=
Glhv lvw hlq EhlvslhowhAw ghu plw hlqhp Nolfn yhuvfkoüvvhow zhughq ndqq. Klhu
ndqq dxfk hlq hljhqhq WhAw khuhlq jhvfkulhehq, rghu hlq Jhkhlpfrgh Cxp
Hqwvfkoüvvhoq khuhlq nrslhuw zhughq.
}}

Version vom 25. Oktober 2024, 07:01 Uhr

Wir wünschen euch schöne Ferien. Genießt die freie Zeit und nützt diese auch zum programmieren üben!

Aufgabe: Selbstkontrolle

Die Selbstkontrolle, diese solltet ihr bearbeiten und ist eine gute Wiederholung

Selbstkontrolle

Der Punkt Datenströme ist optional, da dieser noch nicht behandelt wurde. Man kann es natürlich trotzdem erledigen!

Tipp des Tages: Hackerrank

Probiert es doch mal aus, macht spaß: https://hackerrank.com

BonusAufgabe: GameOfLife

Conways Game of life

BonusAufgabe: TicTacToe KI

Erweitere TicTacToe, dass gegen den Computer gespielt werden kann. Siehe MiniMax Algorithmus.

BonusAufgabe: Türme von Hanoi

Finde eine programmatische Lösung für die Türme von Hanoi.

Als Datenstruktur wird ein 2-Dimensionales Array benötigt:

int[][] hanoi = new int[3][Anzahl Scheiben]

Jede Scheibe wird durch eine Zahl reprästentiert, die dessen Größe beschreibt.

Folgende Methoden werden benötigt:

  • Spielfeld ausgeben
  • Spielfeld initialisieren
  • hanoiMove(int from, int to, int using, int count)
 * count == 1 // direct move
 * ansonstens 3 Schritte
     * hanoiMove(from, using, to, count - 1)
     * hanoiMove(from, to, using, 1) // Wirkliche Bewegung 
     * hanoiMove(using, to, from, count - 1)
Tip: Fibonacci

BonusAufgabe: Blackjack

Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)

int[] deck = new int[52]; (initialisiert von 0, 1, 2 bis 51.)

Methoden:

  • Mischen mit swap
  • getColor() auf Basis value / 13
  • getFigure() auf Basis value % 13
  • getValue()
  • getValueHand() // zB: Summe von 3 Karten

Strategie für die Bank: Zieht bis < 17

Achte auf eine schöne Ausgabe!