Two Dice of A sides

http://golf.shinh.org/p.rb?Two+Dice+of+A+sides
id:letterさんマジでスゲー。
2byteの差からしアルゴリズムが違うと踏んでたけどやぱりか。
変数を2個使う方法は考えていたけど、このやりかたは思いつかなかった。

とりあえず、id:letterさんに負けてるけど自分が書いたコードの解説

main(n){
  while(9/printf("N=%d,A=%d\n",n++,5-~(n/11?:n-11)/2));
}

9/printf(...)はprintfの戻り値は出力したバイト数であるという点と、
最後のN=99のときに始めて戻り値が10になるのを利用。
単純に10>printf(...)と書くより1byte短い。
類似系としてprintf(...)%5も、こっちは思いつかなかった。


あとはprintfの中身はループ毎に値を計算する方式。
細かい技術だけど、-~a==a+1なのを利用して短縮。