- How many different ways to write the 100.
import time start = time.perf_counter() def con(H): J =  Q =  W =  for i in H: for j in range(len(i)-1): Cop = i[::] y = i[j]+i[j+1] del Cop[j:j+2] Cop.insert(j,y) J.append(Cop) for i in J: y =(sorted("".join(str(j) for j in i))) Q.append("".join(y)) T = list(set(Q)) for i in T: y = [int(j) for j in i] W.append(y) return W for num in range(1,100): K = [[1 for i in range(num)]] count = 0 for i in range(len(K)-2): K = con(K) count = count + len(K) print(num,count+1) end = time.perf_counter() print(end-start,"second")
[[1,1,1,1]]. Then it sums the consecutive numbers so our result becomes (from line 9-14)
[[2,1,1],[1,2,1],[1,1,2]] Since they are all same my code (from line 15-18) makes them just one function and returns ["112"] and then from 18-21 turns ["112"] to [[1,1,2]] and then I do this whole process again for the [[1,1,2]] and then I count the number of these arrays (from 25-29). The problem is its fast up to num = 20-30 but then it really slows down. Is there a way to increase the speed of my code or should I try a different algorithm?
For num = 5 the number should be 6
My code is correct bu just works slow.