- #1

- 2,168

- 193

- TL;DR Summary
- How many different ways to write the 100.

Python:

```
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[0])-2):
K = con(K)
count = count + len(K)
print(num,count+1)
end = time.perf_counter()
print(end-start,"second")
```

Here what this code does, For example, let us say num = 4. Then it creates an array of

[[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?

Thanks.

For num = 5 the number should be 6

(1,1,1,1,1)

(2,1,1,1)

(2,2,1)

(3,2)

(3,1,1)

(4,1)

My code is correct bu just works slow.

Last edited: