LoginSignup
24
21

More than 5 years have passed since last update.

アルゴリズム問題 ~時計の角度~

Last updated at Posted at 2016-01-14

問題

今回は会社の先輩から頭の体操として教えてもらった、あるアルゴリズムの問題を解く。問題の内容は、

時計の長針と短針の間の角度(小さい方)を計算しなさい。

というもの。使用した言語はいつも通りPHPですわ。

実装

考えるべきことは以下。

  • 長針・短針共に0を基とする
  • 短針の0時からの角度
  • 長針の0分からの角度
  • 短針の速度
  • 長針と短針の差分により、引くほうを決定

こんなところか。以上のことが分かれば解ける。
実際に組んだプログラムはこちら。

PHP

// 長針・短針の設定
$short = 23;
$long  = 59;

// 24時間表示 → 12時間表示
$hour   = $short <= 12 ? $short : $short - 12;
$minute = $long;

// 短針の角度取得
$rShort = ($hour * (360 / 12)) + $minute * 1/2;

// 長針の角度取得
$rLong = $minute * (360 / 60);

// 角度取得
$ang = abs($rLong - $rShort);
// 角度が小さいほうを表示
echo min($ang, (360 - $ang));

こうした方が良いよ!というご意見ございましたら、是非コメントいただけると助かります。
よろしくお願い致しますm(_ _)m

24
21
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
21