コンパイラかく語りき

import { Fun } from 'programming'

【Ruby】時計の針の距離を算出する

競技プログラミングの回答メモ。

実際の問題はちょっと違うけど、エッセンスは同じです。

abc013.contest.atcoder.jp

 

問題

まず、2つの数値が与えられる。それぞれの数値は、時計の長針と短針の位置を指し示す。ここから、2つの針の最短距離を求めよ。

※ 距離=何時間分離れているか

※ 針はピッタリ数値上にあり、中間地点にはいないものとする。

 

1と4が与えられたら、その距離は3となる。

ただし、11と4が与えられたら、最短距離なので7ではなく5となる。

 

回答

回答はこんな感じ。

gistbedb867b6b3d8b6e9d6b777248c53a86

 

ポイントは条件分岐と、absメソッド

 

条件分岐

以下の条件は、6時間以上離れてしまっているかの判定になる。

a - b > 6 

 これによって、右回りと左回り、どちらが最短距離かを判定している。

 

absメソッド

絶対を求めるNumericクラスのメソッド

ruby-doc.org

 

4 と11が与えられた時、4 - 11はマイナスになってしまうので、必要となる。

 

以上です。競技プログラミングのB問題レベルの回答でした。