Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| efinf:blc2016:ausfall-2016-12-13 [2016/12/14 12:18] – Ivo Blöchliger | efinf:blc2016:ausfall-2016-12-13 [2016/12/15 07:22] (current) – Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | Von folgenden Aufgaben lösen Sie mindestens: | ||
| + | * Eine der beiden Aufgaben " | ||
| + | * Eine der beiden Aufgaben aus " | ||
| + | [[efinf: | ||
| + | |||
| + | ==== Strings, RegEx ==== | ||
| + | https:// | ||
| + | |||
| + | |||
| + | <hidden Skelett für Lösung> | ||
| + | <code ruby kontrabass.rb> | ||
| + | # coding: utf-8 | ||
| + | # Diese Funktion muss ergänzt werden | ||
| + | |||
| + | def ersetzen(text, | ||
| + | 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 " | ||
| + | print "Vokal oder Diphthong: " | ||
| + | vokal = gets.chomp | ||
| + | |||
| + | # | ||
| + | # vokal überprüfen, | ||
| + | # | ||
| + | |||
| + | puts " | ||
| + | | ||
| + | end | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Datensalat ==== | ||
| + | https:// | ||
| + | <hidden Hilfestellung> | ||
| + | * Datei zeilenweise in ein Array einlesen: '' | ||
| + | * Zeilen mit .split(" | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Arrays ==== | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | ==== Algorithmik ==== | ||
| + | https:// | ||
| + | |||
| + | Aufgaben 1 und 2 sollten alle hinkriegen. Aufgabe 4 kann auch Blc nicht befriedigend lösen. Hier mal ein paar pathlogische Fälle: {{ : | ||
| + | |||
| + | Hier gibt es noch 100 weitere Instanzen: {{ : | ||
| + | ==== Teile und herrsche ==== | ||
| + | * https:// | ||
| + | |||
| + | 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/ | ||
| + | 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 | ||
| + | </ | ||