ExchangeIF

September 23, 2018 · View on GitHub

one of Esolang using EXIF Data. It works on hakatashi/esolang-box.

How to Use

prepare pictures, and zip these pictures. and

ExchangeIF [zipfile]

to execute.

Documentation

取り敢えず日本語で書いておく。

ルールその1
プログラムは作成日時の早い順に実行されていきます。同時刻のファイルがある際の動作はランダムです。

ルールその2
変数はGPS座標で識別します。1次元配列です。latitude, longitudeで識別します。各変数には数値が1つだけ入ります。latitudeは入力、longitudeは出力で用います。例えば、

lat=32 <= lng=40
``$
で32番データに40番データを代入する、みたいな。

\text{\_\_}ルールその3\text{\_\_}<\text{br}>
1コマンドは1つの画像からなり、コマンド及びその文法については以下のようになっています。

|\text{ISO}コマンド|条件|影響先|影響元|
|:------------:|:------------:|:------------:|:------------:|
|代入|\text{ISO}が0~99|\text{GPS}(\text{lat})|画像サイズ(縦 \times 横がそのまま入る)|
|入力|\text{ISO}が100~199|\text{GPS}(\text{lat})|無し(標準入力から1文字文字コードとして受け取ります)|
|出力|\text{ISO}が200~299|無し(標準出力へ文字コード1文字)|\text{GPS}(\text{lng})|
|加算|\text{ISO}が300~399|\text{GPS}(\text{lat})|\text{GPS}(\text{lng})|
|減算|\text{ISO}が400~499|\text{GPS}(\text{lat})|\text{GPS}(\text{lng})|
|乗算|\text{ISO}が500~599|\text{GPS}(\text{lat})|\text{GPS}(\text{lng})|
|除算|\text{ISO}が600~699|\text{GPS}(\text{lat})|\text{GPS}(\text{lng})|
|剰余|\text{ISO}が700~799|\text{GPS}(\text{lat})|\text{GPS}(\text{lng})|

\text{\_\_}ルールその4\text{\_\_}<\text{br}>
タイムトラベルが可能です。条件は
$``
画像加工上の最終変更日時と画像撮影日時が異なるとき、かつGPSのlatitudeが示す値(ルール5の影響を受ける)の値が非負のとき

に、現在時刻を画像加工上の最終変更日時に変更します。(これが発動するタイミングでは現在時刻は画像撮影日時のはずです)

ただし、タイムトラベルの代償として「移動した時間の1/150の時間」を無為に消費します。時間切れに気を付けましょう。 ISOコマンドとタイムトラベルの優先順位はタイムトラベルが上です。

ルールその5
ルール2でも述べたとおり、GPS座標はlat、lng共通です。Metering Modeを2進数として見たとき、下2桁について、

  • 下1桁が1→lngはlngが示す値の変数を参照します
  • 下2桁目が1→latはlatが示す値の変数を参照します

感想

実質bfなので面白みはありません。変則ショートコーティングに挑んでください。

Samples

  • HelloWorld

全部代入と出力からなります。

  • cat

入力→出力→タイムトラベルのループ。