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

JavaScriptの垂直線分のセットですべてのばらばらの交差点を検索します


y1座標とy2座標で定義された一連の垂直領域があります。ここで、y1は開始点であり、y2は各領域の終了点です。

座標系の原点は左上隅であるため、y2は常にy1より大きくなります。

これは例です-

const regions = [
   [10, 100],
   [50, 120],
   [60, 180],
   [140, 220]
];

最初の引数として1つの領域配列を取り、2番目の引数として数値を受け取るJavaScript関数を作成する必要があります。

特定のサイズ(関数の2番目の引数で指定)より大きいすべてのばらばらの交差点を見つけたいと思います。

たとえば、20ユニットとしましょう。

その場合、上記の配列の出力は次のようになります-

const output = [
   [60, 100],
   [140, 180]
];

簡略化されたアルゴリズムを使用して、重複するアイテムを検索するために製品全体で使用できます。

次に、未知の一致のみを繰り返してフィルタリングすることにより、共通部分を取得します。

このためのコードは-

になります
const regions = [
   [10, 100],
   [50, 120],
   [60, 180],
   [140, 220]
];
const getIntersections = (arr,num) => {
   let disjoint, res;
   return arr.reduce((acc,val,ind,array) => {
      if (val.used){
         return acc;
      };
      res = array.map((el, index) => array[(ind + index) % array.length]) .reduce((s,e) => {
         disjoint = [Math.max(s[0],e[0]), Math.min(s[1],e[1])];
         return disjoint[0] < disjoint[1] ? (e.used = true, disjoint) : s;
      });
      res[1] - res[0] > num && acc.push(res);
      return acc;
   },[]);
}
console.log(getIntersections(regions, 20));

出力

そして、コンソールの出力は-

になります
[ [ 60, 100 ], [ 140, 180 ] ]

  1. 配列とJavaScriptでの設定。

    Setデータ型はES2015で導入されました。配列とセットの違いは、配列には重複する値を含めることができますが、セットにはできないことです。要素は、キーを使用し、要素は入力された方法でのみトラバースできるため、Setでは不可能なインデックスを使用して配列でアクセスできます。 以下は、JavaScriptの配列と設定の違いを表示するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name=&

  2. 水平線分と垂直線分の三角形の数を見つけるC++プログラム

    この記事では、指定された水平線分と垂直線分の交点を結合することによって形成できる三角形の数を見つけるプログラムについて説明します。 たとえば、次の線分が与えられたとしましょう。これには3つの交点があります。したがって、これらの点を使用して形成できる三角形の数は 3になります。 C 2 。    | ---|--------|--    |        |    |  --|---|    |        | スイー