Von folgenden Aufgaben lösen Sie mindestens:
- Eine der beiden Aufgaben “Strings, RegEx” oder “Datensalat”
- Eine der beiden Aufgaben aus “Arrays”
Strings, RegEx
Datensalat
Arrays
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: 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
Teile und herrsche
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