matrix.py 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. def mprint(data,w=4,h=4):
  2. for i,v in enumerate(data):
  3. if i % w ==0:
  4. print()
  5. print(v,end=",")
  6. print()
  7. print("----")
  8. sleep = 0
  9. if __name__ == "__main__":
  10. sleep = 0.01321
  11. print("y--")
  12. class DIR():
  13. def __init__(self,w=4,h=4,w_min=0,h_min=0):
  14. self.d = 0
  15. self.w= w
  16. self.h= h
  17. self.x_max= w
  18. self.y_max= h
  19. self.x_min= w_min
  20. self.y_min= h_min
  21. self.x = 0 #//2
  22. self.y = 0 #//2
  23. self.i = 0
  24. self.i_max = self.x_max*self.y_max
  25. def get(self):
  26. if self.i >= self.i_max:
  27. return None # end
  28. out = self.x,self.y*self.w
  29. self.i += 1
  30. return out
  31. def right_reset(self):
  32. self.x = self.x_min
  33. def left_reset(self):
  34. self.x = self.x_max -1
  35. def down_reset(self):
  36. self.y = self.y_min
  37. def up_reset(self):
  38. self.y = self.y_max -1
  39. def right(self):
  40. if self.x < self.x_max-1:
  41. self.x+=1
  42. return 1
  43. def down(self):
  44. if self.y < self.y_max-1:
  45. self.y+=1
  46. return 1
  47. def up(self):
  48. if self.y > self.y_min:
  49. self.y-=1
  50. return 1
  51. def left(self):
  52. if self.x > self.x_min:
  53. self.x-=1
  54. return 1
  55. def x(self):
  56. return self.out
  57. data = [ "1A","1B" ,"1C","1D","2A","2B","2C","2D","3A","3B","3B","3D"]
  58. def right(w,h):
  59. out = ["----"] *(w*h) #*w*h
  60. d = DIR(w=w,h=h)
  61. r = d.get()
  62. i = 0
  63. import time
  64. while type(r) is not type(None):
  65. x,y = r
  66. #print("r",r,x,y, d.i)
  67. #out[x+y] = i
  68. out[x+y] = "{:-4}".format(i)
  69. if sleep:
  70. mprint(out,w,h)
  71. r=d.right()
  72. #print(r)
  73. if not r:
  74. d.right_reset()
  75. d.down()
  76. r = d.get()
  77. i += 1
  78. time.sleep(sleep)
  79. return out
  80. if __name__ == "__main__":
  81. w = 40
  82. h = 30
  83. #out = right(w,h)
  84. #mprint(out,w,h)
  85. def left(w,h):
  86. #mprint(data,w,h)
  87. out = ["----"] *(w*h) #a+2
  88. d = DIR(w=w,h=h)
  89. #d.up_reset()
  90. d.left_reset()
  91. r = d.get()
  92. i = 0
  93. import time
  94. while type(r) is not type(None):
  95. x,y = r
  96. #print("r",r,x,y, d.i)
  97. #out[x+y] = i
  98. out[x+y] = "{:-4}".format(i)
  99. #mprint(out,w,h)
  100. if sleep:
  101. mprint(out,w,h)
  102. r=d.left()
  103. #print(r)
  104. if not r:
  105. d.left_reset()
  106. #d.up()
  107. d.down()
  108. r = d.get()
  109. i += 1
  110. #time.sleep(.0151)
  111. time.sleep(sleep)
  112. return out
  113. if __name__ == "__main__":
  114. w = 40
  115. h = 30
  116. #out = left(w,h)
  117. #mprint(out,w,h)
  118. def up(w,h):
  119. #mprint(data,w,h)
  120. out = ["----"] *(w*h) #a+2
  121. d = DIR(w=w,h=h)
  122. #d.up_reset()
  123. d.up_reset()
  124. r = d.get()
  125. i = 0
  126. import time
  127. while type(r) is not type(None):
  128. x,y = r
  129. #print("r",r,x,y, d.i)
  130. #out[x+y] = i
  131. out[x+y] = "{:-4}".format(i)
  132. #mprint(out,w,h
  133. if sleep:
  134. mprint(out,w,h)
  135. r=d.up()
  136. #print(r)
  137. if not r:
  138. d.up_reset()
  139. #d.up()
  140. d.right()
  141. r = d.get()
  142. i += 1
  143. #time.sleep(.0151)
  144. time.sleep(sleep)
  145. return out
  146. if __name__ == "__main__":
  147. w = 40
  148. h = 30
  149. #out = up(w,h)
  150. #mprint(out,w,h)
  151. def down(w,h):
  152. #mprint(data,w,h)
  153. out = ["----"] *(w*h) #a+2
  154. d = DIR(w=w,h=h)
  155. #d.up_reset()
  156. d.down_reset()
  157. r = d.get()
  158. i = 0
  159. import time
  160. while type(r) is not type(None):
  161. x,y = r
  162. #print("r",r,x,y, d.i)
  163. #out[x+y] = i
  164. out[x+y] = "{:-4}".format(i)
  165. #mprint(out,w,h)
  166. if sleep:
  167. mprint(out,w,h)
  168. r=d.down()
  169. #print(r)
  170. if not r:
  171. d.down_reset()
  172. #d.up()
  173. d.right() #left()
  174. r = d.get()
  175. i += 1
  176. #time.sleep(.0151)
  177. time.sleep(sleep)
  178. return out
  179. if __name__ == "__main__":
  180. w = 40
  181. h = 30
  182. #out = down(w,h)
  183. #mprint(out,w,h)
  184. def spiral(w=10,h=4):
  185. mprint(data,w,h)
  186. out = ["----"] *(w*h) #*30 #*w*h+2
  187. d = DIR(w=w,h=h)
  188. d.up_reset()
  189. d.left_reset()
  190. r = d.get()
  191. i = 0
  192. import time
  193. q = 0
  194. while type(r) is not type(None):
  195. x,y = r
  196. #print("r",r,x,y, d.i)
  197. out[x+y] = "{:-4}".format(i)
  198. #mprint(out,w,h)
  199. if sleep:
  200. mprint(out,w,h)
  201. if q == 0:
  202. m=d.left()
  203. #print(m)
  204. if not m:
  205. q+=1
  206. d.x_min += 1
  207. if q == 1:
  208. m=d.up()
  209. if not m:
  210. q+=1
  211. d.y_min += 1
  212. if q == 2:
  213. m=d.right()
  214. if not m:
  215. q+=1
  216. d.y_max -= 1
  217. if q == 3:
  218. m=d.down()
  219. if not m:
  220. d.left()
  221. q=0
  222. d.x_max -= 1
  223. r = d.get()
  224. i += 1
  225. #time.sleep(.01)
  226. return out
  227. if __name__ == "__main__":
  228. w = 10
  229. h = 40
  230. #out = spiral(w,h)
  231. #mprint(out,w,h)
  232. def left_right(w=10,h=4):
  233. mprint(data,w,h)
  234. out = ["----"] *(w*h) #*30 #*w*h+2
  235. d = DIR(w=w,h=h)
  236. d.down_reset()
  237. d.left_reset()
  238. r = d.get()
  239. i = 0
  240. import time
  241. q = 0
  242. while type(r) is not type(None):
  243. x,y = r
  244. #print("r",r,x,y, d.i)
  245. out[x+y] = "{:-4}".format(i)
  246. if sleep:
  247. mprint(out,w,h)
  248. if q == 0:
  249. m=d.left()
  250. #print(m)
  251. if not m:
  252. q+=1
  253. d.down()
  254. elif q == 1:
  255. m=d.right()
  256. if not m:
  257. q=0
  258. d.down()
  259. r = d.get()
  260. i += 1
  261. time.sleep(sleep)
  262. return out
  263. if __name__ == "__main__":
  264. w = 10
  265. h = 40
  266. out = left_right(w,h)
  267. mprint(out,w,h)
  268. #def dubble_spiral():
  269. # pass
  270. #dubble_spiral()
  271. def up_down(w=10,h=4):
  272. mprint(data,w,h)
  273. out = ["----"] *(w*h) #*30 #*w*h+2
  274. d = DIR(w=w,h=h)
  275. d.up_reset()
  276. d.left_reset()
  277. r = d.get()
  278. i = 0
  279. import time
  280. q = 0
  281. while type(r) is not type(None):
  282. x,y = r
  283. #print("r",r,x,y, d.i)
  284. out[x+y] = "{:-4}".format(i)
  285. if sleep:
  286. mprint(out,w,h)
  287. if q == 0:
  288. m=d.up()
  289. #print(m)
  290. if not m:
  291. q+=1
  292. d.left()
  293. elif q == 1:
  294. m=d.down()
  295. if not m:
  296. q=0
  297. d.left()
  298. r = d.get()
  299. i += 1
  300. time.sleep(sleep)
  301. return out
  302. if __name__ == "__main__":
  303. w = 40
  304. h = 20
  305. out = up_down(w,h)
  306. mprint(out,w,h)