1

重複の可能性:
整数に相当するローマ数字をどのように見つけますか

単純なアルゴリズムを探しています (できれば Python で)。指定された整数をローマ数字に変換する方法は?

string Roman(int Num){...}

たとえば、Roman(1981) は "MCMLXXXI" を生成する必要があります。

4

5 に答える 5

3

私は一度反対が必要でした(ローマ数字から へint)。 ウィキペディアには、ローマ数字の仕組みに関する驚くほど詳細な情報があります。物事がこれほど明確に定義されており、仕様がこれほど簡単に利用可能であることに気付いたら、それをコードに変換するのはかなり簡単です。

于 2010-10-27T16:00:15.917 に答える
1

これは、多くのソースコードが添付された長い説明です。

http://www.faqs.org/docs/javap/c9/ex-9-3-answer.html

でも、もっと効率的にできると思います。

于 2010-10-27T15:59:53.753 に答える
1

このActiveState リンクでコードを確認してください。コードはかなりよく文書化されているようです。

于 2010-10-27T16:00:09.300 に答える
1

この機能を持つサードパーティのライブラリは考えられません。オンラインでこれを行う方法の例はたくさんありますが、時には自分で何かを書かなければならないこともあります。これはRoseIndiaからのものです

于 2010-10-27T16:01:46.623 に答える
0

百、十、単位のルールはほとんど同じです。つまり、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 つしかないという事実からわかります。

于 2010-10-27T16:14:25.347 に答える