この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
133. 整数をローマ数字に変換する
解法:
整数をローマ数字に変換するには、次の手順に従います。
- テーブルから最大のローマ数字で数値を減算します
- できるだけ大きい数字で削減できるだけシステムに加えます
- 1 - 2を繰り返します。
以下は、このアプローチを実装する方法です。
function integerToRoman(num) { const romanToIntMap = new Map([ [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I'] ]); let result = ''; for (let [intVal, romanVal] of romanToIntMap) { while (num >= intVal) { result += romanVal; num -= intVal; } } return result;}
ローマ数字の対応は Map
で表現され、ループを使って先頭から大きい順にループします。与えられたループ値が現在値より大きくなるまで、そのループ値を結果に追加し、現在値から引きます。これにより、テーブルからできるだけ最も大きな数字を取り除くことができます。必要に応じて、結果文字列を返します。
この関数を次のようにテストできます。
console.log(integerToRoman(123)); // 'CXXIII'console.log(integerToRoman(1999)); // 'MCMXCIX'console.log(integerToRoman(3420)); // 'MMMCDXX'
これで与えられたテストケースが正常に動作するはずです。