この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - JavaScript コーディング問題
133. 整数をローマ数字に変換する

解法:

整数をローマ数字に変換するには、次の手順に従います。

  1. テーブルから最大のローマ数字で数値を減算します
  2. できるだけ大きい数字で削減できるだけシステムに加えます
  3. 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'

これで与えられたテストケースが正常に動作するはずです。