PC WatchにNPUでDOOMを動かしてみたという記事が出ていました。NPUではIF THENのような記述ができないので「掛け算の暴力」に書き換えたとのこと。
何のことかと思ったら、booleanを1か0として扱い計算式に入れてしまうということでした。
現代的ではありません(booleanをintに代入するのはダメ)が昔よくやりましたね特にBASICの時代。例えば16進文字を10進に変換するには、SにASCIIコードが入っているとして(S-48)+(S>=65)*7、でしたでしょうか。
Microsoft系BASIC以外だと&HのVAL()やHEX$()による16進←→10進変換ができないので、自前で記述しなければいけませんでした。その際に条件式が真なら-1、偽なら0になることを利用した式が活躍していたのです。なおSHARPのポケコンでは真は1でした。
8ビットパソコンとBASICインタープリタの時代は1行に詰め込んだ方が速かったのですが、その当時でも既に「あんまりやると見づらいよ」と雑誌や本で注意書きもされていましたっけ。
もっともDOOM実装ではコード全てに対してこのような書き換えをしたでしょうから簡単な話ではないでしょう。2つの関数(あるいはサブルーチン)呼び出しの分岐であれば中身を混ぜるような形でしょうか。人間がやるには面倒で気が遠くなる話です。
AIのコーディングは大したもんだと思った次第。

コメントする