重複の可能性:
整数に相当するローマ数字をどのように見つけますか
単純なアルゴリズムを探しています (できれば Python で)。指定された整数をローマ数字に変換する方法は?
string Roman(int Num){...}
たとえば、Roman(1981) は "MCMLXXXI" を生成する必要があります。
重複の可能性:
整数に相当するローマ数字をどのように見つけますか
単純なアルゴリズムを探しています (できれば Python で)。指定された整数をローマ数字に変換する方法は?
string Roman(int Num){...}
たとえば、Roman(1981) は "MCMLXXXI" を生成する必要があります。
私は一度反対が必要でした(ローマ数字から へint
)。 ウィキペディアには、ローマ数字の仕組みに関する驚くほど詳細な情報があります。物事がこれほど明確に定義されており、仕様がこれほど簡単に利用可能であることに気付いたら、それをコードに変換するのはかなり簡単です。
このActiveState リンクでコードを確認してください。コードはかなりよく文書化されているようです。
この機能を持つサードパーティのライブラリは考えられません。オンラインでこれを行う方法の例はたくさんありますが、時には自分で何かを書かなければならないこともあります。これはRoseIndiaからのものです
百、十、単位のルールはほとんど同じです。つまり、1、5、10 の文字がある場合、文字が変わるだけで、それぞれの表現は同じになります。
テンプレート 0 - 1 = U 2 = UU 3 = UUU 4 = UF 5 = F 6 = FU 7 = FUU 8 = FUUU 9 = UT を表す 10 エントリのテーブルを持つことができます。
単位、数十、数百のテーブルも用意しました: 単位 = IVX 十 = XLC 百 = CDM
数字のテンプレートを文字表現に適用して、U を最初の文字に、F を 2 番目の文字に、T を 3 番目の文字に置き換えます。
千は、千ごとにちょうど M です。
数千、数百、数十、単位の順で文字列を作成します。
もちろん、それを逆方向に構築する場合は、単位を 10 ずつ変更することから始めて、単位の文字列を作成し、10 で割って再度変更し、10 の文字列にシフトし、数百の文字列で繰り返し、数千の文字列に到達したら、文字列に M という文字が 1 つしかないという事実からわかります。