#JavaScript (ES6) 92
JavaScript (ES6) 92
As a recursive function based upon the problem definition
S=(n,v=1,s=[],r=0)=>[for(a of s)for(b of s)r+=(a-b&&a+b==v)]|r||(s.push(v),--n)?S(n,v+1,s):s
Using the pattern 1,2, 1+3*k : 58
S=(n)=>(i=>{for(t=1;n>r.push(t+=i);i+=(i<3));})(0,r=[])||r
Side note: finding the h-Stöhr sequence (verifying the sum of up to h
numbers instead of just 2). The R
function tries all possibile sums of up a given number of list elements.
S=(n,h=2,s=[],v=1,R=(t,v,l,i=0,r=t,w)=>{
for(;r&&l&&v[i];i++)
w=[...v],r=!R(t-w.splice(i,1),w,l-1)
return!r;
})=>R(v,s,h)||(s.push(v),--n)?S(n,h,s,v+1):s
Ungolfed roughly equivalent (and ES5 compatible)
function S(n, v, s)
{
var r=0,a,b
v = v||1
s = s||[]
for(a of s)
for(b of s)
{
if (a != b && a+b == v)
r++;
}
if (r == 0)
{
s.push(v);
--n;
}
if (n != 0)
return S(n,v+1,s)
else
return s
}
Test In FireFox/FireBug console. Simple function:
S(20)
[1, 2, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55]
Advanced function:
S(10,5)
[1, 2, 4, 8, 16, 32, 63, 94, 125, 156]