Найти в Дзене
Формат АА

Арифметический комбинатор в Factorio. Задача с сундуками.

Оглавление

Статья про тонкости игрового процесса в игре Factorio.

В этой статье рассказывается о примере применения арифметического комбинатора в Factorio.

-----------------------------------------

Важное
замечание! Эта статья была написана для первой версии игры Factorio.
Несмотря на некоторые несовпадающие механики игры, предметы или их
свойства, статья по-прежнему актуальна и для текущей версии игры.

-----------------------------------------

Предисловие.

Арифметический комбинатор в игре Factorio выполняет обычные арифметические действия по заданному условию. Его работа в логической цепочке довольно проста. На вход комбинатора приходят определённые сигналы, с которыми производятся простейшие арифметические действия. Результат передаётся на выход комбинатора.

В текущей статье будем рассматривать не типичный для игры пример, когда использование арифметического комбинатора не требуется. Но это всё же будет сделано для удобного понимания принципов работы арифметического комбинатора.

Задача с сундуками.

Создаём условие задачи: пусть где-то расположено нефтеперерабатывающее производство. Излишки продукции нефтепереработки идут на создание твёрдого топлива. Излишков мало – твёрдое топливо создаётся понемногу. Мы проложили железную дорогу и готовы поездом забирать твёрдое топливо. На станции погрузки установлены 4 деревянных сундука, они медленно и неравномерно заполняются. В сумме, объём наших сундуков превышает объём вагона. Нужно как-то сделать чтобы поезд приезжал и забирал твёрдое топливо, когда оно заполнит каждый сундук наполовину или больше.

1. На ж/д станции установлены 4 сундука для погрузки твёрдого топлива.
1. На ж/д станции установлены 4 сундука для погрузки твёрдого топлива.

Сразу оговоримся, что в игре это решается очень просто: никаких изобретений не требуется – поезд приезжает, стоит до полной загрузки, затем уезжает. Либо сундуки соединяются сигнальным проводом со станцией и она включается/выключается по условию, когда общее количество твёрдого топлива в сундуках превышает половину.

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

В нашей задаче требуется найти среднее арифметическое значение от количества всех четырёх сундуков. Эдакий «общий» средний объём одного сундука. И когда этот средний объём сундука будет больше половинывключить ж/д станцию.

Пускаем на станцию погрузки твёрдое топливо. Сундуки начинают заполняться:

2. Сундуки заполняются твёрдым топливом.
2. Сундуки заполняются твёрдым топливом.

В зоне действия электричества ставим арифметический комбинатор:

3. Установлен арифметический комбинатор.
3. Установлен арифметический комбинатор.

Соединяем сундуки между собой сигнальным зелёным проводом для того чтобы считывать общее количество твёрдого топлива из всех сундуков. Далее соединяем сундуки сигнальным зелёным проводом с входом арифметического комбинатора. Теперь по сигнальному проводу на вход арифметического комбинатора будет поступать общее количество твёрдого топлива со всех четырёх сундуков:

4. Сундуки соединены с арифметическим комбинатором сигнальным зелёным проводом.
4. Сундуки соединены с арифметическим комбинатором сигнальным зелёным проводом.

Щёлкаем по арифметическому комбинатору, в открывшемся окне настроек выбираем сигнал, который ожидаем на входе в комбинатор. Для этого щёлкаем по пустой ячейке под словом «Вход» и находим твёрдое топливо. Именно твёрдое топливо в нашем случае выступает в качестве сигнала поступающего от сундуков:

5. Устанавливаем в пустой ячейке входящий сигнал – твёрдое топливо.
5. Устанавливаем в пустой ячейке входящий сигнал – твёрдое топливо.

Из уроков математики помним, что среднее арифметическое значение находится путём деления общей суммы всех членов выражения на их количество. А значит, сумму всего твёрдого топлива, которое собирается по сигнальному зелёному проводу из сундуков, нужно разделить на количество сундуков, то есть на 4. Для этого выбираем знак выражения – деление «/»:

6. Устанавливается знак выражения – деление «/».
6. Устанавливается знак выражения – деление «/».

Вместо нуля во второй ячейке вручную вписываем 4 (количество сундуков):

7. Вместо нуля вручную вписывается значение 4.
7. Вместо нуля вручную вписывается значение 4.

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

