Open In App
Related Articles

A Boolean Array Puzzle

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

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

                    

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

<script>
 
function changeToZero(a)
{
    a[a[1]] = a[1 - a[1]];
}
     
// Driver code
let arr;
arr = [];
arr[0] = 1;
arr[1] = 0;
changeToZero(arr);
 
document.write("arr[0] = " + arr[0] + "<br/>");
document.write("arr[1] = " + arr[1]);
 
// This code is contributed by avijitmondal1998
 
</script>

                    

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

<script>
function changeToZero(a)
{
    a[ !a[0] ] = a[ !a[1] ];
}
 
// This code is contributed by souravmahato348.
</script>

                    

Time Complexity: O(1)

Auxiliary Space: O(1)


Method 3
This method doesn’t even need complement. 

C++

#include <iostream>
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 <iostream>
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!


Last Updated : 11 Nov, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads
Complete Tutorials