ガチャ、オートマトン、オイラー積分 - Analytic Combinatoricsが面白い

Analytic Combinatoricsがめちゃくちゃ面白い。場合の数という離散的なものを数えるのに、連続的世界から生まれた解析学の知見を用いる分野だ。階乗をガンマ関数で表示するだとかいうレベルではなく、マクローリン展開の係数を調べることで場合の数を知るよ…

さけるチーズを避けるチーズによるラムダ計算・Lazy K入門

純粋関数型言語「さけるチーズ」とは、難解プログラミング言語「Lazy K」の文法に束縛変数を導入することでラムダ計算風にし、自然言語的に意味が通るように文法を直した言語です: woodrush.hatenablog.comこの記事では、「さけるチーズ」を用いてチャーチ…

さけるチーズを避けるチーズで作る関数型言語

最近、「裂けてるさけるチーズを裂けて避けるチーズが載ってる裂けてる地図を裂けて避けるチーズ」が話題になりました。 togetter.com「さけるチーズを避けるチーズ」において、チーズがさけるチーズを避けた結果、残るのはチーズ。 「さけるチーズを避ける…

Configuring and Installing TensorFlow for Non-Titan GPUs

TensorFlow officially supports GPUs with versions greater than the GeForce GTX TITAN. However, it is possible to configure and install TensorFlow for GPUs before Titan, such as the GeForce GTX 960 (which I have used for verification) by us…

tmuxの使い方:一晩サーバーに仕事を投げて、翌日結果を見たい!

「一晩サーバーに仕事を投げて、翌日結果を見たい!」 「学校でサーバーにタスクを投げて、後で家で確認したい!」 「Windows Updateが始まってssh接続が切れてしまった…つらい…」こんな場面はしばしばあります。普通にssh接続をしている場合、接続を切ると…

Installing Torch (OpenBLAS) on Ubuntu 15.04 with Skylake CPUs

As I encountered a problem installing Torch in Ubuntu 15.04 probably because of using Skylake CPUs (Intel Core i7 6600), I would like to share how I have managed installing it on my system. The main reasons were installation errors of Open…

Survey: Marschner, et al. (2003), Light scattering from human hair fibers (The Marschner Model)

A survey of Marschner (2003), a.k.a. the original paper for the Marschner Model

An intuitive explanation for the "Russian Roulette" sampling technique in ray tracing

The "Russian Roulette" sampling technique (which is creepily named, but is known officially as so) is a sampling technique used in ray tracing to reduce the number of samples for evaluating some value, while maintaining the convergence. It…

MATLABで、for文・parfor文中で関数内のパラメータを様々に変えて計算をする方法(クロージャの利用)

たとえば以下のような状況があると思います。 ある微分方程式の解軌道を、for文中で異なるパラメータごとに描きたい ある方程式の解を、for文中で異なるパラメータごとに求めたい このようなとき、ode45やfsolveを使いますが、for文中で関数の中身のパラメー…

MATLABのparforの使い方メモ(高速化のために)

MATLABのparfor構文を使うと、parfor内の処理を並列で行ってくれるため簡単に高速化ができます。たとえば多くのパラメータに対するシミュレーション結果を得たいとき、parforを使うと各パラメータに関する計算を簡単に並列化することができます。しかし、par…

画面を割ってしまいタッチ操作不能になったAndroidからadbでデータを救出・移行した記録

先日、Xperia Z3をアスファルトに落としてしまい、画面が操作不能になってしまいました。僕は画面ロックにパターンロックを使っていたのですが、これの解除に一苦労しました。結果的にadbとその仲間たち、特にパターンロックの解除にuiautomatorが大活躍しま…

MATLABで自動的にfigureを重ならないように並べる

MATLABで、figureが互いに重ならないように並べるgridfigureというコマンドを作りました。 gridfigure - File Exchange - MATLAB CentralMATLABのfigureには'defaultfigurecreatefcn'という隠されたプロパティがあり、これを変えることでfigureウインドウ作…

Generalized "Make 10 with 4 numbers game" solver

「4つの数字で10を作るゲーム」を一般化した、「与えられたn個の数字の四則演算(追記:および括弧)でNを作るゲーム」の解を一つ求めるコードをPythonで書きました。 ポイントは、Generator機能を再帰して使っていることです。これにより、計算式の生成がか…

UnityのTransformの子要素機能は大量に要素を詰めると重い

Sceneロード実行時に128^2個(16384個)のGameObjectをInstantiateし、それを全てUnityのGameObjectに直接の子Transformとして指定するようにしたところ、Sceneのロードがかなり重くなりました。更に、各子要素のあるメソッドを呼んでいたのですが、これはIn…

macで快適にTeX - Sublime Text (make) から直接TeXからPDF作成できるテンプレート

TeX

普段使っている、Sublime Textから「Command + B」を押すだけ(あるいは、好みのエディタからmakeするだけ)でTeX書類が作れる、shellscript・Makeを使ったTeXテンプレートを紹介します。Mac OS X 10.8, 10.9で(日々)動作確認しています。特に、JPEG・PNG…

MATLAB BF Interpreter

bfi.m function ret = bfi(prog) m = zeros(1,1024); mp = 1; stdout = []; prog = regexprep(prog, '[^><\+-\[\]\.,]', ''); prog = strrep(prog, '+', 'm(mp) = m(mp) + 1;'); prog = strrep(prog, '-', 'm(mp) = m(mp) - 1;'); prog = strrep(prog, '>', …

MATLAB Quine

Quineとは、「自分自身のコードを出力するプログラム」です。 これの難しさは、例えば printf("hello world!");という文字列を出力するためには、 printf("printf(\"hello world!\");");のようなものを書けば良いのですが、こうすると作ったコードが元のコー…

MATLABの無名関数内で条件分岐・複数行実行を行う方法

これらは、以前Obfuscated MATLAB Codeを書いた時に使ったテクニックなのですが、通常のMATLABプログラミングでも使えそうだと思ったので紹介します。 Yet Another Obfuscated MATLAB Code - woodrush’s diaryこれらのテクニックの根底にあるのが、fevalとい…

Yet Another Obfuscated MATLAB Code

なんと、以下のコードはちゃんとした、実行できるMATLABコードになっています。growth.m figure(1) clf,hold on,grid on,view(58,38),feval(@(mm,x)mm(@(O)mm(@(Y,U,V,W,v,nN,NN,Mm,mM,md,Nn)... mm(@(G)mm(Y(G),x,0,0,v(mM(x))),mm(@(L)(@(M)(@(n,p,q,r)mm(…