skk-autoloads.el が文字化けする

ddskk をビルドしようとするとこける。

調べてみると、 skk-autoloads.el の中が文字化けしていた。
これは、skk-autoloads.el の文字コードSKK-MK 内で指定されているのが原因。
SKK-MK 内の SKK-MK-generate-autoloads-el 関数に、文字コードを指定している箇所があるので、適当に修正すればいい。

HaskellからAOJにサブミットする

http-enumerator使って書いた。
大したコードじゃないので、ここに貼っておくことにする。
twitter-enumeratorのコードを参考にした。
気が向いたら、公開されているAPIのためのコードも書いてまとめるかもしれない

{-# LANGUAGE OverloadedStrings #-}

import Prelude hiding (dropWhile)
import Network.HTTP.Enumerator
import qualified Network.HTTP.Types as HT

import Data.Enumerator (Iteratee, throwError, run_)
import Data.Enumerator.List (dropWhile)

import Data.ByteString (ByteString)

import Control.Monad.Trans.Class (lift)
import Control.Monad.IO.Class (liftIO)

endpoint :: String
endpoint = "http://judge.u-aizu.ac.jp/onlinejudge/servlet/Submit"

userID :: ByteString
userID = "your user id"

password :: ByteString
password = "your password"

api :: ByteString -- method
       -> String  -- url
       -> HT.Query -- query 
       -> Iteratee ByteString IO a
       -> Iteratee ByteString IO a
api m url query iter = do
  req <- lift $ makeRequest m url query
  mgr <- lift newManager
  http req (handleError iter) mgr
  where
    handleError iter' st@(HT.Status sc _) _ =
      if 200 <= sc && sc < 300
      then iter'
      else throwError $ StatusCodeException sc "Bad Status Code"

makeRequest :: ByteString -> String -> HT.Query -> IO (Request IO)
makeRequest m url query = do
  pu <- liftIO $ parseUrl url
  return $ pu { method = m, queryString = query }

submitQuery user pass pid lang src =
  [("userID"    , Just user),
   ("password"  , Just pass),
   ("language"  , Just lang),
   ("problemNO" , Just pid),
   ("sourceCode", Just src)]

submit :: ByteString -- problem id
          -> ByteString -- language
          -> ByteString -- source code
          -> Iteratee ByteString IO a -- iter
          -> Iteratee ByteString IO a
submit pid lang src = api "POST" endpoint (submitQuery userID password pid lang src)

main :: IO ()
main = do
  run_ $ submit "0000" "C" "int main(){return 0;}" (dropWhile (const True))

Gentooでtexとbeamer

とりあえず、texliveとdvipdfmxいれる

# emerge --autounmask-write texlive dvipdfmx
# emerge texlive dvipdfmx

beamerもいれる

# emerge beamer

これで日本語なしなら

$ platex test.tex
$ dvips test.dvi
$ ps2pdf test.ps

でpdfが作れる。
dvipdfmxは、なぜか失敗して、何も表示されないのであきらめた。

このままだと日本語化けるので、どうしたものかな

ICPC2011 地区予選福岡大会

結果

5ACで12位でした。
大学順位だと9位タイらしい。

本番

A,B,D,E,Fの順に解きました。
A,B,Dは特に何もなく書けばよい、というだけだったのですけど、3人ともFはよく分からんということになってしまっていて、DP力の不足を感じます。
Eはチームの人がいつのまにかテーブルを作って、通してしまって、ぱないと思いました。
最後の1時間はC or Hができそうな感じがしていて、かつ、どちらもやる時間は明らかになさそうだったので非常に悩ましいところだったのですが、Hを1時間弱で書ききる自信がなく、Cへ行きましたがこっちも探索を書ききれずという感じでした。
Fをもうちょっとするっと解ければ、+1問ぐらいは不可能ではなかったなぁと思います。

反省

5ACというのは、今のチームだとわりとよくできたほうだと思うので、これ以上の順位をとりたかったら、個々人がもっと実力をつけるしかなさそうですね。

下のやつの追記

結局、なんでこれがだめかっていうのを調べたり考えたりした。
2つのテンプレートの定義T1とT2があった時に、もしT1がT2をspecializationしたものならばT1 >= T2っていう順序関係ををテンプレートの定義全体の集合Tについて考える。
テンプレートを使うときは、Tからマッチするテンプレートを全部引っ張ってきたTの部分集合内で、上の順序関係について最大のものを取ってきたいんだけど、上の順序関係は当然半順序なので最大のものが存在しない場合があって、その時エラーになるとかそんなのでは。

こう書くとすごくほんとのことに見えるけど、ほんとか???

追記: T1 <= T2 じゃなくて T1 >= T2 だった

たまにやってしまうあれ

なんかおしゃれにテンプレート使っちゃうぞー、とかする時にたまにあるあれです。
どうなるんだったか、頻繁に忘れるのでメモ。

#include <iostream>
using namespace std;

template<class T,int n>
class Array {
    T data[n];
public:
    T get(int idx);
    void set(T v,int idx);
};

// specialization
template<int n>
class Array<bool,n> {
    bool data[n];
public:
    bool get(int idx);
    void set(bool v,int idx) {
        cout<<"bool"<<endl;
    }
};

template<class T>
class Array<T,0> {
    T data[0];
public:
    T get(int idx);

    void set(T v,int idx) {
        cout<<"0"<<endl;
    }
};

int main() {

    // ????
    Array<bool,0> ar;
    ar.set(true,0);
}
temp_test.cpp: In function 'int main()':
temp_test.cpp:36:19: error: ambiguous class template instantiation for 'class Array<bool, 0>'
temp_test.cpp:15:21: error: candidates are: class Array<bool, n>
temp_test.cpp:25:18: error:                 class Array<T, 0>
temp_test.cpp:36:19: error: aggregate 'Array<bool, 0> ar' has incomplete type and cannot be defined

気持ちとしてはどっちの特定化された奴でもいいから、とりあえずどっちか使ってくれないかなーとか思うんですけど、コンパイルしてくれません。