Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで正方形(1つの色付きセル)を2つの等しい部分に分割できるかどうかを確認します


サイズがnの正方形が提供されているとします。 nサイズの正方形はさらにn2個の小さい正方形に分割されます。小さい方の正方形は単位サイズで、正方形の1つは独自の色で着色されています。

ここで、大きな正方形を2つの等しい部分に切断する場合、切断線がその独特の色の小さな正方形と共通の点を持たないように切断する必要があります。また、新しくカットされた2つのピースが互いに鏡像であるという事実も考慮する必要があります。ですから、そのような正方形を切ることが条件を考えれば可能かどうかを見極める必要があります。 nの値と、大きい方の正方形の色付きの正方形の位置があります。

したがって、入力がsize =50、coloured_row_pos =25、coloured_col_pos =25のような場合、出力は「切断できません」になります。

これを解決するには、次の手順に従います-

  • 中央:=サイズ/2のフロア値
  • (middleがcolored_row_posと同じまたはmiddleがcolored_row_pos-1と同じ)および(middleがcolored_col_posと同じまたはmiddleがcolored_col_pos-1と同じ)の場合、
    • Falseを返す
  • それ以外の場合、
    • Trueを返す

理解を深めるために、次の実装を見てみましょう-

def solve(size, colored_row_pos, colored_col_pos) :
   middle = size // 2
   if (middle == colored_row_pos or middle == colored_row_pos - 1) and (middle ==    colored_col_pos or middle == colored_col_pos - 1) :
      print("Cutting is not possible")
   else :
      print("Cutting is possible")
size = 50
colored_row_pos, colored_col_pos = 25, 25 
solve(size, colored_row_pos, colored_col_pos)

入力

50, 25, 25

出力

Cutting is not possible

  1. 女王がPythonでチェス盤の特定のセルを攻撃できるかどうかを確認します

    チェス盤に女王と対戦相手の2つの座標があるとします。これらのポイントはそれぞれQとOです。女王が相手を攻撃できるかどうかを確認する必要があります。女王は同じ行、同じ列、斜めに攻撃できることがわかっています。 したがって、入力がQ =(1、1)O =(4、4)のようである場合、Qは対角線上(4、4)になる可能性があるため、出力はTrueになります。 これを解決するには、次の手順に従います- QのxがOのxと同じである場合、 Trueを返す QのyがOのyと同じである場合、 Trueを返す if | x of Q-x of O | Qの|y-O|のyと同じで、 Trueを

  2. Pythonで合計が等しい3つの部分に配列を分割する

    整数の配列Aがあるとすると、合計が等しい3つの空でない部分に配列を分割できる場合にのみ、出力はtrueになります。 正式には、(A [0] + A [1] + ... +A[i]がA[i+ 1] + A[と同じであるインデックスi+1