ネタ

2009年05月18日

紫ログのささやかな流量のアクセスログ(どんな検索語で来てるかとか特に!)を見るのも余暇の楽しみの一つなわけですが、最近のアクセスログに、特定のIPから手動でトップページのみを度々チェックしに来てるっぽいアクセスがあるのが妙に気になっています。

ほとんどページ遷移してないし、記事内容にはそれほど興味がなさそうなので単なるネットストーキング^H^H^H^H^H^H^H^H^H生存確認(笑)の類かとは思いますが、

Subscribe with livedoor Reader

こういうのを貼りたくなりました。RSS購読は便利ですよ。
ちなみに自分は英語版のほう(fastladder)を使っています。

続きを読む

(22:48) Φ

2008年12月11日

普段自分は
% tar zxvf foo.tar.gz
ないし
% tar zxf foo.tar.gz
と打ちますが、amachangがtar xvfzでやってるのを見て4!=24通りの可能性をGoogleで調べてみたメモ。

皆さんは普段どれをお使いですか?(よろしければコメントかはてブでどうぞ)
tar fvxz 484  もしかして: "tar xfvz"
tar fvzx 21
tar fxvz 196  もしかして: "tar xfvz"
tar fxzv 36  もしかして: "tar xfvz"
tar fzvx 9
tar fzxv 46  もしかして: "tar zxvf"
tar vfxz 444
tar vfzx 44
tar vxfz 839  もしかして: "tar xvfz"
tar vxzf 3430  もしかして: "tar xvzf"
tar vzfx 41
tar vzxf 2960
tar xfvz 15800
tar xfzv 2490  もしかして: "tar xfvz"
tar xvfz 111000  他のキーワード: tar xvfz コマンド
tar xvzf 190000  他のキーワード: tar xvzf コマンド
tar xzfv 3960  もしかして: "tar xzvf"
tar xzvf 182000
tar zfvx 202
tar zfxv 378  もしかして: "tar zxvf"
tar zvfx 1350
tar zvxf 14500  もしかして: "tar zxvf"
tar zxfv 8610  もしかして: "tar zxvf"
tar zxvf 1430000  他のキーワード:
 tar zxvf コマンド linux tar zxvf tar zxvf 圧縮 tar zxvf 解凍
追記:
Gaucheのpermutationsは便利。
(use util.combinations)
(map (cut print "tar " <>)
     (sort (map list->string (permutations (string->list "zxvf")))))
追記2:
最近のGNU tarはファイル(拡張子?中身?)を見てauto-detectしてくれるらしい。
(これは試してみたいと思ったがビルドに失敗・・・)


(12:59) Φ

2008年12月10日

