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/20 14:49]
noel_ottiger
efinf:blc2016:loesungen-2016-12-13 [2016/12/21 21:46] (current)
patrick_lehn [Lösungen]
Line 84: Line 84:
 <?php <?php
  
-/*+/* Sry, wegen PHP...*/
- +
-Sry, wegen PHP... +
- +
-*/+
  
 $m = []; $m = [];
Line 111: Line 107:
         }         }
     }     }
-} 
- 
-echo "Muttern\n"; 
-foreach ($m as $y => $x) { 
-    echo "Grösse: $y, Anzahl: $x\n"; 
-} 
-echo "\n"; 
-echo "Schrauben:\n"; 
-foreach ($s as $y => $x) { 
-    echo "Grösse: $y, Anzahl: $x\n"; 
 } }
 ?> ?>
 +</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>
  
  • efinf/blc2016/loesungen-2016-12-13.1482241757.txt.gz
  • Last modified: 2016/12/20 14:49
  • by noel_ottiger