ICFP programming contest 2012

http://shinh.skr.jp/dat_dir/icfp12.tgz

二日目から遊んでました。

<vp0"L"2p0"F"0p0"E"0p0"D"*55p0"C"0p0"B"*25p0"A"0 p"d"00

v<
>0"J"0p 0"M"0p v           >               >00g"F"0g2p 10g"F"0g1+2p :"F"0g2+ v
v       p0"N"0 <   > "G"0p ^  >  :"*"-  #v_^                                 2
 v               < ^ +1g0"G" _^#!-"@": < >        :"\"-  #v_ "G"0g  v        p
>   010p 000p > #^~:00g 10g"e" +p:"R"-#^_00g 50p10g 60pv  v p0"G"+1 <
v<            ^p00+1g00         _v#-5-5                <  < p0"F"+3g0"F"     <
              ^p01+1g01p000_v#g00<
 v                          <        > ~$~$~$~$~$  "B"    v
 >#v~:"W"-#v_$~$~$~$~$~ " "-        #^_            "A"    v
           >:"F"-#v_            $~$~$~$~$~$~$~$~$  "C"    v
    v$~$~$~ -"A"< >:"G"-#v_         $~$~$~$~$~$~$  "D"    v
    >~$~$~$~$~$v         >:"R"-#v_  $~$~$~$~$~$~$  "E"    v
v  v     p3\~$~<                >:"T"-!#v_
   >           v^~ $~$~$~$~$~$~$~$~$~$~$<           >"???" ,,,~,~,~,@
 ^_^#!-5-5  ~v#<                             p 0 \ &v#    <
>            > "B"0g"I"0p 10g"="0p "E"0g">"0p  0 > ::0g \ "="0g"e"+ p   v
                                              v$_^#    !    -"K" : +1   <
  >    000p 10g 1+ 10p            v           >0 > ::2g \ "="0g"e"+1+ p v
v_^# ! +1-g0"=" g01 <                         v$_^#    !-1-g0"F" : +1   <
   >"="0g+ p 5-5- !#^_ 00g 1+ 00p v           >0 > ::3g \ "="0g"e"+2+ p v
   ^+3+"e"g01 g00 : g +"e"g01 g00 < p010 p000  $_^#    !   -6-6  : +1   <
> "H"0g "2"* "J"0g - : "M"0g 5*5* "N"0g - `! #v_ $ "H"0g2*"M"0p "J"0g"N"0p 0 v
 v          _v# ` 0 +"d" - g0"J" *"2" g0"H"  $<$$S#g0"J" p"c"\ _v# !:g"d" :: <
               timeout                                          >\"c"p   1+  ^
             > 3                                                              v

  v0 p0"N"g0"J" p0"M"*3g0"H" _v# ` - g0"N" *5*5 g0"M" : - g0"J" *"K" g0"H" <
  > :: "d"g: #v_ \"c"p $  #S  > $                                        v
  ^ +1 p "c"\ <                          v p0 \   g+"e"g0"=" :: < 0 g0"L"<_^# <
 v<                                      > 1+ : "K"-           #^_$v
                                         v p2 \ g+1+"e"g0"=" :: < 0<
  # > 000p 10g 1+ 10p                  v > 1+ : "F"0g-1-       #^_$v
 v^_^#! +1-g0"=" g01 <                   v p3 \ g+2+"e"g0"=" :: < 0<
     > "e"+ p 5-5- !#^_  00g 1+ 00p    v > 1+ : 6-6-           #^_$ v
     ^  g01 g00 : g+3+g0"="+"e"g01 g00 <           p010 p000  p0"L" <
 #
 V                  >>     v      > "U" v   exit
 > "L"0g1g:88*`#v_$>??"W"v >    #v? "R" v  >, @     > , 1+    v
  v p0"L"+1g0"L"<   >>     ^ v"L"<> "D" v  ^*52,"A"_^#!:g"c": <
  v                      <   <          <                     0
 v> : "J"0g "d" p 0 "J"0g1+ "d" p "K"0g 1+:"K"0p 9/9/9/9/9/  #^_
  v                                   <
            v p +"e"+g0 6 -1%3 \+ g0 5  -1/3 :g07 " "<
            v                                       _^# -"W" g +"e"+g0 6 <
            > 70g:1- 70p            !#^_       > 70g: 3/1-  50g + \ 3%1- ^
 > "J"0g1+"J"0p:"A"-#v_       @<-abrt   > 870p ^        >:"R"-#v_10> 60g+10p:v
 v< $$$ <            >:"W"-#v_ $      ^          >:"L"-#^_01-0 >   ^vp00+g0 5<
   goal | -g0"H"g0"G" <     >:"S"-#v_ $ ^ >:"D"-#^_01 >        ^ v< >00g10g  v
    0$$$<    >        ^            >:"U"-#^_001-      ^           |-"\":g+"e"<^
 v$_v#`"I": _^#-"O": _^#-"L": _v#-"@":_v#-"*":  _v#-" ": _v#-".":<>   "H"0g v
    >:"@"` #v_   v$<           >       v v   $$  <        <        p0"H" +1 <
 v$$    _v#  -"!"< |-" "g+"e"g01::+g00\<
                   > "<"0p   $$          >  " "  50g 60g"e"+p "R" 00g : 50p  v
         >     ">"0g 1+ ">"0p $          ^    $$       <         p01 g08 <
                                      >$$^         $$$ <       > 70g 00p ^
         >    "A"-3g 070p080p :"0"`! #^_ > 80g"="0g- !#^_ : 70g 80g"e"+g : v
            > " " 00g10g"e"+ p v         ^          p07+1g07  _^# - _v#-5-5<
         ^                     <         ^         $$ p08 +1g08 p070 <

 v                                                         $ p+"e" p0 6: g01 <
 0                                              >            >               v
 > :"F"0g-!#v_ :2g 00p :1+2g10p  3+ 00g  50g - #^_ 10g 60g- #^_ "<"0g 00p    v
   v                        _v#-"@": _v#-"*": _v#-"\": _v# -" ":g+1+"e"g01g00<
   <        #< vg+"e"g01+1g00<        <        <        > 10g1+ 10p          v
               >" "-#v_00g1+10g"e"+1+g" "-#v_ 00g1+ 00p ^             <      v
          v_ ^#-"\": <                     <
          > # 00g1-10g"e"+g" "- #v_ 00g1-10g"e"+1+g" "- #v_ 00g1- 00p ^
            #                    >                       >                   v
 ^                                         p "b"-2 \ g01 : p "b"-3 \ g00 : $ <

          > > :3-\! #v_ ::"b"g\ 2g - #v_ :1+:"b"g\ 2g - #v_
        v            <                >                  >:" "\:2g\1+2g"e"+p v
           vp+"e"g01 g00 p2 \ g01 +1 p01 g"b"+1: p2 \ g00 : p00 g"b":\ g2+2::<
        $  > 00g 50g- #v_ 10g 60g-1+ #v_         $ 1                          ^
          ^ v+"e"g01g00<              <       *death*
            >1+g " "-!#v_ :2+2g"@"- #v_ "\" 00g10g"e"+p :01-\"b"p :01-\2p v
          ^            <             <                                    <
                                         water-> 2                            ^
    v                                         _^#!`\0 p0"I":-1g0"I"   <
        > "R"  50g 60g"e"+p "C"0g:!#v_ "J"0g \/ "A"0g+1+ "="0g 60g- ` |
    v                             $ < 0                    p0"I"g0"B" <
