Programming puzzle (Assign value without any control statement)

Last Updated : 20 Jul, 2022

Given four integers 'a', 'b', 'y' and 'x', where 'x' can only be either zero or one. Your task is as follows: 

  • If 'x' is zero assign value 'a' to the variable 'y'
  • If 'x' is one assign value 'b' to the variable 'y'.

It is not allowed to use any conditional operator (including the ternary operator).

Examples : 

Input  : a = 3, b = 7,  x = 1
Output : y = 7

Input : a = 3, b = 7, x = 0
Output : y = 3

The idea is to create an array of size two where the first element is 'a' and the second element is 'b'. We use x as an index in the array.

Implementation:

C++
// CPP program to pick a value among two
// according to value of a third variable.
#include <iostream>
using namespace std;

// Returns a if x is 0 and returns
// b if x is 1.
int assignValue(int a, int b, bool x)
{
    int arr[] = {a, b};

    return(arr[x]);
}

// Driver code
int main()
{
    int y = assignValue(3, 7, 0);
    cout << y;
    return 0;
}
C
// C program to pick a value among two
// according to value of a third variable.
#include <stdio.h>
#include <stdbool.h>

// Returns a if x is 0 and returns
// b if x is 1.
int assignValue(int a, int b, bool x)
{
    int arr[] = {a, b};

    return(arr[x]);
}

// Driver code
int main()
{
    int y = assignValue(3, 7, 0);
    printf("%d",y);
    return 0;
}

// This code is contributed by kothvvsaakash.
Java
// Java program to pick a value among two
// according to value of a third variable.
class GFG {

    // Returns a if x is 0 and returns
    // b if x is 1.
    static int assignValue(int a, int b, int x)
    {
        int arr[] = {a, b};

        return (arr[x]);
    }

    // Driver code
    public static void main(String[] args)
    {
        int y = assignValue(3, 7, 0);
        System.out.println(y);
    }
}

// This code is contributed by  Smitha Dinesh Semwal.
Python3
# Python 3 program to
# pick a value among two
# according to value
# of a third variable.

# Returns a if x
# is 0 and returns
# b if x is 1.
def assignValue(a, b, x):

    arr = [a, b]
    return(arr[x])


# Driver code
y = assignValue(3, 7, 0)

print(y)

# This code is contributed by
# Smitha Dinesh Semwal
C#
// C# program to pick a value among two
// according to value of a third variable.
using System;

public class GFG {
 
    // Returns a if x is 0 and returns
    // b if x is 1.
    static int assignValue(int a, int b, int x)
    {
        int []arr = {a, b};
 
        return (arr[x]);
    }
 
    // Driver code
    public static void Main()
    {
        int y = assignValue(3, 7, 0);
        Console.WriteLine(y);
    }
}
// This code is contributed by PrinciRaj1992
PHP
<?php
// PHP program to pick a value 
// among two according to value
// of a third variable.

// Returns a if x is 0 and 
// returns b if x is 1.

function assignValue($a, $b, $x)
{
    $arr = array($a, $b);

    return($arr[$x]);
}

// Driver code
$y = assignValue(3, 7, 0);
echo $y;

// This code is contributed by ajit
?>
JavaScript
<script>
// javascript program to pick a value among two
// according to value of a third variable.    
// Returns a if x is 0 and returns
    // b if x is 1.
    function assignValue(a , b , x) {
        var arr = [ a, b ];

        return (arr[x]);
    }

    // Driver code
    
        var y = assignValue(3, 7, 0);
        document.write(y);

// This code is contributed by todaysgaurav 
</script>

Output
3

Time complexity : O(1) 
Auxiliary Space : O(1)

Alternate Solution: 

C++
// C++ program to pick a value among two
// according to value of a third variable.
#include <iostream>
using namespace std;

// Returns a if x is 0 and returns
// b if x is 1.
int assignValue(int a, int b, bool x)
{   
    return (1 - x)*a + x*b;
}

// Driver code
int main()
{
    int y = assignValue(3, 7, 0);
    cout << y;
    return 0;
}
C
// C program to pick a value among two
// according to value of a third variable.
#include <stdio.h>
#include <stdbool.h>

// Returns a if x is 0 and returns
// b if x is 1.
int assignValue(int a, int b, bool x)
{   
    return (1 - x)*a + x*b;
}

// Driver code
int main()
{
    int y = assignValue(3, 7, 0);
    printf("%d",y);
    return 0;
}

// This code is contributed by kothvvsaakash.
Java
// Java program to pick a value among two
// according to value of a third variable.
import java.io.*;

class GFG {

// Returns a if x is 0 and returns
// b if x is 1.
static int assignValue(int a, int b, int x)
{ 
    return (1 - x) * a + x * b;
}
        
// Driver code
public static void main (String[] args) 
{
    int y = assignValue(3, 7, 0);
        
    System.out.println(y);
}
}

// This code is contributed by ShubhamCoder
Python3
# Python3 program to pick a value among two
# according to the value of a third variable.

# Returns a if x is 0 and returns
# b if x is 1.
def assignValue(a, b, x):
    
    return (1 - x) * a + x * b
    
# Driver code
y = assignValue(3, 7, 0)
print(y)

# This code is contributed by ShubhamCoder
C#
// C# program to pick a value among two
// according to value of a third variable.
using System;

class GFG {

// Returns a if x is 0 and returns
// b if x is 1.
static int assignValue(int a, int b, int x)
{ 
    return (1 - x) * a + x * b;
}
    
// Driver code
public static void Main()
{
    int y = assignValue(3, 7, 0);
    
    Console.WriteLine(y);
}
}

// This code is contributed by ShubhamCoder
JavaScript
<script>

// Javascript program to pick a value among two
// according to value of a third variable.

    // Returns a if x is 0 and returns
    // b if x is 1.
    function assignValue(a , b , x) {
        return (1 - x) * a + x * b;
    }

    // Driver code
    
        var y = assignValue(3, 7, 0);

        document.write(y);

// This code contributed by Rajput-Ji 

</script>

Output
3

Time complexity : O(1) 
Auxiliary Space : O(1)

Thanks to Forrest Smith for suggesting the above solution.
 

Comment