Open In App

# A Boolean Array Puzzle

Input: A array arr[] of two elements having value 0 and 1
Output: Make both elements 0.

Specifications: Following are the specifications to follow.

1) It is guaranteed that one element is 0 but we do not know its position.
2) We can’t say about another element it can be 0 or 1.
3) We can only complement array elements, no other operation like and, or, multi, division, …. etc.
4) We can’t use if, else and loop constructs.
5) Obviously, we can’t directly assign 0 to array elements.

There are several ways we can do it as we are sure that always one Zero is there. Thanks to devendraiiit for suggesting following 3 methods.

Method 1

## C++

 `#include ``using` `namespace` `std;``void` `changeToZero(``int` `a[2])``{``    ``a[ a[1] ] = a[ !a[1] ];``}` `// Driver code``int` `main()``{``    ``int` `a[] = {1, 0};``    ``changeToZero(a);``    ` `    ``cout<<``"arr[0] = "``<

## C

 `void` `changeToZero(``int` `a[2])``{``a[ a[1] ] = a[ !a[1] ];``}` `int` `main()``{``int` `a[] = {1, 0};``changeToZero(a);` `printf``(``" arr[0] = %d \n"``, a[0]);``printf``(``" arr[1] = %d "``, a[1]);``getchar``();``return` `0;``}`

## Java

 `import` `java.io.*;` `class` `GFG{` `public` `static` `void` `changeToZero(``int` `a[])``{``    ``a[a[``1``]] = a[``1` `- a[``1``]];``}` `// Driver code``public` `static` `void` `main(String args[])``{``    ``int``[] arr;``    ``arr = ``new` `int``[``2``];``    ``arr[``0``] = ``1``;``    ``arr[``1``] = ``0``;``    ``changeToZero(arr);``    ` `    ``System.out.println(``"arr[0]= "` `+ arr[``0``]);``    ``System.out.println(``"arr[1]= "` `+ arr[``1``]);``}``}` `// This code is contributed by rohitsingh07052`

## Python3

 `def` `changeToZero(a):``    ``a[ a[``1``] ] ``=` `a[ ``not` `a[``1``] ]``    ``return` `a` `# Driver code``if` `__name__``=``=``'__main__'``:``    ``a ``=` `[``1``, ``0``]``    ``a ``=` `changeToZero(a);``    ` `    ``print``(``" arr[0] = "` `+` `str``(a[``0``]))``    ``print``(``" arr[1] = "` `+` `str``(a[``1``]))` `# This code is contributed by Yash_R`

## C#

 `using` `System;` `class` `GFG {` `    ``public` `static` `void` `changeToZero(``int``[] a)``    ``{``        ``a[a[1]] = a[1 - a[1]];``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int``[] arr;``        ``arr = ``new` `int``[2];``        ``arr[0] = 1;``        ``arr[1] = 0;``        ``changeToZero(arr);` `        ``Console.WriteLine(``"arr[0]= "` `+ arr[0]);``        ``Console.WriteLine(``"arr[1]= "` `+ arr[1]);``    ``}``}` `// This code is contributed by souravmahato348.`

## Javascript

 ``

Time Complexity: O(1)

Auxiliary Space: O(1)

Method 2

## C++

 `void` `changeToZero(``int` `a[2])``{``    ``a[ !a[0] ] = a[ !a[1] ];``}`

## C

 `void` `changeToZero(``int` `a[2])``{``    ``a[ !a[0] ] = a[ !a[1] ]``}`

## Java

 `void` `changeToZero(``int` `[``2``]a) {``  ``a[!a[``0``]] = a[!a[``1``]];``}` `// This code is contributed by souravmahato348.`

## Python3

 `def` `changeToZero(a):``    ` `    ``a[ !a[``0``] ] ``=` `a[ !a[``1``] ]``  ` `  ``# This code is contributed by sanjoy_62.`

## C#

 `static` `void` `changeToZero(``int` `[2]a) {``  ``a[!a[0]] = a[!a[1]];``}` `// This code is contributed by souravmahato348.`

## Javascript

 ``

Time Complexity: O(1)

Auxiliary Space: O(1)

Method 3
This method doesn’t even need complement.

## C

 `void` `changeToZero(``int` `a[2])``{``    ``a[ a[1] ] = a[ a[0] ]``}`

## Java

 `static` `void` `changeToZero(``int` `a[``2``])``{``    ``a[ a[``1``] ] = a[ a[``0``] ]``}` `// this code is contributed by shivanisinghss2110`

## Python3

 `def` `changeToZero(a) :``    ` `    ``a[ a[``1``] ] ``=` `a[ a[``0``] ]`

## C#

 `static` `void` `changeToZero(``int``[] a)``{``    ``a[ a[1] ] = a[ a[0] ];``}` `//this code is contributed by phasing17`

## Javascript

 `function` `changeToZero(a)``{``     ``a[ a[1] ] = a[ a[0] ];``}`  `//this code is contributed by phasing17`

Time Complexity: O(1)

Auxiliary Space: O(1)

Method 4
Thanks to purvi for suggesting this method.

## C

 `void` `changeToZero(``int` `a[2])``{``  ``a[0] = a[a[0]];``  ``a[1] = a[0];``}`

## Java

 `static` `void` `changeToZero(``int` `a[])``{``  ``a[``0``] = a[a[``0``]];``  ``a[``1``] = a[``0``];``}``//This code is contributed by shruti456rawal`

## C#

 `static` `void` `changeToZero(``int``[] a)``{``  ``a[0] = a[a[0]];``  ``a[1] = a[0];``}``//This code is contributed by shruti456rawal`

## Python3

 `# Python code for the above approach` `def` `changeToZero(a) :``    ` `    ``a[``0``] ``=` `a[a[``0``]]``    ``a[``1``] ``=` `a[``0``]` `    ``# This code is contributed by splevel62.`

## Javascript

 `// JavaScript function to implement``// the approach` `function` `changeToZero(a)``{``  ``a[0] = a[a[0]];``  ``a[1] = a[0];``}` `// This code is contributed by phasing17`

Time Complexity: O(1)

Auxiliary Space: O(1)

There may be many more methods.
Please write comments if you find the above codes incorrect, or find other ways to solve the same problem.