J言語のiotaはi.
i. 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
1を足して1〜15に修正
1 + i. 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
変数aに入れる(=.はローカル代入。=:がグローバル代入)
a =. 1 + i. 15
a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3の剰余を求める
3 | a
1 2 0 1 2 0 1 2 0 1 2 0 1 2 0
その結果を0と比較する(真が1で偽が0)
0 = 3 | a
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1
真の位置に対応するaの値を取り出す(~は#の引数を交換)
a #~ 0 = 3 | a
3 6 9 12 15
インデックスに使うために1を引いて(-1を足して)おく
_1 + a #~ 0 = 3 | a
2 5 8 11 14
インデックスに対応する場所を'Fizz'で置換(})する…が、数値ベクトルに文字はまぜられない
'Fizz' (_1 + a #~ 0 = 3 | a) } a
|domain error
| 'Fizz' (_1+a#~0=3|a)}a
とりあえず数値で置換して動くことだけ確認
7122 (_1 + a #~ 0 = 3 | a) } a
1 2 7122 4 5 7122 7 8 7122 10 11 7122 13 14 7122