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

JavaScriptで方程式の妥当性をチェックする


問題

最初で唯一の引数として配列arrを受け取るJavaScript関数を作成する必要があります。

配列arrは、次の2種類のいずれかの文字列方程式で構成されます-

  • ‘x ===Y’

  • X!==Y’

ここで、XとYは任意の変数にすることができます。

この関数は、配列内のすべての方程式について、配列内のすべての方程式が真になるように番号を割り当てることができるかどうかをチェックすることになっています。

たとえば、関数への入力が-

の場合
const arr = ['X===Y', 'Y!==Z', 'X===Z'];

その場合、出力は-

になります。
const output = false;

出力の説明:

X、Y、Zにどの値を選択しても、3つの方程式すべてを満たすことはできません。

このためのコードは-

になります
const arr = ['X===Y', 'Y!==Z', 'X===Z'];
const validateEquations = (arr = []) => {
   const map = {};
   const len = {};
   const inValids = [];
   const find = (item) => {
      while(map[item] && item !== map[item]){
         map[item] = map[map[item]];
         item = map[item];
      };
      return item;
   };
   const add = (a, b) => {
      const first = find(a);
      const second = find(b);
      if(first === second){
         return;
      };
      if(len[first] < len[second]){
         map[first] = second;
         len[second] += len[first];
      }else{
         map[second] = first;
         len[first] += len[second];
      }
   }
   arr.forEach((item) => {
      const X = item[0];
      const Y = item[4];
      map[X] = map[X] || X;
      map[Y] = map[Y] || Y;
      len[X] = len[X] || 1;
      len[Y] = len[Y] || 1;
      if(item[1] === '!'){
         inValids.push([X, Y]);
      }else{
         add(X, Y);
      };
   });
   return inValids.every(([a, b]) => find(a) !== find(b))
};
console.log(validateEquations(arr));

出力

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

になります
false

  1. JavaScriptConst

    JavaScriptのconst宣言は、他の値に再割り当てしたり、後で再宣言したりできない変数を作成します。 ES2015で導入されました。 以下はJavaScriptconst宣言のコードです- 例 <!DOCTYPE html> <html> <head> <style>    body {       font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;    } </sty

  2. JavaScriptでのConstとLet。

    Constとletは、ブロックスコープの変数を宣言するためにES2015で導入されました。 letを使用して宣言された変数は再割り当てできますが、constを使用して宣言された場合は再割り当てできません。 以下は、JavaScriptでletとconstを示すコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="wi