Gaucheで天下一プログラマー予選例題

Klab 天下一プログラマーコンテスト 以下の文字列はUTF-8を文字エンコーディング形式とする16進数のバイト列である。 UTF-8でエンコーディングされた文字列として解析した場合、この文字列の【文字数】を答えなさい。 e4bba5e4b88be381aee69687e5ad97e58897e…

素因数分解もういっかい

素因数分解: ツムジのひとりごと ありがとうございます。111111111の計算に48秒もかかるのは私のミスです。factorizeの終了条件に[ (use util.stream) (define (composites s) (stream-delay (let1 p (stream-car s) (stream-cons (expt p 2) (xor (stream-m…

素因数分解 英語でいうとファクタライゼーション

みずぴー日記 素因数分解がナメたコードを書くことでおれの怒りが有頂天 Gaucheでエラトステネスの篩で素数ストリーム(世間一般のやつより速い)で破壊力ばつ牛ン (use util.stream) (define (composites s) (stream-delay (let1 p (stream-car s) (stream-con…

nsIInputStreamPumpの非同期処理にジェネレータを使う

こいつの使いかたをググると、onDataAvailableのたびに配列(メッセージキュー)に並べておいて、上から順番に処理するコードがよく見つかる。 Fx Socket - 枕を欹てて聴く 実はAjaxのとき話題になったんだが、ジェネレータで、こういった非同期処理を同期処理…

Gaucheでエラトステネスの篩で素数ストリーム(世間一般のやつより速い)

Haskellなどで人気の1行エラトステネスの篩は、アルゴリズム本来の計算量より遅いらしい。 sieve (p : xs) = p : sieve [x | x <- xs, x ‘mod‘ p > 0] LtU:The Genuine Sieve of Eratosthenes Wikipedia:en:Sieve of Eratosthenes それを受けて、LtUで以下の…

Gaucheでアトキンの篩で素数リスト

内包表記、百花繚乱。 ナイーブな実装なので、がんばればもっと速くなる。参考文献をどうぞ。 うっかり list:ec とtypoして、気づくのに20分ほど無駄にしたのはナイショだ。 (use srfi-42) (define-syntax vector-flip! (syntax-rules () ((_ vec i) (vector…

Gaucheで素数の二進法表記

二進数表記に変換してみる - みずぴー日記 経由 素数の二進法表記 - 西尾泰和のはてなダイアリー format "~8@a" で右詰めにして、trで"01"を":#"に変換する。 trの呼び出しを1回にしているのがミソ。 (use srfi-1) (use srfi-42) (use text.tr) (define (pri…

XPCOMでUTF-8文字列から入力ストリームを作る

最近、XULの勉強をしている。 Gaucheの豊富なポート操作に慣れているおかげで、XPCOMのストリームの理解がそれほど苦にならない。 GaucheはポートにバイナリIOとキャラクタIOを混ぜて使えたり、ファイルを重複して開いてもポートへの操作を共有してくれたり…

部分継続でDelegateMapをGaucheで

部分継続でDelegateMap - ヒビルテ (2009-03-16)が素敵なので、Gaucheで書いてみる。 Gaucheの部分継続の実装はKahuaから拝借 http://www.kahua.org/cgi-bin/viewvc.cgi/Kahua/trunk/src/kahua/partcont.scm?view=markup ;; (reset/pc expr) == (reset expr)…

SchemeのOpenGLで流体力学なデモを書いてみた

Ypsilonを試すため、C言語とOpenGLで書かれたコードをSchemeに移植してみた。 Ypsilon用 http://garakuta-okiba.googlecode.com/svn/trunk/fluid/ysmoke.scm Gauche用 http://garakuta-okiba.googlecode.com/svn/trunk/fluid/gsmoke.scm 双方とも 1〜2 fpsだ…

多面体描画道楽 SketchUpで正12面体を作ってみた

先日のShibuya.lisp TT#2で和田先生がLispとPostScriptで正12面体を描くお話をして下さり、面白かった。 そこで、3DモデリングツールのGoogle SketchUpで、スケッチを描くように簡単に正12面体を作ってみた。作図法は和田先生のこの記事によった。http://par…

Shibuya.lisp TT#2 でライトニングトークしてきた

「この木 なんの木 木になるS式 〜FUSEでS式ファイルシステム〜」 FUSEでファイルシステムへの操作を捕まえて、mkdirとtouchコマンドでLispプログラミング!というネタ。 発表時間を最大に使うため、動画で発表した。実演だとトチるもんね。 ニコニコ動画 htt…

サーバーサイドJavaScript(Rhino)の継続でCoroutineを書いてみた

Scheme 入門 16. 継続の例。 2つのタスクを交互に呼ぶ。 数字をプリントするタスク 文字をプリントするタスク var queue = []; function coroutine(thunk) { queue.unshift(thunk); } function start() { (queue.pop())(); } function pause() { var cc = ne…

サーバーサイドJavaScript(Rhino)の継続でambを書いてみた

"amb は 天使のオペレータです。" 独習 Scheme 三週間 参考 RhinoWithContinuations Scheme 入門 18. 非決定性 SICP 4.3 Nondeterministic Computing ambで、三平方の定理を満たす整数の組を探す。 var fail = []; function amb(l) { if (l.length == 0) ret…

TwitterをGoogleトークやPidginやAdiumやiChatやGMailにつなぐ方法(2ステップでおk)

tweet.IMに登録します。 https://www.tweet.im/ tweet.IMは、"TwitterをGoogleトーク互換のインスタントメッセージに流してくれるサービス"です。(本当はTwitterのパスワードを他人に教えちゃダメですが、ここは彼らを信用しましょう) Googleトークのアカウ…

顧客が本当に必要だったもの(ロボット編)

http://2chart.fc2web.com/itkakumei/ によくまとまっている。

XMLの名前空間接頭辞をとっぱらうGaucheスクリプト

名前空間接頭辞があるとXPathが使いづらいから消してやる。 Gaucheのsxml.tree-transライブラリを使ってSXML変換をかける。 #!/usr/bin/env gosh (use sxml.ssax) (use sxml.tools) (use sxml.serializer) (use sxml.tree-trans) (define (remove-namespace-…

OCaml-NagoyaでFUSEの紹介をした

FUSEでファイルシステムを作ろう

Gaucheで魔方陣に挑戦(順列を実装)

http://www.cut-the-knot.org/do_you_know/AllPerm.shtml の B. Heap's algorithm で、順列を生成してみる。 (use gauche.uvector) (define-syntax =2 (syntax-rules () ((=2) #f) ((=2 t) t) ((=2 t1 t2) (let ((x t1)(y t2)) (if (eq? x y) x #f))) ((=2 t…

SXPathまじやばい

みずぴー日記:E4Xまじやばいに対抗して、GaucheでSXPathを使ってみる。 SXML要素を作る (use sxml.ssax) (use sxml.sxpath) (define sxml (call-with-input-string "<product> <model stock=\"yes\"> <name>foo</name> <price>100</price> </model> <model stock=\"no\"> <name>bar</name> <price>200</price> </model> </product>" (cut ssax:xml->sxml <…

Erlang プロセス Scheme アクタ

Erlangの根底にある、メッセージを送受しあうオブジェクトという考え方は、 SimulaやSmalltalk、そしてCarl Hewittのアクタモデルだ。アクタモデルをもとに、SteeleとSussmanがSchemeを作った。Scheme使いの私としては、Erlangは押さえておかねば。今更なが…

thunk you

みずぴー日記のコメント欄で、"マーシャリングって軍事っぽいイメージがあるよね"という話で盛り上がったことがある。 http://d.hatena.ne.jp/mzp/comment?date=20081114#cGemmaよ、ひとんちの米欄でお前は何を(ry ってなもんや(三度笠) あれは正直すまんか…

Gauche-FUSEでOutputzファイルシステム

シェルでの操作も Outputz に入れたいが良い方法はないかな。キーロガーまで行くとやりすぎ感がある。ヒストリを定期的に POST かな。cd, ls しすぎ問題を把握したい。http://d.hatena.ne.jp/higepon/20081125/1227598921 使い方 $ mkdir /tmp/fs $ ./output…

Gauche-FUSE 拡張ライブラリ v1.0 をリリースしました。

http://gauchefuse.googlecode.com/files/Gauche-fuse-1.0.tgzファイルシステムをGaucheで書きたい!│├ 1.カーネルモジュールプログラミングを勉強する││ [まちがい] │ ユーザ空間でのプログラミングと勝手が違うのが難点です。│ それよりも別の手段を探し…

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

この一週間ほどは、Gauche-Fuse拡張ライブラリを書いています。 Cの構造体をforeign pointer objectにして、構造体のアクセサも用意する。 このstubをCLOSのクラスでラッピングすれば(proxyクラスという)、もうお客様にもお出しできます。 Cの構造体とScheme…

名言「今年はRubyが来る」を振り返る

小室哲哉の名言「今年はレイヴが来る」を振り返るの改変。 小室:もともとはだから、どういうのが? 一番その言語の好きな趣味も含めて、ハッカーとしての趣味も含めて。 SAM:あの、本当に個人的な趣味だったら、関数型言語。しかも静的型付け。 小室:関数型言…

明日10日午後10時〜はNHKスペシャル「デジタルネイティブ」

番組内で、はてなが紹介されるそうです。 (公式)http://www.nhk.or.jp/digitalnative/ (詳細)http://www.nhk.or.jp/special/onair/081110.html ふとNHKスペシャル デジタルネイティブ(http://www.nhk.or.jp/digitalnative/)のHPをのぞいてみたらかなり映像…

近況報告

Gauche-Fuse拡張ライブラリが欲しいので、Gauche-gtkのソースとか、SWIGの文書を読んだりしています。 SWIGのGaucheモジュールも作れたら面白げ。 - ./ ;ヽ l _,,,,,,,,_,;;;;i <いいぞ ベイべー! l l''|~___;;、_y__ lミ;l define-syntaxはマクロだ!! ゙…

「パクリだ」と言われたデミアン・ハーストの作品をJavaScriptでパクってみる

参照 J0hn D0e の日誌:「パクリだ」と言われたデミアン・ハーストの作品をSchemeでパクってみる ふつくしい。火蜂のフグ刺し弾幕のようだ。 http://eva-lu-ator.net/~gemma/geocities/pendulum/fermat.html //キャンバス要素のコンテキスト var ctx = null; …

検索インデックスを作ろう 後編 (Hadoopで転置インデックス)

Hadoopで転置インデックスを作る。Hadoopのインストールについては以下を参照。 Hadoopのインストールとサンプルプログラムの実行 Running Hadoop On Ubuntu Linux (Single-Node Cluster) 転置インデックスとは、本の巻末にある索引のことだ。 例えば、るる…