efinf:blc2016:ausfall-2016-12-13

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
efinf:blc2016:ausfall-2016-12-13 [2016/12/08 16:12] – [Rekursion (für Fortgeschrittene)] Ivo Blöchligerefinf: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 "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>