2
\$\begingroup\$

You a sequence of numbers like this one given to you as a string:

"1 2 3 4 8 11 19 33 59 154 196 260"

Create a program (any language) that calculates the smallest outcome you can't get by adding two of those numbers together.

The numbers given must be integers, and are always positive.

You can only use each number once.

The answer must be > 0 and a whole number. The given string must contain at least a 1.

Examples of invalid outcomes:

"1 2 3 4 8 11 19 33 59 154 196 260"

  • 3 (1 + 2)
  • 54 (19 + 33 + 8 + 2)

Example of valid outcome:

"1 2 7 34 34 78"

  • 4 (1 + 2 = 3, can't get 4 by adding any numbers.)

The shortest answer wins, answers can be submitted until october 30th, 18:00 CET.

\$\endgroup\$
7
  • 1
    \$\begingroup\$ I think this would be much much better suited for code golf as there is not much in this task that asks for out-of-the-box solutions. If you change this to code golf, you should consider imposing restrictions to avoid solutions like return min(set(range(sum(Input)))-map(sum(Combinations,Input))). \$\endgroup\$
    – Wrzlprmft
    Oct 26, 2014 at 17:52
  • 2
    \$\begingroup\$ This is horribly vague... You need a more detailed spec. \$\endgroup\$
    – Beta Decay
    Oct 26, 2014 at 17:57
  • 2
    \$\begingroup\$ @KlaasSchoenmaker That's a contradiction with the spec, where you've written "You can only use each number once.". It's also inconsistent with your last example. \$\endgroup\$ Oct 26, 2014 at 18:13
  • 2
    \$\begingroup\$ Isn't the answer always 1? It's larger than 0 and can't be the sum of two (strictly) positive integers. \$\endgroup\$
    – Falko
    Oct 26, 2014 at 18:46
  • 1
    \$\begingroup\$ The second paragraph states "...can't get by adding any two of those numbers together", but subsequent examples clearly show 3+ numbers being summed together to obtain "invalid" outcomes. \$\endgroup\$
    – COTO
    Oct 26, 2014 at 18:47

1 Answer 1

2
\$\begingroup\$

Python - 104 99

My interpretation:

L=map(int,input().split())
k=1
while k in map(sum,[[i,j]for i in L for j in L if i<j]):k+=1
print k

I tested it with the input string 0 1 2 3 4 8 11 19 33 59 154 196 260 containing a 0 to avoid the trivial solution 0.

Result:

16
\$\endgroup\$
1
  • \$\begingroup\$ lol +1 for "my interpretation". Pretty much summarizes the whole thing, doesn't it. ;) \$\endgroup\$
    – COTO
    Oct 26, 2014 at 23:11

Not the answer you're looking for? Browse other questions tagged or ask your own question.