0〜1000に含まれる0をカウントする(Gauche)

この一週間ほどは、Gauche-Fuse拡張ライブラリを書いています。
Cの構造体をforeign pointer objectにして、構造体のアクセサも用意する。
このstubをCLOSのクラスでラッピングすれば(proxyクラスという)、もうお客様にもお出しできます。
Cの構造体とSchemeのCLOSを行き来する俺ってかっこいい。
でも組み込みのクラス(とか)を見るに、C側だけでクラス定義できるっぽい。

練習 - krystal: プログラミング超初心者(文系) - Rubyist
via 0〜1000に含まれる0をカウントする - ’(rubikitch wanna be (a . lisper))
via 0〜1000に含まれる0をカウントする - みずぴー日記

(use srfi-1)
(use srfi-13)
(use srfi-42)

;;(0..1000).map(&:to_s).join.count('0')と同じ
(string-count (string-concatenate (map x->string (iota 1001))) #\0)
=> 193

;;("0".."1000").inject(0){|s,x|s+x.count('0')}と同じ
(fold (lambda (x s) (+ s (string-count (x->string x) #\0))) 0 (iota 1001))
=> 193

;;リスト内包表記
(sum-ec (: i 1001) (string-count (x->string i) #\0))
=> 193

Unixコマンドで。(mzpさんのコメントをうけて修正)

$ seq 1000 | tr 0 '\n' | wc -l
1192

$ seq 0 1000 | tr -d '\n' | tr 0 '\n' | wc -l
193

とか

$ seq 0 1000 | tr -dC 0 | wc -c
193

とか。

UNIXという考え方―その設計思想と哲学
"よいプログラマはよいコードを書く。偉大なプログラマはよいコードを借りてくる。"