Но полученное значение нужно куда-то записать чтобы можно было им воспользоваться. Для этого щёлкаем по пустой ячейке под словом «Выход» и выбираем любое обозначение для выходного сигнала. Например, латинская буква «O»:

8. На выходной сигнал устанавливаем латинскую букву «O».
8. На выходной сигнал устанавливаем латинскую букву «O».

Вот теперь всё идеально: количество твёрдого топлива из всех сундуков разделится на 4 и присвоится латинской букве «O»:

9. Арифметический комбинатор настроен и выполняет необходимую операцию.
9. Арифметический комбинатор настроен и выполняет необходимую операцию.

Для того чтобы включать/выключать ж/д станцию при помощи нашей логики, соединяем выход арифметического комбинатора со станцией сигнальным зелёным проводом:

10. Выход арифметического комбинатора соединён сигнальным зелёным проводом с ж/д станцией.
10. Выход арифметического комбинатора соединён сигнальным зелёным проводом с ж/д станцией.

Щёлкаем по железнодорожной станции и в настройках подключения логической сети ставим галочку на пункт «Включить/Выключить»:

11. Установлена галочка в пункт «Включить/Выключить».
11. Установлена галочка в пункт «Включить/Выключить».

А для того чтобы ж/д станция по логическому сигналу могла включаться/выключаться, необходимо настроить условие включения. Для этого в левой части условия выбираем тот самый сигнал «O», идущий от арифметического комбинатора:

12. В левую часть условия устанавливается сигнал «O».
12. В левую часть условия устанавливается сигнал «O».

Так как требуется вызвать поезд, если в «общем среднем сундуке» твёрдого топлива оказалось больше половины, то в условии устанавливаем знак «больше»:

13. В условии нужно установить знак «больше».
13. В условии нужно установить знак «больше».

Один деревянный сундук имеет 16 ячеек для хранения. Каждая ячейка может хранить 50 твёрдого топлива. Значит весь сундук при максимальном заполнении может хранить 16х50=800 твёрдого топлива. По условию требуется больше половины, то есть больше 400. Поэтому в правой части условия вручную вписываем 400:

14. В правую ячейку условия вручную вписывается значение 400.
14. В правую ячейку условия вручную вписывается значение 400.

Теперь ещё раз пробежимся по всей логической цепочке:

  • Деревянные сундуки, по условию, заполняются неравномерно. Один может быть заполнен почти доверху, другие быть почти пустыми. Общее количество твёрдого топлива из всех четырёх сундуков суммируется в сигнальном зелёном проводе и подаётся на вход арифметического комбинатора.
  • Арифметический комбинатор делит входящее количество на 4 (по количеству сундуков) и присваивает полученное значение сигналу, обозначенному латинской буквой «O». С выхода арифметического комбинатора сигнал «O» с присвоенным значением поступает в ж/д станцию.
  • В станции происходит проверка условия: если значение пришедшего сигнала «O» больше 400 (в среднем, больше половины сундука) – станция включится. Если меньше 400 (в среднем, меньше половины сундука) – ничего не произойдёт. То есть, ж/д станция выключается, если «среднеарифметический сундук» заполнился твёрдым топливом меньше половины. Но включается, если «среднеарифметический сундук» заполнился твёрдым топливом больше половины.

И, если в среднем, сундуки заполнились больше половины – ж/д станция включится и на неё приедет поезд для погрузки твёрдого топлива:

15. После срабатывания заданного условия ж/д станция включилась и на неё приехал поезд.
15. После срабатывания заданного условия ж/д станция включилась и на неё приехал поезд.

Послесловие.

В статье использовался не самый актуальный пример работы ж/д станции с сундуками, но показательный для примера работы арифметического комбинатора. Наглядно удалось посмотреть как несколько сундуков передают общее значение хранимого в них твёрдого топлива на вход арифметического комбинатора. А комбинатор, в свою очередь, выполняет деление на количество этих сундуков, получая среднее арифметическое значение.

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

Чертежи.

К этой статье нет чертежей. Чертежи к другим статьям можно скачать в текстовых файлах в моём канале Telegram.

-----------------------------------------

Прямая ссылка на канал Telegram: https://t.me/format_aa

☕️ Если вы хотите угостить меня кофе или вкусняшкой за старания, сделать это можно с помощью доната: https://boosty.to/format_aa/donate

-----------------------------------------

Подпишись на канал и узнавай больше +

#Формат_АА
#Factorio
#схемы
#чертежи
#арифметический
#комбинатор