# 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++

 `#include ``using` `namespace` `std;` `void` `changeToZero(``int` `a[2]) ``{ ``    ``a[ a[1] ] = a[ a[0] ] ``} `  `int` `main() {` `    ``cout << ``"GFG!"``;``    ``return` `0;``}`

## 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++

 `#include ``using` `namespace` `std;`  `void` `changeToZero(``int` `a[2])``{``  ``a[0] = a[a[0]];``  ``a[1] = a[0];``}`  `int` `main() {` `    ``cout << ``"GFG!"``;``    ``return` `0;``}`

## 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`

## 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.`

## C#

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

## 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.

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Previous
Next