カテゴリー
技術

名刺の裏にニューラルネットワークプログラム

Card Network は、名刺の裏に印刷されたコンパクトなニューラルネットワークのソースコードです。

名刺の裏にソースコード、という他の人のアイデアを見たアイルランドの大学で計算機科学を学ぶ修士生の Oisin さんが選んだのは、小さなニューラルネットワークを作る 878文字のC++のコード。

#include <bits/stdc++.h>

typedef float f;typedef std::vector<f> v;f K=0.01,R=0.01;struct L{int w,h,i;v W,x,z;L(int i,int o){W.resize(i*o);for(f&a:W)a=(rand()/(1.1-(1<<31))-0.5)/sqrt(i+o+0.);w=i;h=o;}v F(v X){x=X;v a(h);i=h*w;while(i--)a[i/w]+=W[i]*x[i%w];z=a;for(f&i:a)i=K>i?K:i;return a;}v B(v Y){v (w);i=w*h;while(i--){f Z=Y[i/w]*(z[i/w]>0?1:K);X[i%w]+=Z*W[i];W[i]-=R*Z*x[i%w];}return X;}};int main(){L n[]{L(40,50),L(50,50),L(50,1)};int l,z,k,i=500337;while(i--){z=242-i%243;k=40;v x(k),y;while(k--)x[k]=sin((k%2?z/27/3.:z%27/5.)+6.14*k/20);y=x;for(l=0;l<3;l++)y=n[l].F(y);v Y{2*(y[0]-("\x1e\0(0ドル)\\0(0ドル)\b\x01\0(0ドル)@H\374(3ドル)\377(3ドル)B\x12@\x18\x12G\302(3ドル)\\x10@\x12\372(3ドル)\377(3ドル)\221(2ドル)\x10\0(0ドル)\0(0ドル)\200(2ドル)\0(0ドル)\0(0ドル)\0(0ドル)\\x02"[z/8]>>z%8&1))};while(l--)Y=n[l].B(Y);putchar(" .,-*oO##"[(int)(y[0]*8)%9]);if(i%27<1)puts(i?i%243?"":"\033(0.3ドル)[9A":"\r\   --- Oisin Carroll ---\n\ gh:Oisincar  web:imois.in");}}

ここではCのstructで3層のニューラルネットワークを作り、Oisin という名前の図形を表示できるように学習させています。

エンジニアのスキルアピール、カンファレンスでの話題作り等に、自分の得意分野のコードをミニマムに名刺裏に掲載するアイデア、どうでしょうか。

カテゴリー
ゲーム

オリジナルZorkのソースコードがMITにより公開される

往年のテキストアドベンチャーゲーム Zork の1977年のソースコードが、MITにより発見されて公開されました。

MIT の説明によれば、1973年から1990年前半にかけての人工知能研・計算機科学研のバックアップテープから復元したデータが収集されているそうで、今回はその中から1977年のZork のソースコードが見つかったというわけ。

コードを見てみるとこんな感じ。


<GDECL (FF) STRING>
<DEFINE ILO (BODY TYPE NM1 NM2 "OPTIONAL" M1 M2)
#DECL ((BODY NM1 NM2 M1 M2) STRING (TYPE) FIX)
<COND (<==? .TYPE *400000000000*>
<COND (<OR <AND <MEMBER "<FLUSH-ME>" .BODY>
<NOT <MEMBER ,XUNM ,WINNERS>>>
<AND <MEMBER .NM1 ,WINNERS>
<MEMBER ,FF .BODY>>>
<EVAL <PARSE .BODY>>)>)>
<DISMISS T>>

;"ROOM FUNCTIONS"

往年のメインフレーム機 PDP-10 上で動くLISP系のMDPという言語だそうです。

2019年の4月にGitHubで公開された「Zorkのソースコード」と何が違うかですが、この時公開されたコードは、後に Zork を商用化(1979)して販売したインフォコム社が買収の後閉鎖された1980年代終わりに、社内のソースコード管理システムから取り出されたものなのに対し、今回のコードはInfocom 以前の MIT 時代に メインフレーム PDP-10 の上で動いていたものだということ。

(image Michael L. Umbricht, Wikimedia)

Infocom 版 Zork コードの発見者として知られるインターネット考古学活動家のジェイソン・スコット氏(Jason Scott)も早速、MIT のコードを fork しています。Zork ファンや Zork 研究者による調査がさらに進むのでは。

via Hacker News

カテゴリー
ネットのサービス

Codem Ipsum – ソースコードを Loren Ipsum化

JavaScript のソースコードを左側のペインに入れると、Loren Ipsum風に関数・変数名を置き換えて右側に表示してくれる、というwebサービスです。

本やウェブサイト制作時の文章のダミーとして使われることで有名な Lorem Ipsum のように、ソースコードのダミーとして使うことができるということ。

作者は「文法的には正しいまま、ダミーのコードを作りたかった」とのことです。変換後のコードも動くのか、は不明です。たぶんいろいろ不具合がでるんじゃないかな。

ソースコードは公開されたサイトのhtmlそのままですが、GitHub にも上がっています

via Hacker News