topcoder

TopCoder やってみた.
Haskell が使えなくて愕然とした.

ってのは冗談.

C++, C#, Java, VB が使えるらしい.

このなかで一番まともに使えるのは多分,Java

ってことで,Javaでやってみたら,文法完全に忘れてて,笑えた.
簡単なコード書くのにもの凄い時間かかった.

public class TheEncryptionDivTwo {
    public String encrypt(String message) {
	char [] encrypt = message.toCharArray();
	char [] map = new char[26];
	for (int i = 0, c = 'a', l = message.length() ; i < l; i++) {
	    if (map[encrypt[i]-'a'] == 0) map[encrypt[i]-'a'] = (char)c++;
	    encrypt[i] = map[encrypt[i]-'a'];
	}
	return String.valueOf(encrypt);
    }
}


結論としては,Haskell使えないと(自分が)ダメ.


ちなみに,同じものをHaskellで書いてみたら,こうなった.

import Data.List (nub, lookup)
import Data.Maybe (fromJust)
encrypt :: String -> String
encrypt s = map (fromJust.(`lookup` m)) s
    where m = zip (nub s) ['a'..]

やっぱり,Haskellのほうがいいな.