Кооперативное кафе

Экономический симулятор.

Пролог

Предположим, что вы, подобно сотням тысяч советских граждан, получили разрешение на индивидуальную трудовую деятельность, и открыли маленькую пищевую точку – кафетерий или бутербродную.

В ежедневном обороте имеется, для начала, 250 рублей. Каждое утро необходимо съездить на рынок и купить свежих продуктов из расчёта примерно 5 рублей на одного предполагаемого клиента. Чем больше покупаете, тем продукты дешевле: скидка оптовому покупателю – закон рынка. Но если вы приобретёте их больше, чем заглянет к вам посетителей, то назавтра нереализованные товары частично испортятся. Если же еды на всех не хватит, то обиженные вряд ли придут к вам ещё раз. В любом случае вы останетесь в проигрыше, так что надо искать оптимум.

После рынка заезжаете в кооператив по рекламе, которая, как известно, двигатель торговли. Каким образом коллеги кооператоры будут вести свою рекламную атаку на население, не суть важно. Главное – они честно отработают полученные от вас деньги. Впрочем, и у них возможности не безграничны: если репутация вашего заведения подпорчена, то никакой рекламой народ туда не заманишь.

Наконец вы вернулись к себе. Можно заняться приготовлением разносолов и расстегаев, куличей и калачей, карасей в сметане и мясо в горшочках. И, разумеется, безалкогольного сбитня и ячменного кофе. Электричество, газ, вода, бензин (на доставку продуктов) тоже не бесплатны, поэтому придётся добавить к вашим тратам накладные расходы по полтиннику на среднестатистического клиента.

Итак, деньги заплачены, работа идёт полным ходом. А итоги дня определит Его Величество Покупатель.

Скопировано из текста журнала Техника Молодёжи №5 за 1988.

Задача

Постепенно увеличивать доход предприятия за счёт привлечения новых клиентов, при этом соблюдая баланс интересов клиентов и собственной выгоды.

Игровой процесс

Здесь используется немного модифицированная мной версия программы. Она полностью совпадает с исходной по логике работы, почти полностью по используемым регистрам, но короче на 15 команд.

Распределение регистров

Регистр Значение
R0 Не используется.
R1 Рабочий.
R2 Рабочий. Будет содержать сумму, потраченную на продукты.
R3 Рыночная стоимость для одного клиента без учёта скидки. 5. .
R4 Рабочий. В конце игрового дня будет содержать фактическую сумму, затраченную в среднем одним посетителем.
R5 Деньги, которые посетитель рассчитывает оставить у вас. 7. .
R6 Не используется.
R7 Буква E. Получается как 1, К, ВП, x→П7.
R8 Процент, который вы пускаете в оборот от дохода. В оригинале было 3% отчисления на собственные нужды, т. е. используется 100 − 3 = 97%. 0.97 .
R9 Адрес начала дня программы. 70. .
Ra Нереализованные остатки продукции. 0. .
Rb Если это положительное число, то количество людей, пришедших в кафе, но не обслуженных. Если отрицательное, то количество пустых мест в зале. 0. .
Rc Постоянные клиенты. Наша опора. Для начала 30. .
Rd Деньги. 250. .
Re Адрес процедуры ввода суммы. 72. .

Пояснение по неиспользуемым регистрам. R6 при написании очень похож на Rb (по крайней мере моим подчерком). А R0 не используется потому, что на ПМК БЗ-34 регистры Re и R0 совмещены. А программа совместима с БЗ-34, т. е. не содержит команд, специфичных для МК-61.

Так же обращаю внимание, что переменные R3, R5, R8, Rc, Rd можно менять (R7, R9, Re менять нельзя, это константы). Для примера, в оригинале R8 использовался для операции косвенного перехода, но если его установить в 0.33333333, то программа тут же становилась не рабочей. В данной версии такой ошибки нет.

Игра

