秋元@サイボウズラボ・プログラマー・ブログ

 

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

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 という名前の図形を表示できるように学習させています。

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

 

Tafels.app – 子供の算数計算を鍛えるブラウザゲーム + ソースコード

Tafels.app は、ブラウザ上で動く計算練習のアプリです。

掛け算・足し算・引き算があり、それぞれ一番簡単なレベルだけアンロックされていて遊べます。

表示された計算式の答えを、9個の候補の中から時間内に選ぶというだけのゲーム。一定以上正解すると次のレベルがアンロックされて遊べるようになります。

答えの数字を入力するものに比べると本当の計算力を測る力は弱いかもしれませんが、スマートフォン上のブラウザで気軽に遊べるのはこちらの選択式のインタフェースかもしれません。

ソースコードが公開されています。JavaScript をコンパイルして実行コードに自身は含まないという特徴のSvelteで作られたフレームワークSapperを使って作られています。

via Hacker News

 

Unim.press – redditのトップページを新聞紙面風にデザイン

unim.pressは、海外の巨大掲示板 reddit の最新人気記事を昔の新聞風デザインにして見せるというサイトです。

記事の本文は全部埋め草なので、タイトルで気になったら結局reddit にジャンプするんですけどね。できればコメントから記事本文みたいなものも生成してほしいところ。

記事にマウスを置くと、その記事の画像だけカラーになります。レトロ風味のモノクロと、気になった記事でちゃんと画像を見たいという気持ちを両立させた設計でしょうか。

新聞を何十年も読んできた人は特に、新聞の記事並びの形式に親和性があるでしょうし、ただ表のように順に並んでいるよりもこちらの方が楽という人はいるかもしれません。今起こっていることを俯瞰的にみられるという効果も… どうでしょうね。

それに、できた紙面を見ると懐古調というか、くだらないニュース(失礼)もなんだか意義のあるニュースに見えてくるということもあるかも。あるメディアを別のメディアの形式に置き換えるというアイデア、他にも何か作れるかもしれません。

via Hacker News

 

Plain Old Recipes – レシピサイトの最小限必要部分だけを表示する変換サイト

クックパッドの適当なレシピページには、画像がふんだんにあり、関連レシピやレシピを使った人のレポートなども並んでいます。

これを plainoldrecipe に通すと、こんな感じで表示されます

1ページにレシピがすべて収まり、料理の写真は1枚だけ。

対応サイトは70個以上あるようで、レシピ部分の抜き出しをがんばって作ったのだろうなあと。

他のレシピサイトのレシピを入れてみたもの。

料理の材料や名前で似ているレシピを辿れるのもレシピサイトの楽しみだと思いますが、簡潔なものだけ欲しいというユーザーには使えるかもしれません。それぞれのサイトがそういうモードを持っていてくれてもいいのかも。

GitHub でサービスのソースコードが公開されています。poundifdef/plainoldrecipe

その説明によれば、これらのレシピサイトをパーズするライブラリがOSSでこれも公開されていて、このライブラリを使用して実現しているようです。

via Hacker News

 

首都からの距離で世界を分けたボロノイ図

首都からの距離をボロノイ図で表した世界地図です。もしも首都に一番近いエリアがその国だったら、と仮定すると、今ある国境とは違った景色が見えてきます。

アメリカ合衆国の西部がメキシコシティにより近いのは、歴史的経緯からも不思議ではない感じ。

日本(東京からが最短)を見ると、

カムチャッカどころかアラスカにまで食い込んでます。アラスカの西端ってオタワより東京の方が近いんですね。九州地方は完全にソウルの方が近い。

同様に、アメリカ合衆国の50州について州都からの距離で作ったボロノイ図もあります。

こちらは人工的に線引きされた州境も多いのであんまり違和感は出ないかな。アメリカの場合、州都は必ずしも大都市ではない、というのもありますね。

日本の都道府県でやっても面白そうだなと思いましたが、検索したら既に作ってる方がいました。

隣県の県庁所在地の方が近いし遊びに行く、みたいな地域も多そうですね。

via Hacker News