Al final, el primer número imposible es el 10 (por eso no encontraba como armarlo :D). Acá les muestro la salida del programa:
0 == (4 / (4 ** (4 ** 4))) 1 == (4 ** (4 / (4 ** 4))) 2 == (4 / ((4 + 4) / 4)) 3 == (4 - (4 ** (4 - 4))) 4 == (4 ** (4 ** (4 - 4))) 5 == (4 + (4 ** (4 - 4))) 6 == (4 + ((4 + 4) / 4)) 7 == (4 + (4 - (4 / 4))) 8 == (4 - (4 - (4 + 4))) 9 == (4 + (4 + (4 / 4))) 10 == 11 == 12 == (4 * (4 - (4 / 4))) 13 == 14 == 15 == ((4 * 4) - (4 / 4)) 16 == (4 * (4 ** (4 / 4))) 17 == ((4 / 4) + (4 * 4)) 18 == 19 == 20 == (4 * (4 + (4 / 4))) 21 == 22 == 23 == 24 == (4 + (4 + (4 * 4))) 25 == 26 == 27 == 28 == ((4 * (4 + 4)) - 4) 29 == 30 == 31 == 32 == ((4 ** 4) / (4 + 4)) 33 == 34 == 35 == 36 == (4 + (4 * (4 + 4))) 37 == 38 == 39 == 40 == 41 == 42 == 43 == 44 == 45 == 46 == 47 == 48 == (4 * (4 + (4 + 4))) 49 == 50 ==
Y para los geeks codeadores como yo, este fue el script rubyistico que usé para calcular las cosas:
def template_expressions( leafs = 4 )
return "4" if leafs == 1
previous_level = template_expressions( leafs - 1 )
previous_level.map do
|expr|
results = []
(0...expr.length).each do
|i|
if expr[i..i] == "4"
new_result = expr.clone
new_result[i] = "(4 o 4)"
results << new_result
end
end
results
end.flatten
end
OPERANDS = %W{+ - * / **}
def sample_evaluations( leafs = 4 )
evaluations = {}
exprs = template_expressions(leafs)
exprs.each do
|expr|
sample_evaluations0( leafs, expr, evaluations )
end
evaluations
end
def sample_evaluations0( leafs, expr, evaluations )
if leafs == 0
begin
evaluations[eval( expr )] = expr
rescue ZeroDivisionError
end
return
end
OPERANDS.each do
|op|
new_expr = expr.sub( /o/, op)
sample_evaluations0( leafs - 1, new_expr, evaluations )
end
end
evaluations = sample_evaluations
(0..50).each { |i| puts "#{i} == #{evaluations[i]}" }
Happy hacking,
Aureliano.
Algunos usan como truco juntar dos 4 para hacer un 44. Si lo usás, entonces (44 - 4)/4 = 10.
ResponderBorrarOtra opción es usar más operaciones, como sqrt y factorial. En ese caso, 10 = 4+4+(4/sqrt(4)).
Una cosa interesante hubiera sido que pongas todas las formas de hacer los cálculos, como que 0 se puede hacer con (4/4)**4**4, y (4/4**4)**4 también...