DEV Community

HHMathewChan
HHMathewChan

Posted on • Originally published at rebirthwithcode.tech

3 2

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

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more