Automatic commit performed through alias...

This commit is contained in:
Shaun Setlock
2020-08-02 21:06:44 -04:00
parent b7bfa36d06
commit d543702af9
8 changed files with 611 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
# # Problem 9:
#
# [Euler Project #9](https://projecteuler.net/problem=9)
#
#
#
# >A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
# a2 + b2 = c2
#
# >For example, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.
#
# >There exists exactly one Pythagorean triplet for which a + b + c = 1000.
# Find the product abc.
#
#
#
# ---
import os
import pprint
import time # Typically imported for sleep function, to slow down execution in terminal.
import typing
import decorators # Typically imported to compute execution duration of functions.
import math
import numpy
def get_c(a,b):
c = math.sqrt(a*a+b*b)
return c
def check_constraint(a,b,c,limit):
return (a+b+c)==limit
exit=False
for a in range(1,1000):
for b in range(a,1000):
c = get_c(a,b)
if check_constraint(a,b,c,1000):
#print(a,b,c)
#print(not_done)
exit=True
break
if exit:
break
print(a,b,c,a+b+c,a*b*c)

View File

@@ -0,0 +1,237 @@
# # Problem 11:
#
# [Euler Project #11](https://projecteuler.net/problem=11)
#
#
# > In the 20×20 grid below, four numbers along a diagonal line have been marked in red.
# >
# > 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 <br>
# > 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 <br>
# > 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 <br>
# > 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 <br>
# > 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 <br>
# > 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 <br>
# > 32 98 81 28 64 23 67 10 **26** 38 40 67 59 54 70 66 18 38 64 70 <br>
# > 67 26 20 68 02 62 12 20 95 **63** 94 39 63 08 40 91 66 49 94 21 <br>
# > 24 55 58 05 66 73 99 26 97 17 **78** 78 96 83 14 88 34 89 63 72 <br>
# > 21 36 23 09 75 00 76 44 20 45 35 **14** 00 61 33 97 34 31 33 95 <br>
# > 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 <br>
# > 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 <br>
# > 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 <br>
# > 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 <br>
# > 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 <br>
# > 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 <br>
# > 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 <br>
# > 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 <br>
# > 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 <br>
# > 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 <br>
# >
# > The product of these numbers is 26 × 63 × 78 × 14 = 1788696.
# >
# > What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
#
#
# ---
import os
import pprint
import time # Typically imported for sleep function, to slow down execution in terminal.
import typing
import decorators # Typically imported to compute execution duration of functions.
import math
import numpy
def check_horizontal(table,solution):
'''
Args:
table: list of lists representing the input table
solution: a dictionary storing the product, and three tuples of cell coordinates
'''
# Let's scan the horizontals first.
# Acceptable cells would have a root position (on the LHS) which may reside anywhere in the table,
# except for the last three columns.
# create a list of tuples to store cell coordinates while generating the products
cells=[(0,0),(0,0),(0,0),(0,0)]
# loop over row dimension
for row in range(len(table)):
# loop over column dimension
for column in range(len(table[row])-4):
# calculate product
product = 1
for i in range(4):
product *= table[row][column+i]
cells[i]=(row,column+i)
#print("product=",product)
if product>solution['product']:
solution['product']=product
solution['cella']=cells[0]
solution['cellb']=cells[1]
solution['cellc']=cells[2]
solution['celld']=cells[3]
return solution
def check_vertical(table,solution):
'''
Args:
table: list of lists representing the input table
solution: a dictionary storing the product, and three tuples of cell coordinates
'''
# Let's scan the verticals next.
# Acceptable cells would have a root position (at the top of column) which may reside anywhere in the table,
# except for the last three rows.
# create a list of tuples to store cell coordinates while generating the products
cells=[(0,0),(0,0),(0,0),(0,0)]
# loop over row dimension
count = 0
for row in range(len(table)-4):
# loop over column dimension
for column in range(len(table[row])):
# convert data type from string to int
product = 1
for i in range(4):
product *= table[row+i][column]
cells[i]=(row,column+i)
#print("product=",product)
count+=1
#print("count=",count)
if product>solution['product']:
solution['product']=product
solution['cella']=cells[0]
solution['cellb']=cells[1]
solution['cellc']=cells[2]
solution['celld']=cells[3]
return solution
def check_upwards_diagonals(table,solution):
'''
Args:
table: list of lists representing the input table
solution: a dictionary storing the product, and three tuples of cell coordinates
'''
# Let's scan the upward (left to right) diagonals next.
# Acceptable cells would have a root position (at the bottom-left of the diagonal) which may reside anywhere in the table,
# except for the first three rows, and the last three columns.
# create a list of tuples to store cell coordinates while generating the products
cells=[(0,0),(0,0),(0,0),(0,0)]
# loop over row dimension
count = 0
for row in range(len(table)-3):
# loop over column dimension
#print("row=",row)
for column in range(len(table[row])-3):
# convert data type from string to int
product = 1
for i in range(4):
product *= table[row+3-i][column+i]
cells[i]=(row+3-i,column+i)
#print("cell=[",row+3-i,"][",column+i,"]")
#print("product=",product)
count += 1
if product>solution['product']:
solution['product']=product
solution['cella']=cells[0]
solution['cellb']=cells[1]
solution['cellc']=cells[2]
solution['celld']=cells[3]
return solution
def check_downwards_diagonals(table,solution):
'''
Args:
table: list of lists representing the input table
solution: a dictionary storing the product, and three tuples of cell coordinates
'''
# Let's scan the downward (left to right) diagonals next.
# Acceptable cells would have a root position (at the top-left of the diagonal) which may reside anywhere in the table,
# except for the last three rows, and the last three columns.
# create a list of tuples to store cell coordinates while generating the products
cells=[(0,0),(0,0),(0,0),(0,0)]
# loop over row dimension
count = 0
for row in range(len(table)-3):
# loop over column dimension
#print("row=",row)
for column in range(len(table[row])-3):
# convert data type from string to int
product = 1
for i in range(4):
product *= table[row+i][column+i]
cells[i]=(row+i,column+i)
#print("cell=[",row+i,"][",column+i,"]")
#print("product=",product)
count += 1
#print("count=",count)
if product>solution['product']:
solution['product']=product
solution['cella']=cells[0]
solution['cellb']=cells[1]
solution['cellc']=cells[2]
solution['celld']=cells[3]
return solution
table = [ ['08', '02', '22', '97', '38', '15', '00', '40', '00', '75', '04', '05', '07', '78', '52', '12', '50', '77', '91', '08'],
['49', '49', '99', '40', '17', '81', '18', '57', '60', '87', '17', '40', '98', '43', '69', '48', '04', '56', '62', '00'],
['81', '49', '31', '73', '55', '79', '14', '29', '93', '71', '40', '67', '53', '88', '30', '03', '49', '13', '36', '65'],
['52', '70', '95', '23', '04', '60', '11', '42', '69', '24', '68', '56', '01', '32', '56', '71', '37', '02', '36', '91'],
['22', '31', '16', '71', '51', '67', '63', '89', '41', '92', '36', '54', '22', '40', '40', '28', '66', '33', '13', '80'],
['24', '47', '32', '60', '99', '03', '45', '02', '44', '75', '33', '53', '78', '36', '84', '20', '35', '17', '12', '50'],
['32', '98', '81', '28', '64', '23', '67', '10', '26', '38', '40', '67', '59', '54', '70', '66', '18', '38', '64', '70'],
['67', '26', '20', '68', '02', '62', '12', '20', '95', '63', '94', '39', '63', '08', '40', '91', '66', '49', '94', '21'],
['24', '55', '58', '05', '66', '73', '99', '26', '97', '17', '78', '78', '96', '83', '14', '88', '34', '89', '63', '72'],
['21', '36', '23', '09', '75', '00', '76', '44', '20', '45', '35', '14', '00', '61', '33', '97', '34', '31', '33', '95'],
['78', '17', '53', '28', '22', '75', '31', '67', '15', '94', '03', '80', '04', '62', '16', '14', '09', '53', '56', '92'],
['16', '39', '05', '42', '96', '35', '31', '47', '55', '58', '88', '24', '00', '17', '54', '24', '36', '29', '85', '57'],
['86', '56', '00', '48', '35', '71', '89', '07', '05', '44', '44', '37', '44', '60', '21', '58', '51', '54', '17', '58'],
['19', '80', '81', '68', '05', '94', '47', '69', '28', '73', '92', '13', '86', '52', '17', '77', '04', '89', '55', '40'],
['04', '52', '08', '83', '97', '35', '99', '16', '07', '97', '57', '32', '16', '26', '26', '79', '33', '27', '98', '66'],
['88', '36', '68', '87', '57', '62', '20', '72', '03', '46', '33', '67', '46', '55', '12', '32', '63', '93', '53', '69'],
['04', '42', '16', '73', '38', '25', '39', '11', '24', '94', '72', '18', '08', '46', '29', '32', '40', '62', '76', '36'],
['20', '69', '36', '41', '72', '30', '23', '88', '34', '62', '99', '69', '82', '67', '59', '85', '74', '04', '36', '16'],
['20', '73', '35', '29', '78', '31', '90', '01', '74', '31', '49', '71', '48', '86', '81', '16', '23', '57', '05', '54'],
['01', '70', '54', '71', '83', '51', '54', '69', '16', '92', '33', '48', '61', '43', '52', '01', '89', '19', '67', '48']
]
# Firstly, this data input creates a list-of-lists which have cells of the ```string``` data type.
# loop over row dimension
for row in range(len(table)):
# loop over column dimension
for column in range(len(table[row])):
# convert data type from string to int
table[row][column] = int(table[row][column])
# create a dictionary that stores information about the solution
solution = {
'product':1,
'cella':(0,0),
'cellb':(0,0),
'cellc':(0,0),
'celld':(0,0)
}
# We know brute force will work...
# Can we can scan through this list-of-lists, following the accepted pattern, and store the largest product?
solution = check_horizontal(table,solution)
print(solution)
solution = check_vertical(table,solution)
print(solution)
solution = check_upwards_diagonals(table,solution)
print(solution)
solution = check_downwards_diagonals(table,solution)
print('Final Answer!')
print(solution)

