ITP1_2_D: Circle in a Rectangle (python)
問題
長方形の中に円が含まれるかを判定するプログラムを作成してください。次のように、長方形は左下の頂点を原点とし、右上の頂点の座標 (W,H) が与えられます。また、円はその中心の座標 (x,y) と半径 rr で与えられます。
Input
5つの整数 W、H、x、y、r が空白区切りで1行に与えられます。
Output
円が長方形の内部に含まれるなら Yes と、一部でもはみ出るならば No と1行に出力してください。
Constraints
−100≤x,y≤100−100≤x,y≤100
0<W,H,r≤100
回答
list = map(int,raw_input().split()) W = list[0] H = list[1] x = list[2] y = list[3] r = list[4] if x-r < 0: print "No" elif x + r > W: print "No" elif y-r < 0: print "No" elif y+r > H: print "No" else: print "Yes"
説明
空白区切りでlistに格納。
それを各変数に要素毎に入れる。
if文は上下左右それぞれ円の縁が長方形に接触したかを判断する処理。
x-r < 0: 長方形の左端に円が接触したかを判断
x+r < W: 長方形の右端に円が接触したかを判断
y-r < 0: 長方形の下に円が接触したかを判断
y+r < H: 長方形の上に円が接触したかを判断
上記4つの条件にあてはまらなければ、円は長方形内で縁に接触せず存在してるためセーフ。
雑感
アタマの中で図をイメージするのが楽しかった。
ただし日本語の中から数式を導くのがまだ得意じゃないみたいです。