Итак, имеем потоки символов, которые могут перемещаться по незанятым клеткам. За один такт символ переставляется в соседнюю клетку, если соседняя клетка занята функиональным кубиком, то в этом такте происходят соответствующие вычисления:
connectors - коннекторы бывают двух типов - входные и выходные (соответственно принимающие потоки символы извне и отправляющие потоки символов наружу);
mirrors - зеркала берут символ с одной стороны и в следующем такте переставляют с другой, поворачивая поток символов на 90 градусов;
translucent mirrors - полупрозрачные зеркала кроме создания ответвленного потока символов, пропускают основной поток сквозь себя;
transmitters - передатчики могут генерировать поток символов из рядом стоящего или мимо проходящего символа (символы вылетают в направлении стрелки);
accelerators - ускорители применяются для мгновенного пропускания сквозь себя потока символов без задержки на один такт в каждой клетке, в случае использования ряда ускорителей символ также за один такт преодолевает всю цепочку (символы вылетают в направлении стрелки, залетая с противоположной стороны);
duplicator - предполагалось что дупликаторы будут удваивать каждый символ в потоке, но это противоречит концепции равномерной и постоянной скорости распортранения потоков символов по пустым клеткам, поэтому я скорее всего уберу их из спецификации;
terminators - съедают потоки символов, пришедших с любой стороны;
arithmetic operators - арифметические операторы, входы сверху и снизу, а выход справа;
comparisions - сравнивающие кубики (==, !=, >, >=, <, <=), аргументы сверху и снизу, а логический выход справа (два возможных значения - T и F);
logic operators - логические операторы над потоками символов T и F;
selectors - переключатели потоков, управляющий логический вход толстая линия, переключаемые каналы - тонкие, с той стороны где выдающийся пиксел по середине - канал включаемый по T на логическом входе (второй канал соответственно включается по F, отключая первый).