Von folgenden Aufgaben lösen Sie mindestens:

  • Eine der beiden Aufgaben “Strings, RegEx” oder “Datensalat”
  • Eine der beiden Aufgaben aus “Arrays”

Lösungen der Teilnehmenden

https://www.programmieraufgaben.ch/aufgabe/kontrabass-1/xk5w4mq7

Skelett für Lösung

Skelett für Lösung

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

https://www.programmieraufgaben.ch/aufgabe/schraubensack/uk540btd

Hilfestellung

Hilfestellung

  • Datei zeilenweise in ein Array einlesen: File.readlines(“schrauben.txt”)
  • Zeilen mit .split(“ ”) zerpflücken, mit .to_i in Zahlen umwandeln.

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: pathologische-faelle.txt. Die Lösung ist (sollte sein): NO, NO, YES, YES, NO.

Hier gibt es noch 100 weitere Instanzen: numberriddle-instances.txt mit der (so glaube ich) Lösung numberriddle-solutions.txt

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
  • efinf/blc2016/ausfall-2016-12-13.txt
  • Last modified: 2016/12/15 07:22
  • by Ivo Blöchliger