efinf:blc2016:loesungen-2016-12-13

This is an old revision of the document!


Simon

regexaufg.rb
# coding: utf-8
# Diese Funktion muss ergänzt werden
 
def ersetzen(text, vokal)
  text = String.new(text) # Kopie vom String
  text.gsub!(/ä|ei|[aeiou]/,vokal)
  text.gsub!(/#{vokal}{2}/,vokal)
  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 = ["a","e","i","o","u","ä","ü","ö"]
 
while (true)
  puts "Original\n\n#{text}\n\n"
  print "Vokal oder Diphthong: "
  vokal = gets.chomp
 
  if v.include?(vokal) 
  then puts "\n#{ersetzen(text,vokal)}\n\n" 
  else break
  end
 
end

Simon

datensalat.rb
file = File.read("schrauben.txt")
for i in 1..60
  s = file.scan(/s\s(#{i})$/).size
  m = file.scan(/m\s(#{i})$/).size
  if (s!=0 and m!=0) then
    a = [s,m]
    n = a.min
    puts "#{i}mm: #{n} passende Paare"
  end
end

Luca

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

Peterli

koenig-peterli.rb
# No comment

Mathematiker

Es lohnt sich in diesem Fall, gar nichts zu programmieren. Beim ersten Teil der Aufgabe ist es schnell einleuchtend, dass jede zweite Türe offen sein wird.

Der zweite Teil ist interessanter, es läuft auf die Frage hinaus, wieviel mal eine Türe geöffnet und geschlossen wird. Nur wenn diese Anzahl ungerade ist, ist die Türe am Schluss offen. Der Zustand der Türe $n$ wird genau so viel mal geändert, wie die Zahl $n$ Teiler hat (sich selbst ingebegriffen). Wird $m$ in seine Primfaktoren zerlegt geschrieben gilt $$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, und damit bleiben 10 Türen offen.

Peterli

koenig-peterli.rb
# No comment

Käthi

Lösungen

  • efinf/blc2016/loesungen-2016-12-13.1482239104.txt.gz
  • Last modified: 2016/12/20 14:05
  • by luca_naef