Zahlenrätsel!


Quiest

I like turtles!
Helft mir Leute, ich kriegs nicht raus!

Man muss die Zahlen 3, 3, 8 und 8 beliebig mit folgenden Rechensymbolen verbinden, so dass die Rechnung 24 ergibt: + - * / ( )
(Also 3 und 8 müssen jeweils 2x verwendet werden und Addieren, Subtrahieren, Multiplizieren und Dividieren sowie Klammern setzen kann man beliebig.)

z.B.:

(8+3)*3-8=25 ist falsch, soll ja 24 rauskommen.
 
Es ist unmöglich. Ich hab nen programm alle möglichkeiten durchrechnen lassen... nichts kommt hin
 
Was ein prog das alles rechnet??
Dann müssten das aber sehr sehr viele rechnungen kommen so ca 2000
MFG
game-genie
 
Ich bin zwar bisher hier nur passiv unterwegs, aber das hat mich dann doch gereitzt:
8/(3-8/3)

Gruß, Dirk

ps. traue niemals einer selbst geschriebenen Software
 
Nachdem ich auch ein Programm geschrieben habe, das mir gesagt hat, dass es keine Lösung geben würde, war eigentlich klar, dass es irgendwie mit Brüchen zusammenhängen muss (die sind halt so schwer in einem Programm zu handeln).
Wenn man sich dann noch überlegt, dass so ein Rätsel meistens eine Lösung hat, auf die man nicht ohne weiteres kommt, landet man schnell beim Teilen durch einen Bruch. Normalerweise teilt ja kein Mensch im Kopf durch Zahlen wie 0,333333. Und ab da gibt es nicht mehr viele Möglichkeiten.
 
NEIN ^^ ich depp... mein programm hat funktioniert... ich hab nur die ausgabe nicht richtig angeschaut ^^....
 
Soo hier ist mein überarbeitetes programm das nichtmehr alles ausrechnet und alles ausgibt sondern nurnoch das was hinkommt (ich hab bei den vielen möglichkeiten die 24 einfach übersehen....)

Ruby:
Code:
templates = [
  "((XyX)yX)yX",
  "(XyX)y(XyX)",
  "(Xy(XyX))yX",
  "Xy((XyX)yX)",
  "Xy(Xy(XyX))"
]

opcombs = (0..63).map{|e|("%3s" % (e.to_s(4))).tr(" 0123","++\\-\\*\\/")}



comb38s = %w(3388 3838 3883 8338 8383 8833)

templates.each do |template|
  opcombs.each do |opcomb|
    comb38s.each do |comb38|
      oc = opcomb.dup
      c38 = comb38.dup
      
      code = template.gsub('y'){oc.slice!(0,1)}
      code.gsub!('X'){c38.slice!(0,1)+".0"}
      
      res = eval(code) rescue "ERROR"
      
      if (res-24).abs < 0.000001 # float errors
        puts code.gsub(".0","")
      end
    end
  end
end
 
steht doch drüber.. ruby... ist ne echt tolle object orientierte nette (langsame) sprache... für web apps ist die performance aber noch total ok... (auf ruby on rails laufen schließlich auch riesen dinger wie basecamp und die anderen sachen von 37signals)
 
Back
Top