Advertisement
Guest User

diagonal maze

a guest
Jul 31st, 2015
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.81 KB | None | 0 0
  1. #!/usr/env python2
  2. slant={
  3.     ' ':' ',
  4.     '+':'x',
  5.     '|':'/',
  6.     '-':'\\'
  7.     }
  8.  
  9.  
  10. def slantc(character):
  11.     return slant[character]
  12.  
  13. class maze:
  14.     def __init__(self,strin):
  15.         self.string=strin
  16.         self.makegrid(strin)
  17.  
  18.     def makegrid(self,strin):
  19.         from pprint import pprint
  20.         lines = strin.splitlines()
  21.         yl = int(lines[0])
  22.         lines = lines[1:yl+1]
  23.         xl=len(lines)
  24.         grid=[]
  25.         for _ in range(yl*2-1): grid.append([' ']*(xl))
  26.         l=0
  27.         o=[]
  28.         lastlines=[]
  29.         for l in range(len(lines)):
  30.             first = lines[l][0:l+1]
  31.             lastlines.append(lines[l][l+1:xl]) #xl to cut any extra off
  32.             z=xl-l-1
  33.             f=len(first)
  34.             for c in range(len(first)):
  35.                 n=first[c]
  36.                 grid[l+c][z+c]=n
  37.         lastlines.reverse()
  38.         startl=len(grid)
  39.         derp=True
  40.         for row in range(len(grid)): #sorry... #it_works on sizes of 1,2,4
  41.             derp=not derp
  42.             if derp:
  43.                 grid[row].pop()
  44.         for l in range(len(lastlines)):
  45.             line=[a for a in lastlines[l]]
  46.             line.reverse()
  47.             for c in range(len(line)):
  48.                 z=-l-1-c
  49.                 grid[z].append(' ')
  50.                 n=line[c]
  51.                 grid[z].append(n)
  52.         self.grid=grid
  53.    
  54.     def __str__(self,removeplus=False):
  55.         r=''
  56.         first=True
  57.         for row in self.grid:
  58.             l=[slantc(a) for a in row]
  59.             s=''.join(l)
  60.             if not first: s='\r\n'+s
  61.             first=False
  62.             r=r+s
  63.         return r
  64.  
  65. if __name__=="__main__":
  66.     mazestr_hash="""11
  67. #0123456789a
  68. ###########b
  69. ###########c
  70. ###########d
  71. ###########e
  72. ###########f
  73. ###########g
  74. ###########h
  75. ###########i
  76. ###########j
  77. ###########k"""
  78.     mazestr1="""11
  79. +-+-+-+-+-+
  80.  |       |
  81. + +-+-+ + +
  82. | |     | |
  83. + + + + + +
  84. |   | |   |
  85. +-+-+ +-+-+
  86. |     |   |
  87. + + +-+ + +
  88. | |     | |
  89. +-+-+-+-+-+"""
  90.     mazestr2="""16
  91. +--+  +--+--+--+
  92.      |     |  |
  93.      |     |  |
  94. +  +--+  +  +  +
  95.      |  |  |  |
  96.      |  |  |  |
  97. +--+  +  +  +  +
  98. |     |  |     |
  99. |     |  |     |
  100. +  +--+  +  +--+
  101. |        |     |
  102. |        |     |
  103. +--+--+--+--+  +
  104. |              
  105. |              
  106. +--+--+--+--+--+"""
  107.     mazestr3="""17
  108. +---+---+---+---+---+---+
  109.                        |
  110.                        |
  111.                        |
  112. +---+---+---+---+---+   +
  113.                        |
  114.                        |
  115.                        |
  116. +---+---+---+---+---+---+
  117. |                        
  118. |                        
  119. |                        
  120. +   +---+---+---+---+---+
  121. |                        
  122. |                        
  123. |                        
  124. +---+---+---+---+---+---+"""
  125.     m=maze(mazestr1)
  126.     print m
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement