login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A329719
Numbers whose digits can be partitioned into at least 3 segments (not beginning with 0) where each segment is the sum of the previous two segments.
1
112, 123, 134, 145, 156, 167, 178, 189, 213, 224, 235, 246, 257, 268, 279, 314, 325, 336, 347, 358, 369, 415, 426, 437, 448, 459, 516, 527, 538, 549, 617, 628, 639, 718, 729, 819, 1123, 1235, 1347, 1459, 1910, 2134, 2246, 2358, 2810, 2911, 3145, 3257, 3369
OFFSET
1,1
EXAMPLE
112 -> 1+1=2;
1235 -> 1+2=3 and 2+3=5;
224610 -> 2+2=4 and 2+4=6 and 4+6=10.
MATHEMATICA
part[n_] := part[n] = Select[Flatten[ Permutations /@ Reverse /@ IntegerPartitions[n, {3, n}], 1], 0 <= #[[3]] - Max[#[[1]], #[[2]]] <= 1 && AllTrue[Rest@ Rest@ Differences@ #, 0 <= # <= 1 &] &]; spl[x_, L_] := Map[ FromDigits@ Take[x, #] &, Transpose[{Most@ #, Rest[#]-1}& [ FoldList[ Plus, 1, L]]]]; sumQ[w_] := AllTrue[Range[3, Length@w], w[[#]] == w[[#-1]] + w[[#-2]] &]; ok[n_] := Block[{m = IntegerLength@ n}, AnyTrue[ spl[ IntegerDigits[n], #] & /@ part[m], sumQ[#] && Total[ IntegerLength /@ #] == m &]]; Select[ Range[100, 6000], ok] (* Giovanni Resta, Dec 03 2019 *)
PROG
(Python)
def isSegmentSum(digits, segment1=None, segment2=None):
digits = str(digits)
N = len(digits)
if N == 0:
return True
else:
if (segment1 is None) and (segment2 is None):
for i in range(N):
try:
slice1 = digits[:i+1]
for j in range(N-(i+1)):
slice2 = digits[i+1:i+1+j+1]
slice3 = digits[i+1+j+1:]
if (isSegmentSum(slice3, slice1, slice2) and
len(slice3)>0 and not (slice1.startswith("0") or
slice2.startswith("0") or
(slice3.startswith("0")))):
return True
except:
return False
else:
sumOfDigits = str(int(segment1)+int(segment2))
nS = len(sumOfDigits)
try:
if digits[:nS] == sumOfDigits:
return isSegmentSum(digits[nS:], segment2, digits[:nS])
else:
return False
except:
return False
return False
def findSegmentSum(lower, upper):
for i in range(lower, upper+1):
if isSegmentSum(i):
print(str(i))
findSegmentSum(1, 5200)
CROSSREFS
Shares subsequences with A108203, A308104, A214527.
Cf. A019523.
Sequence in context: A036301 A117723 A359142 * A157662 A340125 A095615
KEYWORD
nonn,base
AUTHOR
Bi Cheng Wu, Nov 19 2019
STATUS
approved