λx. x K S K @はてな

このブログ内に記載された文章およびコードの著作権は,すべて Keisuke Nakano に帰属します.

golf

TRICK 2015 に入賞しました

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

OCaml Golf 最速マスター

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

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

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

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) にて, ゴルフコンペを開催することになりました. 念のため説明しておくと「ゴルフ」というのは,いかに少ないストローク数 (バイト数) でカップに入れる (プログラムを書く) …

連続する整数をまとめる

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]:$*<

caml-listにて

caml-listにてgolfの話題が….*1 といっても,segmation faultを起こす最短のコードを見つけようという問題だったので, 開発者の逆鱗に触れてあっという間に鎮火. 普通の(?)golfの話題ならどういう反応があるかなぁ. *1:ただし,golfという単語が直接出て…

Timeout.ml

無限ループでも重い処理でもよいので3秒間実行し続ければOKという問題. OCamlだとwhileを使うものが最短のようですが, 考えられる解をいくつか記録しておきます. まず,最短であると思われるwhile版 (17B).while 0=0do()done とかwhile-7<7do-7done とか…

双子素数

ほげほげしてたら,サーバを落としてしまったようです. すみません.

core golf

さて、core dump するコードの短さで競う core golf はゲームとして成立するでしょうか。明らかに環境や処理系に依存するのでルールの決め方が難しいです。 -- core golf - まめめも とりあえずうちで core dump した C のコード (5B) .main; うーん.

quine.bf

前の記事のコメント欄で shinh さんから私の投稿した Brainfuck の Quine が実は世界記録ではないかという指摘があったので一応メモ. 負数のメモリ番地は反則らしいので,投稿した 392B (改行除く,以下同様)ではなく shinh さんの書き直した 404B が最短…

Quine

ああ,問題をちゃんと読まずにインチキをしてしまった…. 全言語で禁じるのは難しいのかなぁ.

半ネタばらし(Fizzbuzz.ml)

んー bool に対する C の | みたいなのは無いのかいな。 はじめてのにき(2007-05-31) 不等号を使うと必ず両辺が実行されて,true > false の時だけ真になるとか.

2の平方根

SPOJ の Open Contest 2007 にはほとんど OCaml で参戦していましたが, 成績的にはあんまりでした.ocamlopt で勝負させてほしいなぁという感じもしますが….実は,ocamlopt でコンパイルされているらしい.なんだか妙に遅いが… で,最も盛り上がっていた(…

非ネタばらし

ハミング数を出力する問題で OCaml の記録が大幅に縮んだので, 試しに Ruby で書き直したところ,あっさり一位になってしまいました(その後,すぐに flagitious さんに抜かれました.バイナリの 3B って何?). その後,碌に技を知らない Perl,二行以上…

ネタばらし(e.ml)

e の 79B はあまりにインチキなので,公開してしまうことにします.

正統派 echo

Sys.command を使わない echo にまだ改善の余地がありました. ということで,29B. [追記] 実はほんの少し入力依存なところも….同様のプログラムで rotate lines も大幅短縮できました.

e の一部のネタバレ

jijixiさんのところで「誰かが100B切ったらヒントを公開」することを宣言してしまった矢先に, airoboさんが95Bを出してくれたので,一部のネタをバラします. と思ったら,jijixiさんも94B出しましたね.

謎のバイナリ

m.ukaiさんに追い抜かれまくりですが,とりあえず無関係なネイピア数を100(+1)桁出力する問題の記録を更新. ある(インチキな?)方法を使うと,jijixiさんの直接出力するプログラムよりは短くなります. 今のところ79Bですが,まだまだ縮むかもしれません…

ネタばらし(fibonacci.ml)

m.ukaiさんに追いつかれたのでバラします. statisticsが全く同じなので,たぶん名前以外は同じだと思います.

ネタばらし(csort.ml)

標準入力の文字列を昇順に並べ替える問題. m.ukaiさん曰く, トップはどうなってるのかさっぱり分かりません。 とのことでしたが,大したテクニックがあるわけではないので公開してしまいます.

ネタばらし(primes.ml)

m.ukaiさんやshinhさんがprime numbersのネタばらしをしているので,こちらも公開しておきます.

e 再び.

最近ゴルフネタが多くてすみません. ネイピア数を100桁求める問題がOCamlにとってあんまりに酷な(というか100桁埋め込んだ方が短くなってしまう)ので, Numモジュールを使うバージョンも名前を変えてエントリーしておきました. ついでに謎のバイナリもジ…

Booklet Printing

調子に乗って問題を投稿してしまいました. まぁ,110ページの文書をこんな順序で印刷してもホッチキスなどでは止められないかもしれませんが…(止めても非常に嵩張りそう). 参考までにこのサンプルを出力したRubyのプログラムを投稿しておきました.

invert case

ああ,もう縮まないと信じていたのに縮んでしまいました(62B). ちなみに,問題とは無関係かもしれませんが, char_of_intやint_of_charを使うなら, Char.chrやChar.codeを使うほうが短いです. [追記] そして,直後に61Bにする方法を発見.

フィボナッチ

m.ukaiさんの記事より, この前に持っていた直接算出するやつは縮むのかもしれないが、どうやって? 私のは「まじめに計算するやつ」です.というか,m.ukaiさんのような直接算出するプログラムは全く考えていませんでした. ちなみに,"%.0f" は "%.f" でよ…

あなごる

なるものが,巷で流行っているらしくOCamlで何問か参戦(フィボナッチに関してはRubyにも参戦). 要は,指定された入出力を振る舞うプログラムを短いバイト数で書いてみろという話. 現在のところ,フィボナッチや99shinhやinvert caseなどで一時的に一位を…