Utolsó módosítás: 2009. április 9.
# Állat kitalálós játék
def yesno()
input = readline()
ok = false
reply = false
while !ok
if ?i == input[0] || ?I == input[0]
ok = true
reply = true
elsif ?n == input[0] || ?N == input[0]
ok = true
reply = false
else
print("Igen vagy nem választ várok.\n")
end
end
reply
end
tree = [true, "Tud repülni?", [false, "sárgarigó"], [false, "macska"]]
while true
print("Gondoljon egy állatra!\n")
cur = tree
while cur[0]
print("Kérdezek. ")
puts(cur[1])
if yesno()
cur = cur[2]
else
cur = cur[3]
end
end
print("Rákérdezek: ")
guess = cur[1]
print(guess)
puts("?")
if yesno()
puts("Remek! Játsszunk még!")
else
puts("Feladom. Mire gondolt?")
real = readline().chomp()
print( \
"Mondjon egy olyan eldöntendő kérdést, ami megkülönbözteti ezt a két állatot: ", \
guess, " és ", real, "!\n");
question = readline()
print( \
"Mi lenne a válasz erre a kérdésre, ha a gondolt állat a ", \
real, "?\n")
reply = yesno()
cur[0] = true
cur[1] = question
if reply
cur[2] = [false, real]
cur[3] = [false, guess]
else
cur[2] = [false, guess]
cur[3] = [false, real]
end
print("Köszönöm, legközelebb már ezt is tudni fogom.\n")
end
end
# számrejtvény
input = [6,1,3,4]
$solution = 24
$poss = []
def check(freq, str, val)
t = [freq, str, val]
#p(t)
$poss.push(t)
all = true
j = 0
while j < freq.size
if 0 == freq[j]
all = false
end
j += 1
end
if all && ($solution - val).abs() < 1e-6
print($solution, " = ", str, "\n")
end
end
n = 0
while n < input.size()
freq = []
j = 0
while j < input.size()
freq[j] = 0
j += 1
end
freq[n] = 1
check(freq, input[n].to_s(), input[n])
n += 1
end
iter = 0
while iter < input.size()
max = $poss.size()
m = 0
while m < max
n = 0
while n < max
clash = false
freq = []
j = 0
while j < input.size()
freq[j] = $poss[m][0][j] + $poss[n][0][j]
if 1 < freq[j]
clash = true
end
j += 1
end
if !clash
check(freq, \
"(" + $poss[m][1] + "+" + $poss[n][1] + ")", \
$poss[m][2] + $poss[n][2])
check(freq, \
"(" + $poss[m][1] + "-" + $poss[n][1] + ")", \
$poss[m][2] - $poss[n][2])
check(freq, \
"(" + $poss[m][1] + "*" + $poss[n][1] + ")", \
$poss[m][2] * $poss[n][2])
if 0 != $poss[n][2]
check(freq, \
"(" + $poss[m][1] + "/" + $poss[n][1] + ")", \
$poss[m][2] / Float($poss[n][2]))
end
end
n += 1
end
m += 1
end
iter += 1
end
# számrejtvény
input = [6,1,3,4]
$solution = 24
$found = []
$poss = [[]]
def check(depth, freq, str, val)
p([freq, str, val, depth])
$poss[depth].push([freq, str, val])
all = true
j = 0
while j < freq.size
if 0 == freq[j]
all = false
end
j += 1
end
if all && ($solution - val).abs() < 1e-6
announce = $solution.to_s + " = " + str + "\n"
print announce
$found.push(announce)
end
end
n = 0
while n < input.size()
freq = []
j = 0
while j < input.size()
freq[j] = 0
j += 1
end
freq[n] = 1
check(0, freq, input[n].to_s(), input[n])
n += 1
end
depth = 1
while depth < input.size()
$poss[depth] = []
mdepth = 0
while mdepth < depth
warn mdepth
mmax = $poss[mdepth].size()
ndepth = depth - mdepth - 1
nmax = $poss[ndepth].size()
m = 0
while m < mmax
a = $poss[mdepth][m]
n = 0
while n < nmax
b = $poss[ndepth][n]
clash = false
freq = []
j = 0
while j < input.size()
freq[j] = a[0][j] + b[0][j]
if 1 < freq[j]
clash = true
end
j += 1
end
if !clash
check(depth, freq, \
"(" + a[1] + "+" + b[1] + ")", \
a[2] + b[2])
check(depth, freq, \
"(" + a[1] + "-" + b[1] + ")", \
a[2] - b[2])
check(depth, freq, \
"(" + a[1] + "*" + b[1] + ")", \
a[2] * b[2])
if 0 != b[2]
check(depth, freq, \
"(" + a[1] + "/" + b[1] + ")", \
a[2] / Float(b[2]))
end
end
n += 1
end
m += 1
end
mdepth += 1
end
depth += 1
end
j = 0
while j < $found.size
print $found[j]
j += 1
end