TRICK 2015 に入賞しました

TRICK というのは Transcendental Ruby Imbroglio Contest for rubyKaigi の略で, Ruby を使って狂ったプログラムを書くというコンテストで,今回が 2 回めだそうです. 今年の 9 月の FTD 2015 (日本ソフトウェア科学会大会の併設イベント) で TRICK 2015 …

推移律はいらない? ─比較ソートの正当性に必要な比較関数の性質─

Coq

この記事は Theorem Prover Advent Calendar 2013 最終日 (25日目)*1の記事です. 元々このネタは, 後学期の3年生向けの実験でCoqを教える際に提示した 「挿入ソートの正当性を示す」という最終課題の模範解答を作成する際に気づいたことです. このため,…

8.2 と 8.3 の互換性

Coq

久しぶりに Coq を触ったら, 昔書いた Coq のソースプログラムが通らなくなっていました. いろいろ原因を探ってみたところ, Coq 8.2 と Coq 8.3 で, 証明の開始時点での goal の形式が変わったためのようです. たとえば,Theorem eq_diff_0 (n m: nat) …

あけましておめでとうございます.

今年もアンビグラムというほどのものではありませんが, それに近いものを作成してみました. これまでのもの ( 2008年 / 2009年 / 2010年 ) に比べるとわかりやすすぎますね. 昨年は全く更新しないという体たらくでしたが, 今年はこれで少なくとも一回は…

クワインとフェルマーの最終定理

(更新を滞るとずっと侵略されているように見えてしまうので,むりヤリ記事をひねり出すことにしました) さて,今年も 12 月 25 日が近づいてまいりました.皆さんご存知の「ク」で始まるあの日です. そう,クワイン (W. V. Quine) の命日ですね. というこ…

3 進数を侵略しようではなイカ

この記事は Functional Ikamusume Advent Calendar jp 2010 によって侵略されたでゲソ. 2 進数の国の関数型イカ娘 *1 が 3 進数を侵略するという話をしようではなイカ. イカの国にはメスとオスがいるでゲソ. イカのメスとオスは,胴の斑点が丸状か線状か…

OCaml Golf 最速マスター

OCaml Meeting 2010 の 3 日前である本日 14:30 から,OCaml Golf Competition が開催されます. テクニックの紹介を連載すると言いながら,全然できていなくてすみません.昨年のスライドを修正した内容を掲載します. ユーザ定義関数・変数は1文字で これ…

今年もゴルフコンペします

来る8月30日の「OCaml Meeting 2010 in Nagoya」にて, 今年もゴルフコンペを開催することになりました.与えられた問題に対して OCaml で解いてもらい,最も少ないバイト数で記述できた方が優勝となります. ゴルフ場については,今年も shinhさんのご好意…

あけましておめでとうございます.

一昨年, 昨年に続いてアンビグラムでご挨拶させていただきます. さて,寅とそれに纏わるものはいくつあるでしょう?

間違い探し

クイズ (?) です. 以下のOCamlで定義されている関数は 「数値を表す文字列を受け取って次の数値を表す文字列を返す」関数です.let string_succ str = try string_of_int (succ (int_of_string str)) with Failure "int_of_string" -> invalid_arg "string_…

Parsing Expression Grammar

以前どこかで「 という規則が 個の を受理する」というような記述を見かけた気がして, 確認してみたのですがなかなかうまくいきません. 偶数個の を受理してしまうという勘違いはなくなったのですが,どう確認しても 個 (つまり,0, 2, 6, ... ) の しか受…

Helloworld-less Helloworld

最近,仕事の方がバタバタしていましたが, ようやく一段落しました. 先日の OCaml Meeting で解けないとか言ってしまった Helloworld-less Helloworld でしたが, xsd さんによって解かれました.そのアイデアをもとに縮めると,Obj.magic(+)242(^^)"\072\…

コンペ終了

参加された方お疲れさまでした. 始まる前までは「ゴルフの参加者が 3 人くらいだったらどうしよう」とか思っていましたが, 予想以上に参加してくれてよかったです. 今後も OCaml Golf を続けてくれると,あなごるでの OCaml の順位が上がってなおうれしい…

コンペ途中経過

3人が100byteを切ったようです. ところで,出題時にexec deniedを忘れるというミスをしてしまいました*1.すみません. (POSTするときにdexecを"1"とすべきところを"deny"としてしまったという…. 素直にブラウザから出題すればよかった.) それから,exec…

出題しました

問題はこちらからどうぞ. 当日参加される方は名前の末尾に「(rakuda)」を忘れずに. 私の解答は 8/30 の 16:00 以降に投稿します. 準備段階では Hello, OCaml! のような OCaml 用の問題を考えていましたが, 結局,他言語でも対応できる問題にしてしまいま…

