#/*********************************************************** # water.rb -- 水をはかる問題 #***********************************************************/ def gcd(x, y) # 最大公約数 if (x == 0); return y; else; return gcd(y % x, x); end end printf("容器Aの容積? "); a = gets.to_i printf("容器Bの容積? "); b = gets.to_i printf("はかりたい容積? "); v = gets.to_i if (v > a && v > b || v % gcd(a, b) != 0) printf("はかれません\n"); exit 1 end x = y = 0 begin if (x == 0) printf("Aに水を満たします\n"); x = a elsif (y == b) printf("Bを空にします\n"); y = 0 elsif (x < b - y) printf("Aの水をすべてBに移します\n") y += x; x = 0 else printf("Aの水をBがいっぱいになるまで"\ "Bに移します\n"); x -= b - y; y = b end end while (x != v && y != v) if (x == v); printf("Aにはかれました\n") elsif (y == v); printf("Bにはかれました\n"); end exit 0