2011-05 << 2011-06 >> 2011-07

2011-06-25 (土)

*バーベキュー

11時集合とか言ってた気もするけど,起きたら11時だった.とりあえず東大島まで行ったけど,場所が分からず電話して聞いてなんとかたどり着いた.

怪しげな肉がたくさん…….ワニとか初めて食べました.

おなかいっぱい肉食べたし,余った肉をもらってきたので,しばらく肉に困らないです.

2011-06-24 (金)

健康診断とか,生放送とか,カレー食べにいったりとかしてたら,あんまり仕事できなかった….

2011-06-20 (月)

焼肉食べた.

*ICFP

終わり.ダメだった…

*風邪

もう熱も無いし大丈夫そう.一応明日早めに起きて病院寄っていこう.

2011-06-19 (日)

寿司.ピザ.

*ICFP

safiiのおかげで,C++のコード上で式が組み立てられるようになった.とても便利.

*風邪

咳と喉の痛みが少し残っているけど,かなりよくなった.声もなんとか出せる.

2011-06-18 (土)

amazonからコーラと野菜ジュースが大量に届いた.びっくりしたけど,メール確認したら体調を崩しているのを心配した人がウィッシュリストから送ってくれたみたいです.ありがとうございます.大事に(?)飲みます.

昼頃起きて,safiiのところに.途中でお昼を食べていく.

体調はかなり良い.良いとは言っても,いつもなら動きたくなくなる程度には悪いのだけど.少なくとも頭は普通に働いている気がする.

夜はオムライス食べた.

*ICFPC 2011

safiiが実際に起こっていることを自分の環境内でシミュレーションするためのコードを書いてくれた.これが無いと,そもそも自分のどのスロットが生きてるのかも分からなくなるし,相手が何をしてるのかも分からないので,必須です.

SKIコンビネーター

コンビネーターのコの字くらいしか知らない状態ではじめたけど,SKIコンビネーターがあれば何でも書けるというのは感覚として分かってきた.

2011-06-17 (金)

朝起きて,safiiのところに.マンションの前まで行って入れてもらおうとしたら,コンビニまでおにぎり.

中華.

夜は帰って寝る.

*風邪

まだ37℃くらいあるけど,とりあえず動く.声は出ない.

*ICFPC 2011 Lambda: The Gathering

今回は,カードゲームか.今までで一番関数型言語が意味を持つICFPかもしれない.問題がとても読みやすいのは書いているのが日本人なのと,ルール自体はすぐ理解できるし,変な解析をする必要はなさそう.

Lambda: The Gathering

カードゲームなのですが,用意されているカードが全て関数.

256個のスロットごとにライフ(vitality)が割り当てられていて,ここにカードをセットしていって実行するという感じ.

カードゲームとして効果がある関数が,相手のスロットのvitalityを1削るとか,自分のvitalityを犠牲に相手を攻撃するとか,そのまま使えないものばかりなので,スロットに複数枚のカードを積んでいく必要がある.

そもそも,関数に渡す値もカードで作らないといけないので,好きな場所を攻撃するためには,かなりのターン数を要する.zero(0)とsucc(+1する)とdbl(*2する)が用意されているので,こいつらを使って好きな値を作ることができる.

42 = dbl(succ(dbl(dbl(succ(dbl(dbl((succ(zero)))))))))

という感じに表現できるので,zeroを最初にスロットに入れてsuccを適用して,dblを…という操作が必要なので42という数字を作るために9ターンが必要.大きな数字は適当なスロットに作っておいて,使うときに参照するというのが良さそう.

これは良いのですが,既にスロットに作ってある関数に数値を渡したいときも,カードを1枚ずつしか置けないので少し面倒.

スロットにfという関数が既に作成されていて,f(2)を呼びたい場合,dbl(succ(zero))を渡す必要があるのだけど,fに対して何か渡そうとすると,最初のカードを渡した時点でfが評価されてしまう.zeroを渡せば,f(0)が呼ばれてしまうし,dblを渡せばf(dbl)が評価(fが数字しか受け取れない関数ならエラーに)されてしまう.

ここで,コンビネータというものの出番で,

S(K(S(K(f))(dbl)))(succ)(zero)

