Локальный учёт общих расходов

Распределить затраты по участникам и правилам долей, минимизировать число переводов, сохранить историю.

Рабочая область

Обработка на устройстве. Файлы и текст не отправляются в аналитику. Ctrl/Cmd+Enter — запуск.

Загрузка локальной обработки…

Настройки

Настройки содержат параметры, без исходных файлов. Автоматического сохранения нет.

Метод и ограничения

Распределяет суммы в целых минимальных единицах методом наибольших остатков. Для≤12 ненулевых балансов точно максимизирует число нулевых подмножеств и минимизирует переводы; валюты не смешивает.

Локальная обработка: до2 млн символов или20 000 записей на источник; до50 000 строк результата. Тяжёлые операции имеют отдельные ограничения и отмену. Измеренный спрос и внешние данные не подставляются.

Методика и примеры

Локальный учёт общих расходов

Распределяет суммы в целых минимальных единицах методом наибольших остатков. Для≤12 ненулевых балансов точно максимизирует число нулевых подмножеств и минимизирует переводы; валюты не смешивает.

Входные данные примера

Основной источник

[
  {
    "id": "bill1",
    "payer": "A",
    "amount": "100.01",
    "currency": "RUB",
    "shares": {
      "A": 1,
      "B": 1,
      "C": 1
    }
  },
  {
    "id": "bill2",
    "payer": "B",
    "amount": "30.00",
    "currency": "RUB",
    "shares": {
      "A": 1,
      "B": 1,
      "C": 1
    }
  }
]

Результат примера

ВалютаУчастникОплатилЕго доляБаланс +получить / −отдать
RUBA100.0143.3456.67
RUBB3043.34-13.34
RUBC043.33-43.33

Показано строк: 3 из 3.

Локальная обработка: до2 млн символов или20 000 записей на источник; до50 000 строк результата. Тяжёлые операции имеют отдельные ограничения и отмену. Измеренный спрос и внешние данные не подставляются.

Источники метода

Следующая задача