この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - JavaScript コーディング問題
157. semver compare
function compare(semver1, semver2) {
const version1 = semver1.split('.').map(Number);
const version2 = semver2.split('.').map(Number);
for (let i = 0; i < 3; i++) {
if (version1[i] > version2[i]) {
return 1;
} else if (version1[i] < version2[i]) {
return -1;
}
}
return 0;
}
この関数では、まず受け取った2つのsemver文字列を .
で分割し、それぞれの数字を配列に変換しています。次に、配列の各要素を順番に比較し、数字が大きい方が大きいと判断するようにしています。
たとえば、最初の例である compare('12.1.0', '12.0.9')
の場合、version1
は [12, 1, 0]
に、version2
は [12, 0, 9]
になります。最初のループで、version1[0]
と version2[0]
を比較して同じであることがわかります。次に、version1[1]
が version2[1]
よりも大きいので、この場合は 1
を返します。
今回の問題では、マイナーバージョンやパッチバージョンがそれぞれ1桁に限られているので、ループの条件式に i < 3
を使っていますが、より大きな数字に対しても正しく比較するには、より複雑なアルゴリズムを使う必要があります。