素人くさいSICP読書会@三田にて。
Schemeではドットを含む a.b は1シンボルとして認識されるが、コンマを含む a,b は1シンボルにならない、という話から派生して
gosh> (define 'a (* a a))
quote
gosh> '2
4
gosh> ''2
16
gosh> '''2
256
gosh> ''''2
65536
gosh> '''''2
4294967296
gosh> (define ,b (* b b b))
unquote
gosh> ,2
8
gosh> ,,2
512
gosh> ,,,2
134217728
gosh> ,,,,2
2417851639229258349412352
gosh> ,,,,,2
14134776518227074636666380005943348126619871175004951664972849610340958208
gosh> (define `c (* c c c c))
quasiquote
gosh> `2
16
gosh> ``2
65536
gosh> ```2
18446744073709551616
gosh> ````2
115792089237316195423570985008687907853269984665640564039457584007913129639936
gosh> `````2
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
ゴルフで使える・・・かな。

おまけ (Gauche)
gosh> (define #?=d (* d 2))
debug-print
gosh> #?=3
6
gosh> #?=#?=3
12
gosh> #?=#?=#?=3
24
gosh> #?=#?=#?=#?=3
48
gosh> #?=#?=#?=#?=#?=3
96


(20:52) Φ

2008年12月06日

iKnow!で英語以外の言語でも色々遊べるようになって最近楽しいです。

マイリストを1つ作ってみました。

yhara先生ごめんなさい><

(09:10) Φ

2008年04月24日

(asm (GOTO   skip-everything))

(define a 7)
(define b 8)

(print (+ 9 a b 10)) ;34

(let ((d 1)
      (e 10)
      (f 100))
  (print (+ b f 1)) ; expects 109 (= 8 + 100 + 1)
  )

(define f (lambda (x y) (+ x y a 1)))

(print (f 5 15)) ; expects 28 (= 5 + 15 + 7 + 1)

(asm skip-everything
     (GOTO  $))
とか書くと何も実行されずに終わる、とかはネタですが。

高速化・省メモリ化したい部分や、機種依存ライブラリをアセンブラで書く、みたいな用途に使えるといいかも。



(23:41) Φ

2008年02月17日

Lingr駆動で買ってきた「基礎ペルシア語」(岡崎正孝著/大学書林)を元に、Scheme(Gauche)でコードを書いてみるテスト。(see also: ペルシャ語の部屋)

方針:
 ・プログラムが処理してくれればいい =自分では覚えなくていい
 ・これはパズルゲームにすぎない。
 ・あるいはネタ駆動のプログラミング学習
 ・各課ではそこに出てくる例文が通ればいいという程度の設計で、インクリメンタルに進む
続きを読む

(12:18) Φ

2008年01月27日

無羨望(envy-free)分割というらしいのですが

2人だったら、「1人が切ってもう1人が先に選ぶ」というのはOK
3人だったら?4人以上だったら?

昨日の懇親会で西尾さんたちが話していたのを聞いて、皿の上に箸でカットパターンをあれこれ作ったりしながらしばらく考えていました。続きを読む

(15:34) Φ

2008年01月18日

二次元プログラミング言語「ず」 (by yhara) のRuby実装を参考に、勉強がてらGaucheで動くように移植してみました。

sample.zu:

*-----------------------*
|ask "do you like ruby?"|            *--------------------------------*
|                       +------------> ask "then, do you like python?"|
*------------------+----*            |                                |
                   |                 *-----+------------------------+-*
                   |                       |                        |
                   |                       |                        |
                   |            *----------v----------------------* |
 *-----------------v-----------*|say "maybe you don't like LL..." | | 
 |say "maybe you like Haskell."|*---------------------------------* |
 *-----------------------------*                                    |
                                     *------------------------------v---*
                                     |                                  |
                                     |say "maybe you like OCaml."       |
                                     *----------------------------------* 
$ gosh -Ilib zu.scm sample.zu
do you like ruby? [y/n]
> n
then, do you like python? [y/n]
> y
maybe you like OCaml.

λreposのアカウントをお持ちの方(※λかわいいよλな希望者に進呈)は

svn co http://lambdarepos.svnrepository.com/svn/share/lang/zu/interpreter/scheme/trunk zu-interpreter
お持ちでなくてもとりあえずこちらからダウンロードできます。

続きを読む

(05:35) Φ

2007年12月06日

先日LiveCoding#5会場でこっそり作ったZu→Brainf*ckコンパイラをRubyに移植してみました。

プログラミング言語「ず」をご存知ない方は
http://mono.kmc.gr.jp/~yhara/w/?ZuLanguage
をご覧ください。

Brainf*ck VMを同梱しているので、コンパイルしたBFコードをそのまま実行することもできます。
もっと綺麗な書き方が出来るところが幾らでもあると思いますが・・・とりあえずアップします。

http://ntzone.info/misc/zu2bf-0.1.0.tar.gz
→ CodeReposに置きました: http://coderepos.org/share/browser/lang/ruby/brainfuck

% cat sample.zu

 *-----------------------*
 |ask "do you like ruby?"|            *--------------------------------*
 |                       +------------> ask "then, do you like python?"|
 *------------------+----*            |                                |
                    |                 *-----+------------------------+-*
                    |                       |                        |
                    |                       |                        |
                    |            *----------v----------------------* |
  *-----------------v-----------*|say "maybe you don't like LL..." | | 
  |say "maybe you like Haskell."|*---------------------------------* |
  *-----------------------------*                                    |
                                      *------------------------------v---*
                                      |                                  |
                                      |say "maybe you like OCaml."       |
                                      *----------------------------------* 
続きを読む

(07:45) Φ

2007年11月25日

oreore2bf.awk - uint8な加減算と表示のみ可能なオレオレ言語→Brainf*ckコンパイラの試作で書いたプログラムを改良。

  • 値のインクリメント/デクリメントを、適宜ループを用いて(コードサイズを)最適化。
    • ループを使うと却ってコードが長くなる場合にはループ化しない
  • 文字列用のバッファをスタックの先頭に移動。文字列を表示したいだけのプログラムに有利なように。
  • スペースが含まれる文字列では、0x20を保持しておくようにした
  • oreore2bf.awkの出力にsedをかけて更に短く
 awk -f oreore2bf.awk foo.src | sed 's/<>//g; s/><//g; s/[-+<>,]*$//g' > foo.bf

とりあえず、100までの素数を(竹迫さんのbpencode的に)吐くプログラム

print "2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97"
が298バイトのBrainf*ckコードにコンパイルされる。
>>++++++++[<++++<++++>>-]++++[<++++>-]<++.<.>+.<.>++.<.>++.<
.>------..<.>.++.<.>--.++++++.<.>------.++++++++.<.>-------.
+.<.>-.+++++++.<.>------.--.<.>++.++++.<.>---.---.<.>+++.-.<
.>+.+++.<.>--.--.<.>++.++++.<.>---.-----.<.>+++++.+.<.>.----
--.<.>++++++.----.<.>++++.++.<.>-.-----.<.>+++++.+.<.>.--.
[[bpencodeが吐くプログラム>http://namazu.org/~takesako/ppencode/bpencode.html]]
>++++[<++++++++>-]>++++++++[<++++++>-]<++.<.> +.<.> ++.<.> +
+.<.> >++ [<--->-]<..<.> .++.<.> --.>++ [<+++>-]<.<.> >++ [<
--->-]<.>++[<++++>-]<.<.> >++[<--->-]<-.+.<.> -.>+++[<++>-]<
+.<.> >++ [<--->-]<.--.<.> ++.++++.<.> ---.---.<.> +++.-.<.>
 +.+++.<.> --.--.<.> ++.++++.<.> ---.-----.<.> +++++.+.<.> .
>++ [<--->-]<.<.> >++ [<+++>-]<.----.<.> ++++.++.<.> -.-----
.<.> +++++.+.<.> .--.

は382バイトになるが、これは

  • ±6〜9のインクリメント/デクリメントをループに変換している
  • その際にスペースが混入するため、プログラム全体では30字のスペースを含む

ためである。あえてループを使うのは難読化のためかと邪推。

今回のソース(AWK)は以下の通り:

続きを読む

(02:37) Φ