ange1のブログスマートフォン用の表示で見るange1のブログこの広告は、90日以上更新していないブログに表示しています。数学はじめにCodeIQというところでプログラミング問題「2つの円の位置関係」「円と線分の位置関係」に解答しましたので、ネタバレです。問題の性質が似ているので、まとめて解説することにします。問題2つの円の情報の塊が、文字列として数組まとめて与えられるので、位置関係を表すアルファベットに変換して出力する、という問題です。各組は「(中心のX座標,中心のY座標)半径/(中心のX座標,中心のY座標)半径」という構成になっています。この入力例の場合、円の位置関係を表すアルファベットをつなげて“FFB”と出力するのですが、位置関係とアルファベットの対応は、次の図のようになっています。一般に、2円の位置関係は、「円の中心間距離」と「半径の和/差」によって測ることができます。$d\gt|r_1+r_2|$ですね。特殊な場合になっていることに注意が必要です。いうことで、距離を調べて位置関係を上の表に基づきインデクス化してあげれば良いことになります。提出したコード(Ruby)は次の通りです。保持しているのは、距離$d$の平方です。いう名前にしたのかは良く分かりません。上の「2つの円の位置関係」と同じく、空白で区切られた情報の塊を、位置関係に対応したアルファベットに変換して出力する問題ですが、今度は円と線分の位置関係です。したがって、入力される情報も変わってきて、1つの塊は「(円の中心のX座標,中心のY座標)半径/(線分の端点のX座標,端点のY座標)(もう一方の端点のX座標,端点のY座標)」という情報になっています。数値が全て整数なのは上の問題と同じですが、もう一つ条件として、「線分の2端点は一致しない」というのもあります。(11,22)100/(22,33)(25,35)という入力に対する出力はIIAとなります。今度は、2つの円の位置関係と違って、多くの要素が絡んできます。