AIZU ONLINE JUDGE ITP1_10_Aをpythonで解いてみた

python

本サイトAIZU ONLINE JUDGE ITP1_10_A へはこちらから

目次

問題:距離

2点 P1(x1, y1), P2(x2, y2) の距離を求めるプログラムを作成せよ。

Input

x1, y1, x2, y2 (実数)が空白区切りで与えられます。

Output

P1とP2の距離を実数で1行に出力して下さい。0.0001以下の誤差があってもよいものとします。

Sample Input

0 0 1 1

Sample Output

1.41421356

解答例

import math
x1, y1, x2, y2 = map(float, input().split())
print(math.hypot(x2 - x1, y2 - y1))

解説

以下のように解いていきます。

  1. 4つの整数の読み込み
  2. P1とP2の距離の表示

ここではmap関数を使用します。第二引数のinput().split()で空白区切りの文字列を取得した値を、一つずつint関数に当てはめてint型に変換、x1, y1, x2, y2 に設定していきます。

# input().split()で空白区切りの文字列を取得 → intに変換 → x1, y1, x2, y2 に設定
x1, y1, x2, y2 = map(float, input().split())

※サイト内「AIZU ONLINE JUDGE ITP1_1_Cをpythonで解いてみた」の、map関数とはに使用方法が書かれておりますのでよかったらご覧ください。

まずは、原点からの距離を求めるmath.hypotについて説明します。

math.hypotとは

mathモジュールの一つで、引数に2点を設定することで、原点から点 (x, y) のベクトルの長さを求める事ができます。

文頭に”import math”と宣言し、数学処理に必要となる機能(mathモジュール)をimportすることで使用することができます。

import math
math.hypot(x,y)

具体的な使い方は以下です。

# mathモジュールをインポート
import math
# 原点から点 (3, 4) のベクトルの長さを戻り値として返す
print(math.hypot(3, 4))
# 出力
5.0

今回は、P1(x1, y1), P2(x2, y2)の距離を求めるため、P2とP1のxとyの距離(x2 – x1, y2 – y1)を設定することで原点から2点の距離(斜辺の長さ)を求める事ができます。

# mathモジュールをインポート
import math
# math.hypotで原点から2点の距離(斜辺の長さ)を求める
print(math.hypot(x2 - x1, y2 - y1))

※サイト内「AIZU ONLINE JUDGE ITP1_4_Bをpythonで解いてみた」の、mathモジュールとはに使用方法が書かれておりますのでよかったらご覧ください。

最後に、もう一度プログラムを確認してみましょう。

# mathモジュールをインポート
import math
# input().split()で空白区切りの文字列を取得 → intに変換 → x1, y1, x2, y2 に設定
x1, y1, x2, y2 = map(float, input().split())
# math.hypotで原点から2点の距離(斜辺の長さ)を求める
print(math.hypot(x2 - x1, y2 - y1))
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

■保有資格
Salesforce 認定 Platform アプリケーションビルダー
Salesforce 認定 Platform デベロッパー

コメント

コメントする

目次