この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
132. 時計の短針と長針の角度
function angle(time) { const [hour, minute] = time.split(':').map(Number); const hourAngle = (hour % 12) * 30 + minute * 0.5; const minuteAngle = minute * 6; const diff = Math.abs(hourAngle - minuteAngle); return Math.min(diff, 360 - diff);}
angle
関数は、時計の短針と長針の角度(小さい方)を四捨五入して返します。まず、HH:mm
形式の文字列を:
で分割し、hour
とminute
に変換します。ここでhour
は0から23の値ですが、12以上の場合は12を引いたものが実際の針の位置を表します。例えば、13時の場合は1時と同じ位置になります。
その後、短針と長針が時計盤上で表す角度を計算します。短針の角度は、1時間あたり30度移動するため、hour % 12
で1から12までの値を取得し、そこに30を掛けた後、分数の部分も加えます(時針が1時間で30度進むとすると、1分ごとに0.5度進むため)。長針の角度は、1分あたり6度進むため、minute
に6を掛けます。
最後に、短針と長針の角度差を計算し、360度を超える場合でも正しい答えを返せるようにします。
例えば、angle('12:00')
の場合、短針は12時(0度)、長針は12分(72度)を指すため、短針と長針の角度差は72度(小さい方)。同様に、angle('23:30')
の場合は、短針は11時半(172.5度)、長針は180度を指すため、短針と長針の角度差は7.5度(小さい方)となります。