# A Boolean Array Puzzle

• Difficulty Level : Medium
• Last Updated : 23 Jun, 2022

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 codeint 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 codepublic 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 codeif __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] ]}

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

My Personal Notes arrow_drop_up