タグ付けされた質問 「roman-numerals」

このタグは、課題がローマ数字を含むことを示しています

5
あいまいなローマ数字の魔方陣
古代ローマの王は、魔方陣が有効かどうかを判断するのに苦労しています。彼がチェックしている魔方陣には、数字の間にセパレータが含まれていないためです。彼はソフトウェアエンジニアを雇って、魔法陣が有効かどうかを判断する手助けをしました。 入力の説明 入力はSTDINまたはコマンドライン引数で受け取ります。変数で入力を事前に初期化することはできません(たとえば、「このプログラムは変数への入力を想定していますx」)。入力は次の形式です。 <top>,<middle>,<bottom> それぞれ<top>、<middle>、と<bottom>しか大文字の文字を含む文字列ですI、VとX。スペースやその他の文字は含まれません。各文字列は3つのローマ数字を表すため、3x3の数値行列になります。ただし、これらのローマ数字はあいまいである可能性があります(ただし、そうである必要はありません)。これを例を使って説明します。次の3つのローマ数字の行の例を考えてみます。各数字の間にスペースはありません。 IVIIIIX 文字の間にスペースがないため、ここの数字には2つの可能性があります。 1、8、9(I VIII IX) 4、3、9(IV III IX) マトリックスの3行すべてが不明確である可能性があると考える場合、単一の入力から多くの異なる3x3マトリックスが存在する可能性があります。 I VII I IX各行は常に3つのローマ数字を表すため、1、7、1、9()などのシーケンスは使用できないことに注意してください。また、ローマ数字は有効でなければならないため、1、7、8(I VII IIX)などのシーケンスも使用できないことに注意してください。 出力の説明 出力: 整数A。ここでA、あいまいな入力から形成できる一意の3x3行列の数。 ユニークな3x3マトリックスのいずれかが魔方陣を形成する場合の真実値、または: falsy値ならばどれもユニークな3×3の行列のは、魔方陣を形成していません。 真実で偽りの値は一貫している必要があります。それらはコンマで区切られます。 ユニークと見なされるものについて、いくつかの説明が必要です。マトリックスが以前に見つかったマトリックスと正確に同じ位置に正確に同じ数を持たない限り、それは一意としてカウントされます。これは、以前に見つかったマトリックスの反射などが一意としてカウントされることを意味します。 入力と出力の例 これらの例では、私はtrue私の真実の値と私の偽りの値として使用していfalseます。 入力:VIIIIVI,IIIVVII,IVIXII 出力:(24,true 魔法の三角形は8-1-6、3-5-7、4-9-2です。) 入力:IIIXVIII,IVIII,VIIII 出力:210,false エクストラ 選択した言語に含まれている場合、組み込みのローマ数字変換関数を使用することはできません。

12
追加、昔ながらの方法
概要 古代ローマ人は、ラテン文字を使用した数体系を考案しました。これは、それらを十分に機能させ、現在の文明ではまだ使用されていますが、程度ははるかに小さいです。ローマ人は、その使用時に、多くのアプリケーションで非常に役立つようにするために、これらの数値の使用と操作を学ぶ必要があったでしょう。たとえば、男性が35頭の牛を所有していて、さらに27頭を調達した場合、それらをすべて数える以外に、新しい合計をどのようにして知るのでしょうか。(そうですね、そろばんを使って...)ローマ人ができるなら、きっと私たちもそれを理解することができます。 目的 2つのローマ数字 を加算し、どちらかの入力の文字列表現を数値に変換せずに結果を出力する、最も短いアルゴリズム/関数/プログラムを記述します。 規則/制約 書式設定における歴史的/中世以前の不整合のため、正書法に関するいくつかの非標準(現代の使用法による)規則の概要を説明します。例として、以下のバリューガイドをご覧ください。 I、X、C、およびMの文字は、連続して4回まで繰り返すことができますが、それ以上繰り返すことはできません。D、L、およびVを繰り返すことはできません。 ローマの表現で別の文字のすぐ右側にある文字は、左側の文字と同じか、それよりも小さい値になります。 言い換えれば、VIIII == 9しかしIX != 9、そして無効/許可されていません。 すべての入力値は2,000(MM)以下になります。Mより大きい数値を表す必要はありません。 上記のルールに従って、すべての入力値は有効なローマ数字になります。 ソリューションの一部として、数値を10進数、2進数、またはその他の数値システムに変換することはできません(そのような方法を使用して結果を検証することはできます)。 これはコードゴルフなので、最短のコードが勝ちます。 バリューガイド Symbol Value I 1 II 2 III 3 IIII 4 V 5 VIIII 9 X 10 XIIII 14 XXXXIIII 44 L 50 LXXXXVIIII 99 C 100 D 500 M 1,000 例 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.