という風に,最初にKにfを渡して,それをSに.さらにSの2つ目の引数にdblを…という感じで適用していけば,最後にSの3つ目の引数にzeroが渡された時点で,色々起きて,最終的にf(dbl(succ(zero)))が呼ばれる.

このすごく便利なSとかKという関数は,関数型言語の世界ではコンビネータと呼ばれていて,

  • S h i j : h(i)(j(i)) を返す
  • K x y : xを返す(yを捨てることができる)
  • I x : xをそのまま返す

というS,K,Iがあれば,何でもできるらしい.

ここまで苦労して関数を呼ぶことになるのだけど,実行するとスロットには関数の評価結果しか残らない.別のスロットを参照する関数はあるので,使いまわしたい処理は別の場所に作っておくか,上手く自分自身を返す関数にしておく必要があるっぽい.

2011-06-16 (木)

*風邪

昨日から咳が止まらない.

一応会社休む.

何もする気が起きなかったけど,なんとか洗濯だけしておく.

朝:37.2夜:37.1

2011-06-15 (水)

病院寄ってから会社に.

*風邪

まだ少しだるいけれど,大丈夫そう……と思って病院行ったけど,そんなに良くなって無いみたい.

首に変な水ぶくれみたいなのが出来たので見てもらったら,帯状疱疹らしい.薬高いよ,と脅されたけど,実際に高かった.バルトレックスという薬だけで7000円以上払うことに.あとは抗生物質をたくさん.

血液検査の結果もらったりした.正常値と2桁くらい離れている項目あるなぁ.

朝:37.3 夜:36.8

2011-06-14 (火)

*風邪

昨晩:37.8℃朝:37.5℃

医者行ったときに,体温記録しておけと言われたので.

37.5~38℃くらいで安定してしまってる.症状は段々良くなってる気はするのだけど,そろそろ体力が尽きてきたのか,一番ひどかった金曜の夜に次いで体がだるい.

夜:37.3℃

2011-06-13 (月)

*風邪

朝起きて,病院行ってみる.インフルエンザとはでは無いというか,風邪自体より喉の痛みを引き起こしてる炎症が酷いことになってるみたいなので,しばらく気をつけて様子を見ないといけないっぽい.普通腫れてる箇所は腫れてなくて,声帯がある場所から奥のほうで炎症起きてるらしい.なので,抗生物質で様子を見ることに.そういえば声出そうとしても痛いし,ほとんど声が出せない.

熱は昨日より下がってるけど,食欲も無いし,体感的には良くなって無いのが気になる.

2011-06-12 (日)

*風邪(3)

昼過ぎに目が覚める. 37.5℃まで下がった.のどが痛い.

2011-06-11 (土)

*風邪(2)

朝目が覚めたときに,コンビニ行って,飲み物と栄養ドリンクを買ってくる.

そのまま夜まで寝たら大分楽になったけど,まだ38℃以上ある.

2011-06-10 (金)

*風邪ひいた

朝から頭痛が酷い.昨日から微妙に調子悪かったし風邪ひいたっぽいなあ.今日はエンジニア祭りという名の飲み会なので,どうせすぐ仕事終わるしということで,会社に行く.

夕方から寒くて仕事どころではなかったのだけど,少し待てばご飯食べれるので我慢.去年まで使ってたUDXの会場が今年使えないらしいので銀座です.場所よく知らないけど,周りの人たちについていく.

料理食べていたけど,やたら寒し,人の声も良く聞こえないし,味が全く分からない.タダでご飯食べれる日だというのに…….

途中で起きているのも辛くなってきたので,帰ることにする.電車の中で意識飛びそうになりつつ家に帰って,念のため体温計ってみると,39.2℃もある.

やたら寒かったけど,動けないのでそのまま寝る.

2011-06-04 (土)

歩いて秋葉原に行くなどした.

2011-06-03 (金)

久しぶりに会社の同期で集まった気がする.こういう機会でもないと,会わない人多いなぁ.

2011-06-02 (木)

今日は予定があるので早く出社.のつもりが,いつも通りの時間に起きてしまったので慌てて会社に行く.

評価結果と給料の額を聞いたりした.