View File

@@ -0,0 +1,280 @@
# # Problem 13:
#
# [Euler Project #13](https://projecteuler.net/problem=13)
#
#
# > Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.
#
# > 37107287533902102798797998220837590246510135740250
# > 46376937677490009712648124896970078050417018260538
# > 74324986199524741059474233309513058123726617309629
# > 91942213363574161572522430563301811072406154908250
# > 23067588207539346171171980310421047513778063246676
# > 89261670696623633820136378418383684178734361726757
# > 28112879812849979408065481931592621691275889832738
# > 44274228917432520321923589422876796487670272189318
# > 47451445736001306439091167216856844588711603153276
# > 70386486105843025439939619828917593665686757934951
# > 62176457141856560629502157223196586755079324193331
# > 64906352462741904929101432445813822663347944758178
# > 92575867718337217661963751590579239728245598838407
# > 58203565325359399008402633568948830189458628227828
# > 80181199384826282014278194139940567587151170094390
# > 35398664372827112653829987240784473053190104293586
# > 86515506006295864861532075273371959191420517255829
# > 71693888707715466499115593487603532921714970056938
# > 54370070576826684624621495650076471787294438377604
# > 53282654108756828443191190634694037855217779295145
# > 36123272525000296071075082563815656710885258350721
# > 45876576172410976447339110607218265236877223636045
# > 17423706905851860660448207621209813287860733969412
# > 81142660418086830619328460811191061556940512689692
# > 51934325451728388641918047049293215058642563049483
# > 62467221648435076201727918039944693004732956340691
# > 15732444386908125794514089057706229429197107928209
# > 55037687525678773091862540744969844508330393682126
# > 18336384825330154686196124348767681297534375946515
# > 80386287592878490201521685554828717201219257766954
# > 78182833757993103614740356856449095527097864797581
# > 16726320100436897842553539920931837441497806860984
# > 48403098129077791799088218795327364475675590848030
# > 87086987551392711854517078544161852424320693150332
# > 59959406895756536782107074926966537676326235447210
# > 69793950679652694742597709739166693763042633987085
# > 41052684708299085211399427365734116182760315001271
# > 65378607361501080857009149939512557028198746004375
# > 35829035317434717326932123578154982629742552737307
# > 94953759765105305946966067683156574377167401875275
# > 88902802571733229619176668713819931811048770190271
# > 25267680276078003013678680992525463401061632866526
# > 36270218540497705585629946580636237993140746255962
# > 24074486908231174977792365466257246923322810917141
# > 91430288197103288597806669760892938638285025333403
# > 34413065578016127815921815005561868836468420090470
# > 23053081172816430487623791969842487255036638784583
# > 11487696932154902810424020138335124462181441773470
# > 63783299490636259666498587618221225225512486764533
# > 67720186971698544312419572409913959008952310058822
# > 95548255300263520781532296796249481641953868218774
# > 76085327132285723110424803456124867697064507995236
# > 37774242535411291684276865538926205024910326572967
# > 23701913275725675285653248258265463092207058596522
# > 29798860272258331913126375147341994889534765745501
# > 18495701454879288984856827726077713721403798879715
# > 38298203783031473527721580348144513491373226651381
# > 34829543829199918180278916522431027392251122869539
# > 40957953066405232632538044100059654939159879593635
# > 29746152185502371307642255121183693803580388584903
# > 41698116222072977186158236678424689157993532961922
# > 62467957194401269043877107275048102390895523597457
# > 23189706772547915061505504953922979530901129967519
# > 86188088225875314529584099251203829009407770775672
# > 11306739708304724483816533873502340845647058077308
# > 82959174767140363198008187129011875491310547126581
# > 97623331044818386269515456334926366572897563400500
# > 42846280183517070527831839425882145521227251250327
# > 55121603546981200581762165212827652751691296897789
# > 32238195734329339946437501907836945765883352399886
# > 75506164965184775180738168837861091527357929701337
# > 62177842752192623401942399639168044983993173312731
# > 32924185707147349566916674687634660915035914677504
# > 99518671430235219628894890102423325116913619626622
# > 73267460800591547471830798392868535206946944540724
# > 76841822524674417161514036427982273348055556214818
# > 97142617910342598647204516893989422179826088076852
# > 87783646182799346313767754307809363333018982642090
# > 10848802521674670883215120185883543223812876952786
# > 71329612474782464538636993009049310363619763878039
# > 62184073572399794223406235393808339651327408011116
# > 66627891981488087797941876876144230030984490851411
# > 60661826293682836764744779239180335110989069790714
# > 85786944089552990653640447425576083659976645795096
# > 66024396409905389607120198219976047599490197230297
# > 64913982680032973156037120041377903785566085089252
# > 16730939319872750275468906903707539413042652315011
# > 94809377245048795150954100921645863754710598436791
# > 78639167021187492431995700641917969777599028300699
# > 15368713711936614952811305876380278410754449733078
# > 40789923115535562561142322423255033685442488917353
# > 44889911501440648020369068063960672322193204149535
# > 41503128880339536053299340368006977710650566631954
# > 81234880673210146739058568557934581403627822703280
# > 82616570773948327592232845941706525094512325230608
# > 22918802058777319719839450180888072429661980811197
# > 77158542502016545090413245809786882778948721859617
# > 72107838435069186155435662884062257473692284509516
# > 20849603980134001723930671666823555245252804609722
# > 53503534226472524250874054075591789781264330331690
#
#
# ---
import os
import pprint
import time # Typically imported for sleep function, to slow down execution in terminal.
import typing
import decorators # Typically imported to compute execution duration of functions.
import math
import numpy
# ### Import the data table above. Let's be lazy and use the nice multi-cursor feature of the code editor.
numbers = [ '37107287533902102798797998220837590246510135740250',
'46376937677490009712648124896970078050417018260538',
'74324986199524741059474233309513058123726617309629',
'91942213363574161572522430563301811072406154908250',
'23067588207539346171171980310421047513778063246676',
'89261670696623633820136378418383684178734361726757',
'28112879812849979408065481931592621691275889832738',
'44274228917432520321923589422876796487670272189318',
'47451445736001306439091167216856844588711603153276',
'70386486105843025439939619828917593665686757934951',
'62176457141856560629502157223196586755079324193331',
'64906352462741904929101432445813822663347944758178',
'92575867718337217661963751590579239728245598838407',
'58203565325359399008402633568948830189458628227828',
'80181199384826282014278194139940567587151170094390',
'35398664372827112653829987240784473053190104293586',
'86515506006295864861532075273371959191420517255829',
'71693888707715466499115593487603532921714970056938',
'54370070576826684624621495650076471787294438377604',
'53282654108756828443191190634694037855217779295145',
'36123272525000296071075082563815656710885258350721',
'45876576172410976447339110607218265236877223636045',
'17423706905851860660448207621209813287860733969412',
'81142660418086830619328460811191061556940512689692',
'51934325451728388641918047049293215058642563049483',
'62467221648435076201727918039944693004732956340691',
'15732444386908125794514089057706229429197107928209',
'55037687525678773091862540744969844508330393682126',
'18336384825330154686196124348767681297534375946515',
'80386287592878490201521685554828717201219257766954',
'78182833757993103614740356856449095527097864797581',
'16726320100436897842553539920931837441497806860984',
'48403098129077791799088218795327364475675590848030',
'87086987551392711854517078544161852424320693150332',
'59959406895756536782107074926966537676326235447210',
'69793950679652694742597709739166693763042633987085',
'41052684708299085211399427365734116182760315001271',
'65378607361501080857009149939512557028198746004375',
'35829035317434717326932123578154982629742552737307',
'94953759765105305946966067683156574377167401875275',
'88902802571733229619176668713819931811048770190271',
'25267680276078003013678680992525463401061632866526',
'36270218540497705585629946580636237993140746255962',
'24074486908231174977792365466257246923322810917141',
'91430288197103288597806669760892938638285025333403',
'34413065578016127815921815005561868836468420090470',
'23053081172816430487623791969842487255036638784583',
'11487696932154902810424020138335124462181441773470',
'63783299490636259666498587618221225225512486764533',
'67720186971698544312419572409913959008952310058822',
'95548255300263520781532296796249481641953868218774',
'76085327132285723110424803456124867697064507995236',
'37774242535411291684276865538926205024910326572967',
'23701913275725675285653248258265463092207058596522',
'29798860272258331913126375147341994889534765745501',
'18495701454879288984856827726077713721403798879715',
'38298203783031473527721580348144513491373226651381',
'34829543829199918180278916522431027392251122869539',
'40957953066405232632538044100059654939159879593635',
'29746152185502371307642255121183693803580388584903',
'41698116222072977186158236678424689157993532961922',
'62467957194401269043877107275048102390895523597457',
'23189706772547915061505504953922979530901129967519',
'86188088225875314529584099251203829009407770775672',
'11306739708304724483816533873502340845647058077308',
'82959174767140363198008187129011875491310547126581',
'97623331044818386269515456334926366572897563400500',
'42846280183517070527831839425882145521227251250327',
'55121603546981200581762165212827652751691296897789',
'32238195734329339946437501907836945765883352399886',
'75506164965184775180738168837861091527357929701337',
'62177842752192623401942399639168044983993173312731',
'32924185707147349566916674687634660915035914677504',
'99518671430235219628894890102423325116913619626622',
'73267460800591547471830798392868535206946944540724',
'76841822524674417161514036427982273348055556214818',
'97142617910342598647204516893989422179826088076852',
'87783646182799346313767754307809363333018982642090',
'10848802521674670883215120185883543223812876952786',
'71329612474782464538636993009049310363619763878039',
'62184073572399794223406235393808339651327408011116',
'66627891981488087797941876876144230030984490851411',
'60661826293682836764744779239180335110989069790714',
'85786944089552990653640447425576083659976645795096',
'66024396409905389607120198219976047599490197230297',
'64913982680032973156037120041377903785566085089252',
'16730939319872750275468906903707539413042652315011',
'94809377245048795150954100921645863754710598436791',
'78639167021187492431995700641917969777599028300699',
'15368713711936614952811305876380278410754449733078',
'40789923115535562561142322423255033685442488917353',
'44889911501440648020369068063960672322193204149535',
'41503128880339536053299340368006977710650566631954',
'81234880673210146739058568557934581403627822703280',
'82616570773948327592232845941706525094512325230608',
'22918802058777319719839450180888072429661980811197',
'77158542502016545090413245809786882778948721859617',
'72107838435069186155435662884062257473692284509516',
'20849603980134001723930671666823555245252804609722',
'53503534226472524250874054075591789781264330331690'
]
# Data Prep
# - Firstly, this data input creates a list which have cells of the ```string``` data type.
# - The strings should be parsed into type ```int``` at some point.
#
# ### Solution Approach
# Can we just employ old-school arithmetic by summing the integers by columns, right to left, <br>
# carrying over anything greater than *9* to the next column?
# loop over all 50 numbers in the input to convert the string
# into a list of characters, still as tpye: string
for row in range(len(numbers)):
numbers[row] = list(numbers[row])
# loop across the newly formed list to convert the string
# character into an integer
for digit in range(len(numbers[row])):
numbers[row][digit] = int(numbers[row][digit])
# time to employ the "old math" by running down the columns
# and summing... Dont forget to carry-over!
# Let's store the sums into a list...
solution_digits=[]
column_carryover = 0
print(len(numbers))
print(len(numbers[0]))
for places in range(len(numbers[0])):
# initialize the column sum
places = len(numbers[0])-places-1
#print(places)
column_sum = 0
for term in range(len(numbers)):
#print("row=",term,", column=",places)
column_sum+=numbers[term][places]
column_sum+=column_carryover
print(column_sum)
column_carryover=0
column_sum_element = int(list(str(column_sum))[-1])
solution_digits.append(column_sum_element)
column_sum *= 0.1
column_carryover = column_sum.__trunc__()
solution_digits.append(column_carryover)
print(solution_digits)
solution_digits.reverse()
string=""
for i in solution_digits[:10]:
string+=str(i)
print("The solution is ",string)

View File

@@ -0,0 +1,50 @@
# # Problem 14:
#
# [Euler Project #14](https://projecteuler.net/problem=14)
#
#
#
# > The following iterative sequence is defined for the set of positive integers:
# >
# > n → n/2 (n is even)
# > n → 3n + 1 (n is odd)
# >
# > Using the rule above and starting with 13, we generate the following sequence:
# > 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
# >
# > It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.
# >
# > Which starting number, under one million, produces the longest chain?
# >
# > NOTE: Once the chain starts the terms are allowed to go above one million.
#
#
# ---
import os
def collatz_length(n: int):
count=0
while n != 1:
if n%2 == 0:
n=int(n/2)
count+=1
else:
n=int(3*n+1)
count+=1
return int(count+1)
# I can't think of a way to simplify the problem, so brute force then???
# initialize a dictionary for storage
solution_dict = {
'candidate': 1,
'length': 1
}
for i in range(1000000):
length=collatz_length(i+1)
if length > solution_dict['length']:
solution_dict['candidate']=i
solution_dict['length']=length
print("The longest sequence was ",solution_dict['length']," members long, with a starting number of ",solution_dict['candidate'])