List Comprehensions – HackerRank Solution

List Comprehensions – HackerRank Solution

Problem :

Let’s learn about list comprehensions! You are given three integers x, y and z representing the dimensions of a cuboid along with an integer n. Print a list of all possible coordinates given by (i,j,k) on a 3D grid where the sum of i + j + k is not equal to n. Here, 0 <= i <= x; 0 <= j <= y; 0 <= k <= z. Please use list comprehensions rather than multiple loops, as a learning exercise.

Example :

  • x = 1
  • y = 1
  • z = 2
  • n = 3

All permutations of [i,j,k] are:

Print an array of the elements that do not sum to n = 3.

Input Format :

Four integers x, y, z and n, each on a separate line.

Constraints :

Print the list in lexicographic increasing order.

Sample Input 0 :

1
1
1
2

Sample Output 0 :

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]]

Sample Input 1 :

2
2
2
2

Sample Output 1 :

[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 2], [0, 2, 1], [0, 2, 2], [1, 0, 0], [1, 0, 2], [1, 1, 1], [1, 1, 2], [1, 2, 0], [1, 2, 1], [1, 2, 2], [2, 0, 1], [2, 0, 2], [2, 1, 0], [2, 1, 1], [2, 1, 2], [2, 2, 0], [2, 2, 1], [2, 2, 2]]

Solution :

if __name__ == '__main__':
    x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())
    listijk = []

    for i in range(x + 1):
        for j in range (y + 1):
            for k in range (z + 1):
                if i + j + k != n: 
                    listijk.append([i,j,k])
print(listijk)

 1,411 total views,  1 views today

Leave a Reply

Your email address will not be published. Required fields are marked *