Von folgenden Aufgaben lösen Sie mindestens: * Eine der beiden Aufgaben "Strings, RegEx" oder "Datensalat" * Eine der beiden Aufgaben aus "Arrays" [[efinf:blc2016:loesungen-2016-12-13|Lösungen der Teilnehmenden]] ==== Strings, RegEx ==== https://www.programmieraufgaben.ch/aufgabe/kontrabass-1/xk5w4mq7 # coding: utf-8 # Diese Funktion muss ergänzt werden def ersetzen(text, vokal) text = String.new(text) # Kopie vom String # # Hier text verändern # return text end text = "Drei Chinesen mit dem Kontrabass saßen auf der Strasse und erzählten sich was. Da kam die Polizei, fragt: \"Was ist denn das?\" Drei Chinesen mit dem Kontrabass. " while (true) puts "Original\n\n#{text}\n\n" print "Vokal oder Diphthong: " vokal = gets.chomp # # vokal überprüfen, gegebenenfalls abbrechen (break) # puts "\n#{ersetzen(text,vokal)}\n\n" end ==== Datensalat ==== https://www.programmieraufgaben.ch/aufgabe/schraubensack/uk540btd * Datei zeilenweise in ein Array einlesen: ''File.readlines("schrauben.txt")'' * Zeilen mit .split(" ") zerpflücken, mit .to_i in Zahlen umwandeln. ==== Arrays ==== * https://www.programmieraufgaben.ch/aufgabe/es-lebe-der-koenig/i33bcg32 * https://www.programmieraufgaben.ch/aufgabe/josephus-problem/zqcht09b ==== Algorithmik ==== https://soi.ch/contests/2017/round1/numberriddle/ Aufgaben 1 und 2 sollten alle hinkriegen. Aufgabe 4 kann auch Blc nicht befriedigend lösen. Hier mal ein paar pathlogische Fälle: {{ :efinf:blc2016:pathologische-faelle.txt}}. Die Lösung ist (sollte sein): NO, NO, YES, YES, NO. Hier gibt es noch 100 weitere Instanzen: {{ :efinf:blc2016:numberriddle-instances.txt}} mit der (so glaube ich) Lösung {{ :efinf:blc2016:numberriddle-solutions.txt |}} ==== Teile und herrsche ==== * https://www.programmieraufgaben.ch/aufgabe/malermeister-malcom/durvde6t Die Aufgabe (so wie sie gestellt ist) kann mit Brute-Force gelöst werden. Grössere und anspruchsvollere Datensets können mit folgender Methode generiert werden: def generate(n, seed=42, width=2000, height=1000) srand seed # Damit die Kreise auch in etwa darauf Platz haben. meanr = Math.sqrt(width*height/n)/2; Array.new(n) { r = rand*meanr*1.5 + 0.5*meanr x = rand*(width-2*r)+r y = rand*(height-2*r)+r [x,y,r] } end