Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
efinf:blc2016:loesungen-2016-12-13 [2016/12/15 09:20] simon_rusch [Datensalat: Schraubensack] |
efinf:blc2016:loesungen-2016-12-13 [2016/12/21 21:46] (current) patrick_lehn [Lösungen] |
||
---|---|---|---|
Line 3: | Line 3: | ||
* Aufgabenstellung: | * Aufgabenstellung: | ||
==== Lösungen ==== | ==== Lösungen ==== | ||
- | === Vreneli | + | === Simon === |
- | <code ruby kontrabass-vreneli.rb> | + | <code ruby regexaufg.rb> |
- | # No comment | + | # coding: utf-8 |
+ | # Diese Funktion muss ergänzt werden | ||
+ | |||
+ | def ersetzen(text, | ||
+ | text = String.new(text) # Kopie vom String | ||
+ | text.gsub!(/ | ||
+ | text.gsub!(/# | ||
+ | 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. | ||
+ | " | ||
+ | a=1 | ||
+ | v = [" | ||
+ | |||
+ | while (true) | ||
+ | puts " | ||
+ | print "Vokal oder Diphthong: " | ||
+ | vokal = gets.chomp | ||
+ | |||
+ | if v.include? | ||
+ | then puts " | ||
+ | else break | ||
+ | end | ||
+ | |||
+ | end | ||
</ | </ | ||
Line 11: | Line 40: | ||
Aufgabenstellung: | Aufgabenstellung: | ||
- | **Simon** | + | [[efinf: |
+ | ==== Lösungen ==== | ||
+ | === Simon === | ||
+ | <code ruby datensalat.rb> | ||
file = File.read(" | file = File.read(" | ||
for i in 1..60 | for i in 1..60 | ||
Line 22: | Line 54: | ||
end | end | ||
end | end | ||
- | ==== Lösungen | + | </ |
- | === Hansli | + | |
- | <code ruby schraubensack-hansli.rb> | + | |
- | # No comment | + | === Luca === |
+ | <code ruby datensalat.rb> | ||
+ | def min(*values) | ||
+ | | ||
+ | end | ||
+ | |||
+ | def max(*values) | ||
+ | | ||
+ | end | ||
+ | |||
+ | liste = File.open(" | ||
+ | |||
+ | muttern | ||
+ | schrauben | ||
+ | |||
+ | liste.each{|e| if e[0]==" | ||
+ | |||
+ | for e in 0..149 do | ||
+ | minimum = min(muttern[e], | ||
+ | puts "# | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | === Noel === | ||
+ | <code php> | ||
+ | <?php | ||
+ | |||
+ | /* Sry, wegen PHP...*/ | ||
+ | |||
+ | $m = []; | ||
+ | $s = []; | ||
+ | |||
+ | $lines = preg_split('/ | ||
+ | |||
+ | foreach($lines as $line) { | ||
+ | $v = explode(" | ||
+ | |||
+ | if($v[0] == " | ||
+ | if(isset($m[$v[1]])) { | ||
+ | $m[$v[1]] += 1; | ||
+ | } else { | ||
+ | $m += [$v[1] => 1]; | ||
+ | } | ||
+ | } else { | ||
+ | if(isset($s[$v[1]])) { | ||
+ | $s[$v[1]] += 1; | ||
+ | } else { | ||
+ | $s += [$v[1] => 1]; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ===Patrick=== | ||
+ | <code ruby schrauben.rb> | ||
+ | liste = File.readlines(" | ||
+ | |||
+ | liste.sort!{|a, | ||
+ | if a[1]==b[1] | ||
+ | a[0]< | ||
+ | else | ||
+ | a[1]< | ||
+ | end | ||
+ | } | ||
+ | |||
+ | a=0 # a & g stehen für die Indizes der Unterarrays | ||
+ | g=1 | ||
+ | schrauben = 0 | ||
+ | muttern = 0 | ||
+ | last_size=liste[a][1] | ||
+ | puts # | ||
+ | |||
+ | while a!=liste.size | ||
+ | if liste[a][1]==last_size | ||
+ | while liste[a]==liste[g] | ||
+ | | ||
+ | end | ||
+ | | ||
+ | if liste[a][0]==" | ||
+ | | ||
+ | elsif liste[a][0]==" | ||
+ | | ||
+ | end | ||
+ | a=g # a wird aktualisiert | ||
+ | | ||
+ | if muttern == 0 or schrauben == 0 # damit kein Auswurf entsteht wenn es keine Paare gibt | ||
+ | nil | ||
+ | elsif muttern > schrauben | ||
+ | puts "# | ||
+ | elsif muttern < schrauben | ||
+ | puts "# | ||
+ | elsif | ||
+ | puts "# | ||
+ | end | ||
+ | | ||
+ | | ||
+ | | ||
+ | end | ||
+ | end | ||
+ | puts # leicht hübschere Ausgabe | ||
+ | # gesamt Aufwand ist O(nlog(n)) | ||
</ | </ | ||
Line 38: | Line 172: | ||
# No comment | # No comment | ||
</ | </ | ||
+ | |||
+ | === Mathematiker === | ||
+ | Es lohnt sich in diesem Fall, gar nichts zu programmieren. Beim ersten Teil der Aufgabe ist es schnell einleuchtend, | ||
+ | |||
+ | Der zweite Teil ist interessanter, | ||
+ | $$n=p_1^{n_1}\cdot p_2^{n_2} \cdot \ldots \cdot p_m^{n_m}$$ | ||
+ | Ein Teiler von $n$ erhält man, indem man von jedem Primfaktor $p_i$ eine beliebige Anzahl zwischen $0$ und $n_i$ wählt. D.h. die Anzahl Teiler ist $(n_1+1)\cdot (n_2+1)\cdot \ldots \cdot (n_m+1)$. Dieses Produkt ist genau dann ungerade, wenn **alle** $n_i$ gerade sind. Sind alle Exponenten gerade, ist die Zahl eine Quadratzahl, | ||
==== Lösungen " | ==== Lösungen " |