弥生研究所

人は誰しもが生きることの専門家である

【Factorio】Everything, Anything, Each【回路ネットワーク】

回路ネットワーク 難易度
基本編 ☆☆

今回は、以下の三つの論理シグナルを説明します。

  • Everything(すべて)
  • Anthing(いずれか)
  • Each(それぞれ)

シグナルの種類

f:id:yayoi-tech:20200208143345j:plain
シグナルのチャネル

論理シグナル以外を、以下では通常シグナルと呼んでいます。通常シグナルは回路ネットワーク上に出力できる信号です。論理シグナルは回路ネットワーク上に出力できません。

入力信号の条件としての論理シグナル

Everything(全て)

真の条件:

  • 入力信号の全てが条件を満たすとき真となる
  • 入力信号が無いとき真となる

偽の条件:

  • 入力信号のいずれかが条件を満たさないとき偽となる

入力信号が無いとき真となることに注意が必要です。

Anything(いずれか)

真の条件:

  • 入力信号のいずれかが条件を満たすとき真となる

偽の条件:

  • 入力信号の全てが条件を満たさないとき偽となる
  • 入力信号が無いとき偽となる

Each(それぞれ)

真の条件:

  • 個々の判定のみで、全体の判定を行わない

偽の条件:

  • 個々の判定のみで、全体の判定を行わない

Each は入力信号の真偽判定という観点では Anything と同等の振る舞いをします。より正確に表現すると、Everything や Anything は個々の入力信号を条件で判定したうえで、全てが真か、いずれかが真かという論理判定を行いますが、Each では個々の入力信号を条件で判定するだけです。Each は全体の真偽判定を行いません。Everything と Anything に比べて、Each はそもそも振る舞いが違います。両者の違いは、出力に現れます。

出力信号としての論理シグナル

入力:Everything(全て)

出力信号に通常シグナルを使った場合:
  • 入力信号の「全て」が真だった時に、任意の通常シグナルを「1」個出力する
  • 入力信号の「全て」が真だった時に、任意の通常シグナルを「入力数」個出力する

「入力数」個出力する場合の「入力数」は入力信号のチャネルに縛られるため、入力信号以外の信号を「入力数」個、出力することはできません。

出力信号に論理シグナル「全て」を使った場合:

入力信号の条件として「全て」を使用した場合、出力信号に使える論理シグナルは「全て」だけです。

  • 入力信号の「全て」が真だった時に、入力信号の「全て」を「1」個、出力する
  • 入力信号の「全て」が真だった時に、入力信号の「全て」を「入力数」個、出力する

入力信号がないときに「全て」が真になった場合は、「全て」を出力にしても、入力信号が無いので、何も出力されません。

入力:Anything(いずれか)

出力信号に通常シグナルを使った場合:
  • 入力信号の「いずれか」が真だった時に、任意の通常シグナルを「1」個出力する
  • 入力信号の「いずれか」が真だった時に、任意の通常シグナルを「入力数」個出力する

「入力数」個出力する場合は、出力するシグナルの入力信号が条件を満たしている必要があります。入力信号以外の信号を「入力数」個、出力することはできません。

出力信号に論理シグナル「全て」を使った場合:

入力信号の条件として「いずれか」を使用した場合、出力信号に使える論理シグナルは「全て」だけです。

  • 入力信号の「いずれか」が真だった時に、入力信号の「全て」を「1」個、出力する
  • 入力信号の「いずれか」が真だった時に、入力信号の「全て」を「入力数」個、出力する

入力信号の「全て」を出力するので、条件を満たしていない入力信号も出力します。条件を満たした入力信号のみを出力したい場合は、Each(それぞれ)を使います。

入力:Each(それぞれ)

出力信号に通常シグナルを使った場合:
  • 条件を満たした「それぞれ」の入力信号につき、任意の通常シグナルを「1」個出力する
  • 条件を満たした「それぞれ」の入力信号につき、任意の通常シグナルを「入力数」個出力する

通常シグナルで出力する場合、その出力数は条件を満たした入力信号の各出力数の総和になります。これは、入力信号が「それぞれ」条件判定され、出力信号が「それぞれ」から出力されているイメージです。論理回路が最終的に出力する信号の量は「それぞれ」の総和になります。

つまり、 * 出力数に「1」を指定した場合、出力されるのは条件を満たした入力信号のチャネルの数 * 出力数に「入力数」を指定した場合、出力されるのは条件を満たした入力信号の総量 を表します。

この時の出力数は入力信号のチャネルに縛られないため、入力信号以外の信号を出力することができます。

出力信号に論理シグナル「それぞれ」を使った場合:

入力信号の条件として「それぞれ」を使用した場合、出力信号に使える論理シグナルは「それぞれ」だけです。

  • 条件を満たした「それぞれ」の入力信号を、「それぞれ」「1」個づつ出力する
  • 条件を満たした「それぞれ」の入力信号を、「それぞれ」「入力数」個づつ出力する

以上です。

論理シグナルは取っ掛かりは複雑な印象を受けますが、実は単純な動きをしています。難しいと思う方は、実際に動かしながら、その挙動を確認してみてください。

f:id:yayoi-tech:20190917171944p:plain