CodeIQ|ITエンジニアのための実務スキル評価サービスで挑戦した問題、@nkawagashira 川頭 信之さんからの言語不問の問題、
挑戦者求む!【Python】ローマ数字変換器を作ってみよう by @nkawagashira 川頭 信之│CodeIQの解答、解説の記事、10「ローマ数字変換器を作ってみよう」の問題と解説 - スピード冒険野郎の操縦席
「ローマ数字変換器を作ってみよう」の解説記事を書きました。99名もの方が挑戦してくれました。本当にありがとうございます。これからも頑張って問題作成していきたいです。
http://t.co/Y9CPpu8Djl #python @codeiq
— 川頭信之 空飛ぶデータサイエンティスト (@nkawagashira) 2014, 3月 19
問題文が出てたので、挑戦した時に提出した、解答コード。
ローマ数字変換器を作ってみよう!
ローマ数字をアラビア(通常の)数字に変換するプログラムをPythonで作ってみましょう。
コード(BBEdit, Emacs)
sample.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- def main(roman): num = 0 r_n = { 'M': 1000, 'D': 500, 'C': 100, 'L': 50, 'X': 10, 'V': 5, 'I': 1 } pre = 0 for i in range(len(roman) - 1, -1, -1): c = roman[i] if not c in r_n: raise Exception('有効なローマ数字になっていない!: {}'.format(c)) n = r_n[c] if n >= pre: num += n pre = n else: num -= n return num if __name__ == '__main__': for roman in ['XLIX', 'MDCCCLXXXVIII', 'MCMXLV', 'MMMCMXCIX']: print(main(roman))
入出力結果(Terminal)
$ ./sample.py 49 1888 1945 3999 $
classを使っていること等を除けば、考え方は出題者の川頭 信之さんの考え方と似たような感じだった。ということで、半分くらいの人の方法も参考になってよかった!
0 コメント:
コメントを投稿