Разделение 12 литров сока между тремя людьми так, чтобы у каждого было одинаковое количество сока, можно сделать следующим образом. Каждый человек получит по 4 литра сока, так как 12 литров делится на 3 человека.
У нас есть следующие ёмкости: 3 литра (А), 5 литров (В) и 7 литров (С), а также 12-литровая бочка (D). Мы будем переливать сок по следующему алгоритму:
Заполним 5-литровую ёмкость (В) из бочки (D):
D > В (5 литров)Заполним 3-литровую ёмкость (А) из 5-литровой (В):
В > А (3 литра)Теперь в 5-литровой ёмкости осталось 2 литра. Перельем эти 2 литра обратно в бочку (D):
В > D (2 литра)Далее заполним снова 5-литровую ёмкость (В) из бочки (D):
D > В (5 литров)Теперь заполним 3-литровую ёмкость (А) из 5-литровой (В):
В > А (3 литра)В 5-литровой ёмкости снова осталось 2 литра. Перельем эти 2 литра обратно в бочку (D):
В > D (2 литра)Затем заполним 7-литровую ёмкость (С) из бочки (D):
D > С (7 литров)Теперь в бочке останется 0 литров сока. Каждый человек имеет по 4 литра сока: 4 литра в 3-литровой (А) и 5-литровой (В) и 7-литровой (С).
Получается, таким образом, все ёмкости зафиксированы, а сок разделён между тремя людьми. Для итогового формата команды алгоритм выглядит так:
D > В
В > А
В > D
D > В
В > А
В > D
D > С
Этот алгоритм эффективно делит сок на равные части с минимальным количеством шагов.
