Open In App

Python | Checking triangular inequality on list of lists

Last Updated : 18 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a list of lists, the task is to find whether a sublist satisfies the triangle inequality. The triangle inequality states that for any triangle, the sum of the lengths of any two sides must be greater than or equal to the length of the remaining side. In other words, a triangle is valid if sum of its two sides is greater than the third side. If three sides are a, b and c, then three conditions should be met.

a + b > c 
a + c > b 
b + c > a  

Method #1 : Using List comprehension 

Python3




# Python code to find whether a sublist
# satisfies the triangle inequality.
 
# List initialization
Input = [[1, 3, 1], [4, 5, 6]]
 
# Sorting sublist
for elem in Input:
    elem.sort()
 
# Using list comprehension
Output = [(p, q, r) for p, q, r in Input if (p + q)>= r]
 
# Printing output
print(Output)


Output:

[(4, 5, 6)]

Time Complexity: O(n), where n is the length of the list test_list 
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list 

  Method #2 : Using Iteration 

Python3




# Python code to find whether a sublist
# satisfies the triangle inequality.
 
# List initialization
Input = [[1, 1, 3], [4, 5, 6]]
 
# Sorting sublist of list of list
for elem in Input:
    elem.sort()
 
# Checking for triangular inequality
for elem in Input:
    if elem[0] + elem[1] > elem[2]:
        print(elem)


Output:

[4, 5, 6]

Method #3 : Using filter

Another approach you can use is to use the filter function to filter the sublists in the input list that satisfy the triangle inequality.

Here is an example of how you can do this:

Python3




# List initialization
Input = [[1, 1, 3], [4, 5, 6]]
 
# Check if the triangle inequality holds for each sublist
valid_sublists = filter(lambda x: x[0] + x[1] > x[2] and x[0] + x[2] > x[1] and x[1] + x[2] > x[0], Input)
 
print(list(valid_sublists))
#This code is contributed by Edula Vinay Kumar Reddy


Output

[[4, 5, 6]]

The time complexity of this approach is O(n), where n is the number of sublists in the input list, because the filter function iterates over each element in the input list and applies the filtering function to it. The space complexity is also O(n), because the valid_sublists list will have a size equal to the number of sublists that satisfy the triangle inequality.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads