Three summers ago def three_summers(items, goal): Given a sorted list of positive integer items, determine whether there exist precisely three separate items that together exactly add up to the given positive integer goal. Sure, you could solve this problem with three nested loops to go through all possible ways to choose three elements from items, checking for each triple whether it adds up to the goal. However, iterating through all triples of elements would get pretty slow as the length of the list increases, seeing that the number of such triples to pick through grows proportionally to the cube of the length of the list! Of course the automated tester will make those lists large enough to make such solutions reveal themselves by their glacial running time. Since items are known to be sorted, a better technique will 0ind the answer significantly faster. See the function two_summers in the example program listproblems.py to quickly find two elements in the given sorted list that together add up to the given goal. You can use this function as a subroutine to speed up your search for three summing elements, once you realize that the list contains three elements that add up to goal if and only if it contains some element x so that the remaining list contains some two elements that add up to goal-x. items goal Expected result [10, 11, 16, 18, 19] 40 True [10, 11, 16, 18, 19] 41 False [1, 2, 3] 6 True For the general subset sum problem that was used as an example of inherently exponential branching recursion in that lecture, the question of whether the given list of integers contains some subset of k elements that together add up to given goal can be determined by trying each element x in turn as the first element of this subset, and then recursively determining whether the remaining elements after x contain some subset of k - 1 elements that adds up to goal-x. Code that is already available on the site times out in my tester. Is there a faster approach? def three_summers(items, goal): for i in range(len(items)): for j in range(i+1, len(items)): for k in range(j+1, len(items)): if items[i] + items[j] + items[k] == goal: return True return False

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

 

Three summers ago

def three_summers(items, goal):
Given a sorted list of positive integer items, determine whether there exist precisely three separate items that together exactly add up to the given positive integer goal.

Sure, you could solve this problem with three nested loops to go through all possible ways to choose three elements from items, checking for each triple whether it adds up to the goal. However, iterating through all triples of elements would get pretty slow as the length of the list increases, seeing that the number of such triples to pick through grows proportionally to the cube of the length of the list! Of course the automated tester will make those lists large enough to make such solutions reveal themselves by their glacial running time.

Since items are known to be sorted, a better technique will 0ind the answer significantly faster. See the function two_summers in the example program listproblems.py to quickly find two elements in the given sorted list that together add up to the given goal. You can use this function as a subroutine to speed up your search for three summing elements, once you realize that the list contains three elements that add up to goal if and only if it contains some element x so that the remaining list contains some two elements that add up to goal-x.

items

goal

Expected result

[10, 11, 16, 18, 19]

40

True

[10, 11, 16, 18, 19]

41

False

[1, 2, 3]

6

True

For the general subset sum problem that was used as an example of inherently exponential branching recursion in that lecture, the question of whether the given list of integers contains some subset of k elements that together add up to given goal can be determined by trying each element x in turn as the first element of this subset, and then recursively determining whether the remaining elements after x contain some subset of k - 1 elements that adds up to goal-x.

 

Code that is already available on the site times out in my tester. Is there a faster approach?

def three_summers(items, goal):
for i in range(len(items)):
for j in range(i+1, len(items)):
for k in range(j+1, len(items)):
if items[i] + items[j] + items[k] == goal:
return True
return False
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 2 images

Blurred answer
Knowledge Booster
Lower bounds sorting algorithm
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education