チャレンジ
任意の量の長方形を指定して、2D平面に描画されたときの長方形の交差の合計数を出力します。
ここでの交点P
は、互いに直交し、どちらもで終わっていない2本の線が交差する点として定義されP
ます。
例
ここでの各長方形は、最初に左上隅の座標、次に右下隅の座標を持つ2タプルで表されます。
[(-8,6)、(-4、-2)] [(-4,9)、(4,3)] [(2,10)、(14,4)] [(1,7)、(10、-6)] [(7,4)、(10,2)] [(5,2)、(9、-4)] [(-6、-4)、(-2、-6)]
これらの長方形は、6つの交差点を作成します。これが出力でなければなりません。
- 上の画像からわかるように、長方形にタッチしても、ここでは交差が作成されず、カウントされません。
- 再タグ付けは、任意の形式でエンコードできます。使用する形式を明確にしてください。
- 複数の長方形が同じ点で交差する場合、それは1つの交差としてのみカウントされます。
- 座標は常に整数です。
- 入力に重複する長方形はありません。
- 入力として常に少なくとも1つの長方形を取得します。
- この問題を直接解決するビルトインは使用できません。さらに、方程式を解くビルトインは使用できません。他のすべての組み込みは許可されます。
- 出力は、交差数を示す単一の整数でなければなりません。
ルール
- 機能または完全なプログラムが許可されています。
- 入力/出力のデフォルトのルール。
- 標準の抜け穴が適用されます。
- これはcode-golfなので、最小のバイト数が優先されます。タイブレーカーは以前の提出です。
テストケース
上記の例と同じフォーマット。長方形はリストにラップされます。
[[(-8,6)、(-4、-2)]、[(-4,9)、(4,3)]、[(2,10)、(14,4)]、[(1 、7)、(10、-6)]、[(7,4)、(10,2)]、[(5,2)、(9、-4)]、[(-6、-4)、 (-2、-6)]]-> 6 [[(-2,2)、(6、-4)]]-> 0 [[(-12,10)、(-8,6)]、[(-14,6)、(-10,2)]、[(-10,6)、(-6,2)]]- > 0 [[(-4,10)、(6,2)]、[(-2,8)、(4,3)]、[(1,6)、(8,4)]、[(2,11 )、(5,5)]]-> 10 [[(8,2)、(12、-2)]、[(10,0)、(14、-4)]]-> 2 [[(0,2)、(2,0)]、[(0,1)、(3,0)]]-> 1 [[(-10、-2)、(-6、-6)]、[(-6、-2)、(-2、-6)]、[(-8、-4)、(-4、 -8)]]-> 3
ハッピーコーディング!
図によると、2つ以上の長方形の交点にある多くの点は明らかに無視されているため、回答をカウントする対象を定義する必要があります。
—
feersum
では、
—
Neil
[[(0,0),(1,2)],[(0,0),(2,1)]]
交差点は1つですか?
@ニールその通り。このテストケースを追加します。ありがとう!
—
Denker 2016年
@feersumダイアグラムでは、何を数え、何を数えないかがかなり明確になると思います。しかし、正式な定義は私が害を及ぼすとは思わないので、追加します。
—
Denker 2016年
(x、y)で交差する長方形のペアがN個ある場合、ポイント(x、y)は1回またはN回カウントされますか?
—
feersum