Переключатель Р-ГРД-Г в положении Р. Игра начинается командой В/О, С/П. На индикаторе Е. . В регистре Y имеющиеся в наличии 250 рублей. Пора выделять средства на приобретения продуктов. Напомним, что на одного предполагаемого клиента надо потратить 5 рублей. Имеем 30 завсегдатаев, человек 8–10 привлечёт реклама, возможно, 1–2 заглянут с улицы. Выделяем для обслуживания 40 посетителей 200 рублей. 200. , С/П.

Загорается Г. . В регистре Y 64 рубля с копейками (скидка за оптовость была ощутимой). Теперь самое время платить за рекламу. Выделим на это дело, скажем, десятку: 10. , С/П.

На индикаторе С. . А в регистре Y оставшиеся у нас 54 рубля и 14 копеек. Рассчитываем на 40 клиентов, значит, достаточно 20 рублей накладных расходов: 20. , С/П.

ПМК подводит итоги дня. Через некоторое время узнаём, что в кассе теперь 265 рублей 91 копейка (на экранчике Е. в регистре Y – деньги). Обслужили мы, как и намеревались, 40 человек (П→xc). Зато 17 потенциальных клиентов ушли из заведения не солоно хлебавши (П→xb). Это плохо – завтра ни они, ни их друзья и знакомые к нам уже не заглянут. С другой стороны, обеды обошлись едокам по 6 рублей (П→x4), дешевле, чем они рассчитывали, так что добрый слух о нашем кафе тоже распространится. В общем первый день завершился вполне удовлетворительно.

ПМК ждёт новой информации (новый день). Повторим: 200. , С/П, 10. , С/П, 20. , С/П. Результат: 259 рублей 26 копеек. Почему снижение? В регистре Rb – минус 3.795. Почти 4 обеденные порции остались не востребованными, причём большая часть этих продуктов испортилась – остатки полноценной пищи (1.26) располагаются в регистре Ra. В регистре Rc число 36.2, т. е. пообедало у нас всего 36 человек и ещё кто-то перехватил какую-то мелочь. Вот ведь как отыгрались вчерашние обиженные клиенты!

Но продолжим свою трудовую деятельность. Как быть? Неужели репутация кафе упала бесповоротно? Была не была, повторяем прежнюю стратегию: 200. , С/П, 10. , С/П, 20. , С/П. Результат неожиданный: в кассе 274 рубля, стало быть, наблюдался наплыв (а с другой стороны, это естественно, ведь накануне были свободные места). Мы, как и намечали, накормили 40 клиентов… Смотрим Rb. О ужас! Почти столько же ушло ни с чем. Можно закрывать лавочку – завтра никого не будет. Население таких очередей не прощает. По крайней мере в кооперативном секторе.

Новая игра

Перед началом очередной игры нужно будет обнулить регистры Ra, Rb. Задать начальное количество постоянных клиентов в Rc, и прописать начальный баланс в Rd.


Текст программы

 # |  00 01 02 03 04 05 06 07 08 09
 00 |  КБП9 x→П2 F + Кx→П1 КППe F Ftg-1 КП→x1 ×
 10 |  2 ÷ П→xc + П→xb П→xb П→x5 ×
 20 |  Fx<0 23 Cx x→П4 КППe 2 × x→Пb П→x2 П→x3
 30 |  ÷ П→xa + x→Пa КП→x1 x→Пc Fx≥0 32 Fπ
 40 |  ÷ x→Пa П→x4 П→xb П→x2 + П→xc ÷ x→П4 ÷
 50 |  В↑ П→xc x→Пb Fx<0 62 /-/ 3 ÷ x→Пa
 60 |  <-> x→Пc П→xc П→x4 × П→xd + П→x8 × x→Пd
 70 |  П→x7 x→П1 П→xd П→x1 С/П Кx≥0e П→xd <-> Кx≥0e
 80 |  x→Пd FВx В/О