def water_jug_problem(jug1_capacity, jug2_capacity, target_capacity):
jug1_current = 0
jug2_current = 0
while jug1_current != target_capacity and jug2_current != target_capacity:
if jug1_current == 0:
jug1_current = jug1_capacity
elif jug1_current > 0 and jug2_current == jug2_capacity:
jug2_current = 0
else:
transfer_amount = min(jug1_current, jug2_capacity - jug2_current)
jug1_current -= transfer_amount
jug2_current += transfer_amount
return jug1_current, jug2_current
# 使用例
jug1_capacity = 5
jug2_capacity = 3
target_capacity = 4
result = water_jug_problem(jug1_capacity, jug2_capacity, target_capacity)
print(f"水差し1: {result[0]}L, 水差し2: {result[1]}L")
上記の例では、水差し1の容量が5リットル、水差し2の容量が3リットルで、目標の容量が4リットルである場合を考えています。関数の結果として、水差し1に注がれた水の量と水差し2に注がれた水の量が表示されます。