all(*iterable*)
Return True
if all elements of the iterable are true (or if the iterable is empty). Equivalent to:
def all(iterable):
for element in iterable:
if not element:
return False
return True
https://leetcode.com/problems/matchsticks-to-square/#/description
class Solution(object):
def makesquare(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
nums = sorted(nums, reverse=True)
sum_ = sum(nums)
if not nums or len(nums) < 4 or any(num > sum_ // 4 for num in nums):
return False
if sum_ % 4 != 0:
return False
return self.dfs(nums, [0]*4, sum_ // 4)
def dfs(self, nums, sides, target):
if not nums:
if all(side == target for side in sides): # all()
return True
else:
return False
for i in range(4):
if sides[i] + nums[0] > target:
continue
sides[i] += nums[0]
if self.dfs(nums[1:], sides, target):
return True
sides[i] -= nums[0]
return False