PythonでベクトルAを回転させ、それにベクトルCを追加することで、ベクトルBに到達できるかどうかを確認します。
2D平面に3つのベクトルx、y、zがあるとします。ベクトルxからベクトルyを90度(時計回り)回転させるか、必要に応じて何度でもzを追加して、ベクトルyを取得できるかどうかを確認する必要があります。
したがって、入力がx =(-4、-2)y =(-1、2)z =(-2、-1)のような場合、位置を取得するためにxにzを追加できるため、出力はTrueになります。 (-2、-1)、次に時計回りに90°回転して(-1、2)を取得します。
これを解決するには、次の手順に従います-
関数util()を定義します。これにはp、q、r、sが必要です
- d:=r * r + s * s
- dが0と同じ場合、
- pとqの両方が0の場合はtrueを返し、それ以外の場合はfalseを返します
- (p * r + q * s)と(q * r --p * s)の両方がdで割り切れる場合はtrueを返し、それ以外の場合はfalseを返します
- メインの方法から次のようにします-
- util(x of p-x of q、y of p-y of q、x of r、y of r)またはutil(x of p + x of q、y of p + q [ 1]、x of r、y of r)またはutil(x of p-y of q、y of p + x of q、x of r、y of r)またはutil(x of p + y of q、y of p-x of q、x of r、y of r)が真の場合、
- Trueを返す
- Falseを返す
例
理解を深めるために、次の実装を見てみましょう-
def util(p, q, r, s): d = r * r + s * s if d == 0: return p == 0 and q == 0 return (p * r + q * s) % d == 0 and (q * r - p * s) % d == 0 def solve(p,q,r): if util(p[0] - q[0], p[1] - q[1], r[0], r[1]) or util(p[0] + q[0], p[1] + q[1], r[0], r[1]) or util(p[0] - q[1], p[1] + q[0], r[0], r[1]) or util(p[0] + q[1], p[1] - q[0], r[0], r[1]): return True return False p = (-4, -2) q = (-1, 2) r = (-2, -1) print(solve(p, q, r))
入力
(-4, -2), (-1, 2), (-2, -1)
出力
True
-
Pythonとそのアプリケーションのisprintable()
この記事では、Pythonのisprintable()とそのアプリケーションについて学習します。 is printable()は、文字列処理の目的で使用される組み込みメソッドです。 isprintable()メソッドは、文字列に存在するすべての文字がprintable型であるか、文字列が空の場合に「True」を返します。それ以外の場合は、ブール値「False」を返します。 引数 −呼び出されても引数はありません 印刷可能な文字のリストには、数字、文字、特殊記号、スペースが含まれます。 この図を見て、文字列の文字が印刷可能かどうかを確認しましょう。 例 # checking for pr
-
Pythonとそのアプリケーションのdivmod()
divmod()は、Pythonの標準ライブラリの一部であり、2つの数値をパラメータとして受け取り、商と除算の余りをタプルとして提供します。これは、数値の除算性のチェックや、数値が素数であるかどうかの確認など、多くの数学アプリケーションで役立ちます。 構文 Syntax: divmod(a, b) a and b : b divides a a and b are integers or floats 例 以下の例では、整数と浮動小数点数の両方の場合を参照してください。 divmod()を適用すると、整数と浮動小数点値を含むことができる結果のタプルが得られます。 # with integer