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

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <bits/stdc++.h>
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] = "<<a[0]<<endl; 
    cout<<" arr[1] = "<<a[1]; 
    return 0; 
  
// This code is contributed by rathbhupendra

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

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;
}

chevron_right


Method 2

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Method 3
This method doesn’t even need complement.

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Method 4
Thanks to purvi for suggesting this method.

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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

Improved By : rathbhupendra



Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.