# Programming puzzle (Assign value without any control statement)

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 ternary operator).

Examples :

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

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

## C++

 `// CPP program to pick a value among two ` `// according to value of a third variable. ` `#include ` `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; ` `} `

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

/div>

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

 ` `

Output :

``` 3
```

Alternate Solution :

## C++

 `// CPP program to pick a value among two ` `// according to value of a third variable. ` `#include ` `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 = assValue(3, 7, 0); ` `    ``cout << y ` `    ``return` `0; ` `} `

Output :

``` 7
```

Time Complexity: O(1)
Thanks to Forrest Smith for suggesting above solution.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.