Javaでサイズ4のグループの要素の異なるXORを使用して配列を検索します
サイズN(4の倍数のサイズ)の整数配列が与えられ、input [1-4]がutility_arr[1-4]に似ており、計算条件がIf arr [1]になるように、配列に対してXclusiveOR演算を実行する必要があります。 – 4] ={a1、a2、a3、a4}次にq [1 – 4] ={a1⊕a2⊕a3、a1⊕a2⊕a4、a1⊕a3⊕a4、a2⊕a3⊕a4}
このためのさまざまな入出力シナリオを見てみましょう-
で − int [] input ={5、2、3、4};
アウト −XOR演算後の結果43 2 5
説明 −排他的論理和ゲートの出力は、その両方の入力端子が互いに「異なる」論理レベルにある場合にのみ「高」になります。これらの2つの入力AとBが両方とも論理レベル「1」または「0」の場合、出力は「0」になり、ゲートは「奇数ゲートになりますが、偶数ゲートにはなりません」。つまり、入力の1の数が奇数の場合、出力は「1」になります。
a1⊕a2⊕a3=5⊕2⊕3=4
a1⊕a2⊕a4=5⊕2⊕4=3
a1⊕a3⊕a4=5⊕3⊕4=2
a2⊕a3⊕a4=2⊕3⊕4=5
で − int [] input ={7、6、4、4、3、8、9、5};
アウト −XOR演算後の結果55 7 6 2 14 15 4
説明 −排他的論理和ゲートの出力は、その両方の入力端子が互いに「異なる」論理レベルにある場合にのみ「高」になります。これらの2つの入力AとBが両方とも論理レベル「1」または「0」の場合、出力は「0」になり、ゲートは「奇数ゲートになりますが、偶数ゲートにはなりません」。つまり、入力の1が奇数の場合、出力は「1」になります。サイズが4の倍数のinput[]でのみ機能します。他のサイズの入力配列では、奇数の代わりに0が表示されます。
XOR演算後の結果557 6 2 14 15 4
以下のプログラムで使用されるアプローチは次のとおりです-
-
XORのプロパティによると、a⊕a=0およびa⊕0=aです。 (a⊕b⊕c)⊕(b⊕c⊕d)=a⊕d(As(b⊕c)⊕(b⊕c)=0)
-
計算のために、配列は4つのグループに分割され、XORのプロパティに従って各グループの結果を計算します。
-
(a⊕d)を使用して上記のプロパティを参照すると、bとc(a⊕b⊕d)⊕(a⊕d)=b(a⊕c⊕d)⊕(a⊕d)=c
-
そして、bとcを使用することにより、次のアプローチを使用してaとdを取得できます(a⊕b⊕c)⊕(b)⊕(c)=a(b⊕c⊕d)⊕(b)⊕(c)=d
-
このプロセスは、4つのグループすべてに対して繰り返されます
-
ループは、配列の長さが4で除算され、一時値(ans)とユーティリティ配列(回答を格納する)が導入されるまで、2つのポインターiとjで繰り返されます。
-
次のxor演算が実装されているforループ内
ans =inputarray[i]⊕inputarray[i+ 3]
ユーティリティ配列[i+1](計算b)=入力配列[i+1]⊕ans
ユーティリティ配列[i+2](計算c)=入力配列[i+2]⊕ans
ユーティリティ配列[i](計算a)=入力配列[i]⊕((ユーティリティ配列[i + 1])^(ユーティリティ配列[i + 2]))
ユーティリティ配列[i](計算d)=入力配列[i + 3]⊕((ユーティリティ配列[i + 1])^(ユーティリティ配列[i + 2]))
-
そして、ポインタは次の4文字のセット用に更新されます
-
最後に、配列が出力され、結果がユーザーに返されます。
例
import java.util.Arrays; import java.util.List; public class Tutorials{ static int ans = 0; public static void main(String args[]){ int[] input = {7, 1, 2, 3}; int[] arr = new int[input.length]; for (int i = 0, j = 0; j < input.length / 4; j++){ ans = input[i] ^ input[i + 3]; arr[i + 1] = input[i + 1] ^ ans; arr[i + 2] = input[i + 2] ^ ans; arr[i] = input[i] ^ ((arr[i + 1]) ^ (arr[i + 2])); arr[i + 3] = input[i + 3] ^ (arr[i + 1] ^ arr[i + 2]); i += 4; } System.out.println("Different XORs of elements in groups of size 4 is: "); for (int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } } }
出力
上記のコードを実行すると、次の出力が生成されます
Different XORs of elements in groups of size 4 is : 4 5 6 0
-
Javaで配列の要素を不変にする方法は?
いいえ、配列の要素を不変にすることはできません。 ただし、 unmodizableList() java.util.Collectionsのメソッド classは、Listインターフェイスのオブジェクト(そのクラスを実装するオブジェクト)を受け入れ、指定されたオブジェクトの変更不可能な形式を返します。ユーザーは、取得したリストへの読み取り専用アクセスのみが可能です。 そしてasList() ArrayListのメソッド クラスは配列を受け入れ、Listオブジェクトを返します。 したがって、不変の配列を変換するには- 目的のアレイを取得します。 asList()を使用して
-
Javaを使用してJSON配列を作成/作成する方法は?
Json配列は、角かっこで囲まれた順序付けられた値のコレクションです。つまり、「[」で始まり、「]」で終わります。配列の値は「、」(コンマ)で区切られます。 サンプルJSON配列 { "books": [ Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] } json-simpleは、JSONオブジェクトを処理するために使用される軽量ライブラリです。これを使用すると、Javaプログラムを使用してJSONドキュメントのコンテンツを読み書きできます。 JSON-単純なMaven依存関係 以下は、JSON-si