DEV Community

HHMathewChan
HHMathewChan

Posted on • Originally published at rebirthwithcode.tech

Python Exercise 21: list comprehensions

Question

You are given three integers (x,y,z) representing the dimensions of a cuboid along with an integer n .

  • Print a list of all possible coordinates
    • given by  (i, j , k) in a 3D grid
    • where the sum of  i+j+k is not equal to n.
    • i.e. can be greater than or smaller than n
  • Here 0<=i<=x; 0<=j<=y; 0<=k<=z
  • Please use list comprehensions
  • Print the list in lexicographic increasing order.

Example 

 

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

  • All permutations of (i, j, k)  are:  
[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2]] 
Enter fullscreen mode Exit fullscreen mode
  • Print an array of the elements that sum of i, j, k does not equal to n (The required output)
[[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 2]] 
Enter fullscreen mode Exit fullscreen mode

My solution

  • code
 # make list of all x,y and z possible number     x = int(input())     y = int(input())     z = int(input())     n = int(input()) x = [i for i in range(x+1)] y = [i for i in range(y+1)] z = [i for i in range(z+1)] # for each combination of i,j,k will form a sublist in the final_list, and sum of i,j,k will not equal to n  final_list = [[i,j,k]for i in x for j in y for k in z if (i+j+k)!=n] print(final_list) 
Enter fullscreen mode Exit fullscreen mode

Other solution

  • a shorter version
x = int(input()) y = int(input()) z = int(input()) n = int(input()) # for each combination of i,j,k will form a sublist in the final_list, and sum of i,j,k will not equal to n final_list = [[i,j,k]for i in range(x+1) for j in range(y+1) for k in range(z+1) if (i+j+k)!=n] print(final_list) 
Enter fullscreen mode Exit fullscreen mode

My reflection

  • The first time to try problem need to obtain variable form standard input
  • good exercise.
  • The first time to use multiple for loop in list comprehension.

Credit

challenge on hackerrank

Top comments (0)