Можно ли улучшить систему проезда в Москве

*Итак, созданная Дептрансом система оплаты проезда получилась не очень удобной и не очень интегрированной: во многих случаях пользователям выгоднее иметь два билета, а не один. Это, конечно, не дело. *

Замечательно тут то, что все это можно довольно легко исправить, совершенно не меняя ценовую политику! Для этого надо применить тот же принцип, что когда-то применялся на малоиспользуемом, но примечательном виде билета «приложение к банковской карте». Там цена каждой следующей поездки была чуть меньше предыдущей, причем суммы были подобраны так, что сумма цен 10 поездок в точности совпадала с ценой 10-поездковой карточки, сумма цен 20 поездок в точности совпадала с ценой 20-поездковой карточки, и так далее. С началом нового месяца счетчик обнулялся, и все шло по-новой.

Аналогичный алгоритм можно реализовать на Тройке и сейчас.

Заметим, что сейчас сумма потраченных пользователем денег есть просто функция от количества поездок на метро, НОТ и 90-минутных поездок в месяц. Эту функцию можно задать неявно, как это сделано сейчас при помощи 666 типов билетов, а можно и явно, просто матрицей. Матрицу эту можно заполнить так, чтобы цена пользования транспортной системой была той же, какой она получается при оптимальном выборе билета, описанном мной в предыдущем посте. Там для упрощения нарисована двухмерная матрица, хотя на самом деле она трехмерная, но это не сильно усложняет дело.

Дальнейшее — дело техники. Билет хранит число поездок на НОТ, метро и 90-минутных, совершенных с начала месяца. При каждой валидации с пользователя списывается разница между соответствующими соседними элементами матрицы.

Допустим, в билете записано, что пользователь уже совершил 10 поездок на метро, 2 на автобусе и 5 90-минутных. И вот, билет валидируется в метро. Тогда с пользователя просто списывается разница между ценой 11 поездок на метро, 2 на автобусе и 5 90-минутных и ценой 10 поездок на метро, 2 на автобусе и 5 90-минутных.