Here's the code:
ValuesDict = {}
PathwayTemplate = {}
GenerationDictionary = {0:[]}
StartNumbers = [2,3,5,7]
for Number in StartNumbers:
PathwayTemplate.update({Number:0})
for Number in StartNumbers:
ValuesDict.update({Number:[PathwayTemplate.copy()]})
ValuesDict[Number][0][Number] += 1
GenerationDictionary[0].append(Number)
Fin = 15
Gen = 0
while min(GenerationDictionary[Gen])<=Fin:
Gen += 1
GenerationDictionary.update({Gen:[]})
for Number in GenerationDictionary[Gen-1]:
for StartNumber in StartNumbers:
if (Number+StartNumber) in ValuesDict.keys():
pass
else:
ValuesDict.update({(Number+StartNumber):list(ValuesDict[Number])})
for subpath in ValuesDict[(Number+StartNumber)]:
subpath[StartNumber]+=1
GenerationDictionary[Gen].append((Number+StartNumber))
print((Number+StartNumber),ValuesDict[(Number+StartNumber)])
print()
And under first iteration it outputs:
4 [{2: 2, 3: 0, 5: 0, 7: 0}]
9 [{2: 2, 3: 0, 5: 0, 7: 1}]
6 [{2: 0, 3: 2, 5: 0, 7: 0}]
8 [{2: 0, 3: 2, 5: 1, 7: 0}]
10 [{2: 0, 3: 2, 5: 1, 7: 1}]
12 [{2: 0, 3: 0, 5: 1, 7: 1}]
14 [{2: 0, 3: 0, 5: 0, 7: 2}]
Where I expected it to give me one 2 and one 7 under 9.
It's meant to add numbers together and store number added as a result.
I tried reading about Python 3 saving memory and making a pointer type link when a=b
so when a
changes, so does b
, but it'd appear that they are linked here despite being re-cast as a
list. I've also tried checking if a is b
and it gave me false, however it clearly seems to auto-update my original ValuesDict[Number]
.