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

BFE.devでのAI解答例 - JavaScript コーディング問題
77. BigIntの引き算を実装する II

以下はJavaScriptによる解答例です。

function substract(a, b) {  // 文字列の前後にある空白を削除してから符号を確認する  const negativeA = a.trim().startsWith('-');  const negativeB = b.trim().startsWith('-');  // 符号を削除する  a = a.trim().replace(/^[-+]/, '');  b = b.trim().replace(/^[-+]/, '');  // 引き算の結果が負になる場合、符号を反転する  let negativeResult = false;  if (negativeA && !negativeB) {    negativeResult = true;  } else if (!negativeA && negativeB) {    negativeResult = false;  } else if (!negativeA && !negativeB && a.length < b.length) {    negativeResult = true;  } else if (!negativeA && !negativeB && a.length > b.length) {    negativeResult = false;  } else {    for (let i = 0; i < a.length; i++) {      if (a[i] < b[i]) {        negativeResult = true;        break;      } else if (a[i] > b[i]) {        negativeResult = false;        break;      }    }  }  // 数字を逆順にして、桁上がりを考慮しながら引き算する  a = a.split('').reverse();  b = b.split('').reverse();  const result = [];  let carry = 0;  for (let i = 0; i < Math.max(a.length, b.length); i++) {    const digitA = Number(a[i] || 0);    const digitB = Number(b[i] || 0);    const digitResult = digitA - digitB - carry;    if (digitResult < 0) {      result.push(digitResult + 10);      carry = 1;    } else {      result.push(digitResult);      carry = 0;    }  }  // 頭のゼロを削除して、符号をつけて結果を返す  let output = result.reverse().join('').replace(/^0+/, '');  output = negativeResult ? '-' + output : output;  return output;}