ゲンゾウ用ポストイット: topcoderの道1をといてみるの続き。
Groovyで文字処理を書くときの心得 - Grな日々(uehajの日記)で以下のようなエントリが。
先のエントリと、ほかにいくつかGroovyでパズルっぽいコードを書いてみたんだけど、あれだね。Groovyで文字の絡む処理はC言語的にやったら負けだね。
たしかに。効率もだけど、それ以上により簡潔に書きたい。
ちょっと直してみる。
class CCipher{
final def ALPHA_LIST = 'A'..'Z'
String decode(String ciphertest, int shift){
ciphertest.collect{
ALPHA_LIST[ALPHA_LIST.indexOf(it) - shift]
}.join()
}
}
new CCipher().with{
assert decode("VQREQFGT", 2) == "TOPCODER"
assert decode("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 10) == "QRSTUVWXYZABCDEFGHIJKLMNOP"
assert decode("TOPCODER", 0) == "TOPCODER"
}
一行しか変わってないけどwもっとうまい書き方ないかな。

あとは、shiftだけずらした変換後のALPHA_LISTを作ってciphertestを変換するくらいですかねぇ・・・。
返信削除