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