Add see-it sequence generator
This commit is contained in:
parent
b42e71f0d9
commit
18307eebbe
1
math-problems/see-it-generator/.gitignore
vendored
Normal file
1
math-problems/see-it-generator/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
output.csv
|
18
math-problems/see-it-generator/README.md
Normal file
18
math-problems/see-it-generator/README.md
Normal file
@ -0,0 +1,18 @@
|
||||
# See-it Generator
|
||||
|
||||
The See it sequence is exactly as the name implies, what you see is the next entry in the sequence. For example,
|
||||
|
||||
$$
|
||||
1
|
||||
11
|
||||
21
|
||||
1211
|
||||
111221
|
||||
312211
|
||||
13112221
|
||||
1113213211
|
||||
$$
|
||||
|
||||
I learned about this sequence from [Genius at Play](https://www.amazon.com/Genius-At-Play-Curious-Horton/dp/1620405938).
|
||||
|
||||
This code just generates this sequence.
|
61
math-problems/see-it-generator/main.py
Normal file
61
math-problems/see-it-generator/main.py
Normal file
@ -0,0 +1,61 @@
|
||||
import pandas as pd
|
||||
import time
|
||||
|
||||
def main():
|
||||
"""
|
||||
Print out a sequence following the see-it sequence
|
||||
"""
|
||||
|
||||
upper_bound = 100
|
||||
seed = "1"
|
||||
file_location = "output.csv"
|
||||
|
||||
df = pd.DataFrame(columns=["Iteration", "Length", "Value"])
|
||||
|
||||
val = seed
|
||||
|
||||
for i in range(0,upper_bound):
|
||||
#print(f"Iteration : {i}")
|
||||
#print(f"Length : {len(val)}")
|
||||
#print(val)
|
||||
df.loc[len(df)] = [i, len(val), val]
|
||||
start_time = time.time()
|
||||
val = next_step(val)
|
||||
elasped_time = time.time() - start_time
|
||||
print(f"Iteration : {i} of {upper_bound} (took {elasped_time:.4f} seconds)")
|
||||
df.to_csv(file_location, index=False)
|
||||
print("Progress saved to file")
|
||||
print("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=")
|
||||
|
||||
print("Result logged to {file_location.csv}")
|
||||
|
||||
|
||||
def next_step(sequence: str) -> str:
|
||||
last_char = None
|
||||
last_char_count = 0
|
||||
|
||||
ret = ""
|
||||
|
||||
for char in sequence:
|
||||
if last_char == None:
|
||||
last_char = char
|
||||
last_char_count = 1
|
||||
elif char == last_char:
|
||||
last_char_count += 1
|
||||
else:
|
||||
ret += str(last_char_count)
|
||||
ret += str(last_char)
|
||||
last_char_count = 1
|
||||
last_char = char
|
||||
|
||||
if ret != None:
|
||||
ret += str(last_char_count)
|
||||
ret += str(last_char)
|
||||
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue
Block a user