Один торговец через сайт объявлений продаёт очень старый Айфон за 2000 рублей. К нему приехал покупатель, у которого с собой только пятитысячная купюра. Торговец берёт её, идёт к соседу и просит разменять, в итоге получает от соседа 2 купюры по 2000 и одну тысячерублёвку.
Покупатель забирает Айфон, 3000 рублей сдачи и уезжает. А через полчаса прибегает злой сосед и говорит, что наш продавец дал ему фальшивку. Чтобы решить вопрос мирно, торговец отдал соседу 5000 рублей из своих денег, а потом задумался: сколько он сегодня потерял?
Прежде чем давать ответ, попробуйте решить задачу сами и поглядите, какие варианты у наших читателей во «Вконтакте».
Иногда эту задачу решают так:
- 2000 ушло покупателю в виде Айфона
- 3000 ушло к нему же как сдача
- 5000 пришлось отдать соседу за фальшивую купюру
Итого 2000 + 3000 + 5000 = 10000.
Но это неверно. Давайте разберёмся, как распределились деньги на самом деле.
Для начала нужно ответить на вопрос, что мы вообще считаем. Тут два варианта:
- Мы можем считать только потери наличных денег. Например, Айфон у нас настолько старый, что для продавца он стоит 0 ₽. Представьте, что продаётся не Айфон, а какой-нибудь старый шкаф, который выгоднее даже отдать бесплатно, чем самостоятельно вывозить на свалку. В этом случае потеря Айфона — это 0 ₽.
- Или же мы можем считать, что Айфон — тоже часть потери и для продавца он стоит те же 2000 ₽. Тогда продажа Айфона учитывается в общих расчётах.
Чтобы теперь рассчитать любой из вариантов, просто запишем все операции в столбик с точки зрения продавца. Там, где ему что-то прибыло, мы напишем это со знаком плюс, убыло — со знаком минус. Получится журнал движения денег и эквивалентов, по-программистски — лог:
Что сделал продавец |
Движение денег и эквивалентов |
Отдал Айфон |
(− 2000 ₽) |
Получил фальшивку |
+ 0 ₽ |
Отдал фальшивку на размен |
− 0 ₽ |
Получил размен |
+ 5000 ₽ |
Отдал сдачу |
− 3000 ₽ |
Вернул деньги соседу |
− 5000 ₽ |
Итого |
− 3000 ₽ (− 5000 ₽) |
Получается, что в зависимости от нашего взгляда, продавец лишился либо трёх тысяч рублей чистых денег, либо товара и денег на общую сумму пять тысяч рублей. Логирование событий — великая вещь!