Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. 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 <hidden Skelett für Lösung> <code ruby kontrabass.rb> # 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 </code> </hidden> ==== Datensalat ==== https://www.programmieraufgaben.ch/aufgabe/schraubensack/uk540btd <hidden Hilfestellung> * Datei zeilenweise in ein Array einlesen: ''File.readlines("schrauben.txt")'' * Zeilen mit .split(" ") zerpflücken, mit .to_i in Zahlen umwandeln. </hidden> ==== 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: <code ruby> 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 </code> efinf/blc2016/ausfall-2016-12-13.txt Last modified: 2016/12/15 07:22by Ivo Blöchliger