Pythonの2点間の直線上の積分座標の数を見つけるプログラム
2つのポイント(p1、q1)と(p2、q2)が提供されているとします。与えられた2つの点の間に直線が引かれる場合、積分座標の数(x値とy値は両方とも整数)を見つける必要があります。ポイント数が返されます。
したがって、入力がp1 =3、q1 =3、p2 =6、q2 =6の場合、出力は2になります。直線を描くと、点(5,5)と(6 、6)は直線上にあります。
これを解決するには、次の手順に従います-
- 関数gcd_find()を定義します。これにはx、y
- かかります
- yが0と同じ場合、
- return x
- return gcd_find(y、x mod y)
- yが0と同じ場合、
メインのメソッド/関数から、次のようにします-
- return gcd_find(| p2 --p1 |、| q2 --q1 |)-1
例
理解を深めるために、次の実装を見てみましょう-
def gcd_find(x,y): if y == 0: return x return gcd_find(y,x % y) def solve(p1,q1,p2,q2): return gcd_find(abs(p2 - p1),abs(q2 - q1)) - 1 print(solve(3,3,6,6))
入力
3,3,6,6
出力
2
-
ポイントが存在せず、Pythonで最も広い2つのポイント間の垂直領域を見つけるプログラム
(x、y)としてn個の点が与えられたと仮定します。垂直領域は、y軸に沿って無限に拡張される領域です。他のポイントがエリア内になく、最も広いポイントがないように、2つのポイント間の垂直エリアを見つける必要があります。 したがって、入力がpts =[[10,9]、[11,11]、[9,6]、[11,9]]の場合、出力は1になります。 赤と青の領域が最適で、内部にポイントはありません。 これを解決するには、次の手順に従います- リストを並べ替えるpts 1からポイントのサイズまでの範囲のiの場合、実行します (pts [i、0] --pts [i-1、0])の最大値を返
-
Pythonでgodownに入れるボックスの数を見つけるためのプログラム
整数を含む2つの配列があるとします。 1つのリストには、いくつかのユニット幅ボックスの高さが含まれ、別の配列には、godownの部屋の高さが含まれます。部屋には0...nの番号が付けられ、部屋の高さは配列godownのそれぞれのインデックスに示されます。ゴダウンに押し込める箱の数を調べなければなりません。いくつかの点に注意する必要があります ボックスを重ねることはできません。 ボックスの順序は変更できます。 ボックスは左から右にのみゴダウンに入れられます。 ボックスが部屋の高さよりも高い場合、そのボックスとその右側のすべてのボックスをゴダウンに押し込むことはできません。