#!/usr/bin/env python # coding: utf-8 # In[109]: get_ipython().run_line_magic('matplotlib', 'inline') import numpy as np import matplotlib.pyplot as plt from random import shufflem=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[112]: base = [[1,0], [0,1], [-1,0], [0,-1]] # In[113]: w = [[0,0]] # In[114]: def walk(): L = base.copy() shuffle(L) work = True while work: d = L.pop() new_step = [w[-1][0] + d[0], w[-1][1] + d[1]] if new_step not in w: w.append(new_step) work = False # In[115]: for i in range(1000): walk() # In[116]: i # In[118]: walk_arr = np.array(w) # In[119]: plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[86]: d # In[87]: new_step = [w[-1][0] + d[0], w[-1][1] + d[1]] # In[89]: [0,0] in w # In[81]: w # In[122]: def new_walk(n): base = [[1,0], [0,1], [-1,0], [0,-1]] w = [[0,0]] for i in range(n): walk() # In[125]: i # In[128]: walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[130]: new_walk(n=1000) # In[131]: walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[127]: plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[132]: L = base.copy() shuffle(L) # In[133]: L # In[134]: L = base.copy() shuffle(L) # In[135]: L # In[196]: def saw(n=1000): base = [[1,0], [0,1], [-1,0], [0,-1]] w = [[0,0]] L = [] for i in range(n): L_new = base.copy() shuffle(L_new) L.append(L_new) for i in range(n): thewalk = L[i] work = True do_break = False while work: d = thewalk.pop() new_step = [w[-1][0] + d[0], w[-1][1] + d[1]] if new_step not in w: w.append(new_step) work = False if thewalk == []: work = False do_break = True if do_break: break return w # In[153]: w = saw(100) # In[154]: # In[155]: walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[169]: w = saw(100) # In[170]: walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[171]: w = saw(100) walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[185]: w = saw(100) walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[203]: w = saw(1000) walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[213]: w = saw(1000) walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[214]: w = saw(1000) walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[215]: w = saw(1000) walk_arr = np.array(w) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[220]: for k in range(1000): m = 0 theone = saw(1000) if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[231]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[235]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) # In[237]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[244]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[246]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[250]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[254]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[255]: m=0 for k in range(10000): theone = saw(1000) # print(len(theone), end=' ') if m < len(theone): w_max = theone m = len(theone) walk_arr = np.array(w_max) plt.plot(walk_arr[:,0], walk_arr[:,1]) print(m) # In[ ]: