efinf:blc2016:loesungen-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:loesungen-2016-12-13 [2016/12/18 10:47]
Ivo Blöchliger [Lösungen Es lebe der König]
efinf:blc2016:loesungen-2016-12-13 [2016/12/21 21:46] (current)
patrick_lehn [Lösungen]
Line 54: Line 54:
   end   end
 end end
 +</code>
 +
 +
 +=== Luca ===
 +<code ruby datensalat.rb>
 +def min(*values)
 + values.min
 +end
 +
 +def max(*values)
 + values.max
 +end
 +
 +liste = File.open("schrauben.txt", "r"){ |file| file.read.split(" ").each_slice(2).to_a.each{|e| e[1] = e[1].to_i}}
 +
 +muttern = Array.new(150, 0)
 +schrauben = Array.new(150, 0)
 +
 +liste.each{|e| if e[0]=="m" then muttern[e[1]]+=1 elsif e[0]=="s" then schrauben[e[1]]+=1 end}
 +
 +for e in 0..149 do
 + minimum = min(muttern[e],schrauben[e])
 + puts "#{e}mm: #{minimum} passende Paare" if minimum != 0
 +end
 +</code>
 +
 +=== Noel ===
 +<code php>
 +<?php
 +
 +/* Sry, wegen PHP...*/
 +
 +$m = [];
 +$s = [];
 +
 +$lines = preg_split('/\n/', trim(file_get_contents('schrauben.txt')));
 +
 +foreach($lines as $line) {
 +    $v = explode(" ", $line);
 +    
 +    if($v[0] == "m") {
 +        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];
 +        }
 +    }
 +}
 +?>
 +</code>
 +
 +===Patrick===
 +<code ruby schrauben.rb>
 +liste = File.readlines("schrauben.txt").map{|l| l.split(" ")}.map{|l| [l[0],l[1].to_i]}
 +
 +liste.sort!{|a,b|  # a und b stehen für die Arrays # sortiergeschwindigkeit ist O(nlog(n))
 +   if a[1]==b[1]   # wenn die Zahlen gleich sind, dann werden die Buchstaben verglichen. PC kennt Reihenfolge der Buchstaben
 +      a[0]<=>b[0]  # liefert auch wieder -1 wenn a>b, 0 wenn a=b, 1 wenn a<b
 +   else 
 +      a[1]<=>b[1]  # vergleicht die Zahlen, sortiert sie
 +   end
 +}   
 +
 +a=0   # a & g stehen für die Indizes der Unterarrays
 +g=1
 +schrauben = 0
 +muttern = 0
 +last_size=liste[a][1]
 +puts   #leicht hübschere Ausgabe
 +
 +while a!=liste.size
 +   if liste[a][1]==last_size   # solange die grösse der Muttern/Schrauben gleich sind...
 +      while liste[a]==liste[g]   # solange die Unterarrays gleich sind...
 +         g+=1   # ...wächst g
 +      end
 +         differenz= g-a   # die Buchstaben, die für die Indizes der Unterarrays stehen, werden verglichen
 +      if liste[a][0]=="s"
 +         schrauben = differenz
 +      elsif liste[a][0]=="m"
 +         muttern = differenz
 +      end
 +      a=g   # a wird aktualisiert
 +   else
 +      if muttern == 0 or schrauben == 0  # damit kein Auswurf entsteht wenn es keine Paare gibt
 +         nil
 +      elsif muttern > schrauben
 +         puts "#{last_size}mm = #{schrauben} Paare"
 +      elsif muttern < schrauben
 +         puts "#{last_size}mm = #{muttern} Paare"
 +      elsif
 +         puts "#{last_size}mm = #{muttern} Paare"
 +      end
 +   last_size=liste[a][1]  # last_size wird aktualisiert, auf eine neue Grösse eingstellt
 +   schrauben = 0  # bevor die nächsten Unterarrays verglichen werden, sollen diese wieder auf 0 stehen
 +   muttern = 0
 +   end
 +end
 +puts   # leicht hübschere Ausgabe
 +# gesamt Aufwand ist O(nlog(n))
 +
 </code> </code>
  
Line 66: Line 172:
 # No comment # No comment
 </code> </code>
- 
  
 === Mathematiker === === Mathematiker ===
  • efinf/blc2016/loesungen-2016-12-13.1482054442.txt.gz
  • Last modified: 2016/12/18 10:47
  • by Ivo Blöchliger