ゴルフコンペします

来る8月30日の「平成廿一年東都大駱駝会」(通称: OCaml Meeting 2009 in Tokyo) にて, ゴルフコンペを開催することになりました. 念のため説明しておくと「ゴルフ」というのは,いかに少ないストローク数 (バイト数) でカップに入れる (プログラムを書く) …

ICFP PC

今年度の前半は講義に追われて終わりそうですが, 実際にやってみるといろいろ発見があってよいですね. ところで,今年の ICFP PC がそろそろ始まります. 仕事が残ってなければ参加できるはずです (願望). 開始時間は こんな だそうです. 相変わらず日本…

今年のICFP PCは6月らしい

June 26-29, 2009 @ icfpcontest.org ICFP自体が例年より早く行われる関係で, プログラミングコンテストもいつもより早いようです. 参加される方はご注意を.

なんとかモルフィズム

PPL2009 に参加してくださった皆さん,本当にありがとうございました. バタバタしていて,あまり多くの方とはお話しできずにすみませんでした. OCaml Users Meeting を日本で開催する際にはぜひ参加したいですね. 参加希望ついでに,ずいぶん前に書いた O…

あけましておめでとうございます.

昨年に続いてアンビグラムでご挨拶させていただきます. 十二支の丑はホルスタイン種ではありませんが,そのあたりはご容赦を. 全部発見してもらえるかどうかわかりませんが, 牛はいろいろ詰め込めるので考えやすいですね. 「ひらがなの方は時計回りに読…

エルデシュ数

http://www.ams.org/mathscinet/collaborationDistance.html via http://d.hatena.ne.jp/sumii/20081225/p1 前にもどこかで書いたかもしれないのですが, Sebastian Maneth - Frank Neven - Noga Alon と経由すれば 4 のはずなのに, ここで調べると 6 にな…

OCaml で Bag

google:OCaml で Bag で検索したら「もしかして: ocamldebug 」とか言われるかと思いましたが, Google はそこまで賢くありませんでした. というくだらない話はさておき, OCaml で Bag のようなデータ構造 (同一要素が区別される集合) が必要になったので…

(続) Seven trees

[註] この記事には解答はありませんが,Coq の証明が読める人にはヒントになってしまうかもしれません.[追記] 解答の公開が解禁されたそうなので遅ればせながら公開致します.Blassのものと同じ定義なのであまり参考にならないと思います. id:kikx さんが …

Seven trees

NICTA に来てから tree transducer 漬けの毎日. こちらに来るまで,Macro tree transducer (MTT) とか Attributed tree transducer (ATT) とかそれより上のクラスばっかり相手にしていて, Top-down tree transducer (TDTT) は自明な世界だと思ってましたが…

Pretty printers for tuples, variants, records, Sets and Maps.

10/4まで北京泊・10/5 京都泊・10/6 東京泊・10/7 機内泊・10/8からシドニー泊…という激しいスケジュールを経て NICTA を訪問中です. 最近,再び OCaml のコードをたくさん書く機会ができたので, 久しぶりに OCaml プログラミングに関するメモを公開します…

連続する整数をまとめる

http://d.hatena.ne.jp/higepon/20080925/1222326246 (via http://www.atdot.net/~ko1/diary/200809.html#d27) (via http://shinh.skr.jp/m/?date=20080927#p01) a=[1,3,4,5,6,12,13,15] a.map{|e|x,y=$*[-1];e-1==(y||x)?$*[-1]=[x,e]:$*<

Glid: Grass/Let interpreter and decompiler

草言語Grassが流行っているようなので,Grassプログラミング支援ツールGlidを公開します. Objective Camlで実装されているという点ではYTさんに先を越されてしまいましたが, より多くの機能を提供しています. といっても,実装の効率はあまりよくないので…

ICFP PC Final Round

3日間の途中結果が出ました. こちらも6回戦で脱落. うーん.あとで走らせてみよう. [追記 (8/15)] ようやくmapが公開されました.って,あれ? Lightningと全く同じmapのような….あまり進歩してないなぁ.

一筆書きできる括弧の組

一昨年,昨年に続き,とある研究室合宿でのプログラミングコンテストで出題するために作成した問題を(一部編集して)公開します. 解答は後日ここで発表します. n (≧1) を自然数とする. s,tはそれぞれ 2n+1 文字,2n 文字からなる文字列で以下の全ての条…

ICFP PC Lightning Division

結果が出てますね. 残念ながら6回戦で脱落. というか,よくそこまで残ったなと見るのが正しいか. 角度の単位とか間違えてたりクレーターが近すぎるとむしろ突進したりするようなひどいプログラムだったし…, OCaml では (大抵の言語でもそうだけど) 度も…