Aufgabe · Algorithmen mittel Python ·
Partition into equal sums
Return True if the list of positive integers can be split into two groups with equal sums (every number goes into exactly one group; a group may be empty). Up to 200 numbers, each at most 500.
Signatur
def can_partition(nums: list[int]) -> bool:Beispiele
can_partition([1, 5, 11, 5]) # -> True
can_partition([1, 2, 3, 5]) # -> FalseZusätzlich 7 versteckte Tests und 2 Performance-Tests mit großem Input unter Zeitlimit; deren Inputs werden nicht angezeigt. Die Aufgaben werden den Modellen auf Englisch gestellt.
Platz 1MoonshotAI Kimi K2.7 Codegelöst · 11 von 11 TestsAntwort in 2.5 s · Laufzeit 7 ms · $0.0013 ✓ can_partition([1, 5, 11, 5])erwartet True <1 ms ✓ can_partition([1, 2, 3, 5])erwartet False <1 ms ✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 possible = 1 for num in nums: possible |= possible << num if possible >> target & 1: return True return (possible >> target) & 1 == 1Platz 1Anthropic Claude Haiku 5.5gelöst · 11 von 11 TestsAntwort in 1.1 s · Laufzeit 16 ms · $0.0001 ✓ can_partition([1, 5, 11, 5])erwartet True <1 ms ✓ can_partition([1, 2, 3, 5])erwartet False 9 ms ✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total % 2: return False target = total // 2 if target == 0: return True mask = 1 for x in nums: mask |= mask << x if (mask >> target) & 1: return True return bool((mask >> target) & 1)Platz 1Qwen3 Coder Nextgelöst · 11 von 11 TestsAntwort in 2.3 s · Laufzeit 19 ms · $0.0002 ✓ can_partition([1, 5, 11, 5])erwartet True 1 ms ✓ can_partition([1, 2, 3, 5])erwartet False <1 ms ✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms✓ 2 ms✓ <1 ms✓ 6 ms⏱ 1 ms⏱ 3 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) # If total sum is odd, impossible to split into two equal parts if total % 2 != 0: return False target = total // 2 # dp[i] represents whether sum i is achievable dp = [False] * (target + 1) dp[0] = True # Sum 0 is always achievable (empty subset) for num in nums: # Traverse from right to left to avoid using the same number twice for i in range(target, num - 1, -1): if dp[i - num]: dp[i] = True return dp[target]Platz 4SpaceXAI Grok 4.7nicht gelöst · 10 von 11 TestsAntwort in 27 s · Laufzeit 7 ms · $0.01 ✓ can_partition([1, 5, 11, 5])erwartet True 1 ms ✓ can_partition([1, 2, 3, 5])erwartet False <1 ms ✗ Falsche Antwort✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 reachable = 1 mask = (1 << (target + 1)) - 1 for x in nums: reachable |= (reachable << x) & mask if reachable & (1 << target): return True return FalseZweiter Versuch
gelöst · 11 von 11 TestsAntwort in 110 s · $0.04Das Modell sah, wie viele Tests fehlschlugen, die fehlerhaften Beispiele samt erwarteten und gelieferten Werten sowie den Grund für das Scheitern versteckter Tests, nicht aber deren Eingaben. Zählt nicht für Platzierungen oder das Rating.
✓ can_partition([1, 5, 11, 5])erwartet True <1 ms ✓ can_partition([1, 2, 3, 5])erwartet False <1 ms ✓ <1 ms✓ 2 ms✓ <1 ms✓ 1 ms✓ <1 ms✓ <1 ms✓ <1 ms⏱ <1 ms⏱ <1 msCode
def can_partition(nums: list[int]) -> bool: total = sum(nums) if total & 1: return False target = total >> 1 reachable = 1 if (reachable >> target) & 1: return True mask = (1 << (target + 1)) - 1 for x in nums: reachable |= (reachable << x) & mask if (reachable >> target) & 1: return True return False
Token-Kosten: $0.06 · So laufen Runden und Wertung ab →