^                    <            v                     p00 +1 g00 <<
^   > "J"0g "D"0g % #^_ 000p 010p > 00g 10g "e"+ g: 5-5- !#v_ "W"-  |
      v      $ p071  p08 < > 10p  ^
     v p010 p000 $        _^#        ! -g0"=" :+1 g01 p000$<
          > 80g1- :2+   #^_      $$                                ^
       v _^# +2: -1g07 < _v# -" " g +"e"+g01g08 +g00g07 < p081 p071 <
                          > "w" 70g00g+ 80g10g+"e"+ p v
       > 70p v         ^                              <
      >      >                                          ^
     v                          p00 +1 g00 <                    <
     > 00g 10g"e"+ g: 5-5-!      #v_ "w"- #^_ "W" 00g 10g"e"+ p ^
     ^p01 _v# - g0"=" :+1g01 p000$<
^        $ <

Befunge で書いたソルバ。一応確認した範囲では正しくシミュレーションできてると思う。出した答えはちゃんと正の点数出るし。

遊んでた理由はマラソンチックなコーディング飽きてるっていうのと、ちょうどネタ的にいい問題だなーと思ったから。一度こういうのやってみたかったんですよね。二度とやりたくないですが。メモリダンプするだけでビジュアライザが完成するのがえらい。

ちなみにシミュレータ完成が終了6時間前という、未だかつてないスタートラインの遠さでした。一応答え吐くものができたのは終了1時間前くらいで、ホントできてよかったです…

結果。つっても毎回変わるけど。

contest1.map 191
contest2.map 158
contest3.map 145
contest4.map 360
contest5.map 531
contest6.map 46
contest7.map 735
contest8.map 389
contest9.map 696
contest10.map 531

flood1.map 180
flood2.map 142
flood3.map 565
flood4.map 173
flood5.map 236

beard1.map 421
beard2.map 981
beard3.map 487
beard4.map 531

horock1.map 228
horock2.map 217
horock3.map 848

trampoline1.map 266
trampoline2.map 821
trampoline3.map 288

Lightening division の結果。こっちはほぼ決定的に動く。

contest1.map 210
contest2.map 143
contest3.map 271
contest4.map 573
contest5.map 806
contest6.map 745
contest7.map 863
contest8.map 1241
contest9.map 3023
contest10.map 2145

flood1.map 521
flood2.map 274
flood3.map 800
flood4.map 310
flood5.map 573

実行のようす。普段はもっと大きいフォントで見てましたが。

http://shinh.skr.jp/dat_dir/icfp12.png

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h