2009/06/06

続・topcoderの道1をといてみる

ゲンゾウ用ポストイット: 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もっとうまい書き方ないかな。

1 件のコメント:

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

    返信削除