Arkanium77

Mines

Feb 13th, 2019
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.68 KB | None | 0 0
  1. from random import randrange as rnd
  2.  
  3. def gen2d(ar):
  4.     max_len = max([len(str(e)) for r in ar for e in r])
  5.     for row in ar:
  6.         print(*list(map('{{:>{length}}}'.format(length=max_len).format, row)))
  7.        
  8. def genTable(ar):
  9.     max_len=0
  10.    
  11.     for i in range(len(ar)):
  12.         for j in range(len(ar[i])):
  13.             if len(str(ar[i][j]))>max_len:
  14.                 max_len=len(str(ar[i][j]))
  15.     max_len+=2
  16.     s="┏"+("━"*max_len+"┳")*len(ar[i])
  17.     s=s[:len(s)-2]+"━┓\n"
  18.     for i in range(len(ar)):
  19.         for j in range(len(ar[i])):
  20.             t="┃"+str(ar[i][j]).center(max_len)
  21.             s+=t
  22.         s=s[:len(s)-1]+" ┃\n┣"+("━"*max_len+"╋")*len(ar[i])
  23.         s=s[:len(s)-2]+"━┫\n"
  24.     t=len(s)-len("┃\n┣"+("━"*max_len+"╋")*len(ar[len(ar)-1]))
  25.     #print(t)
  26.     s=s[:t+1]+"┗"+("━"*max_len+"┻")*len(ar[i])
  27.     s=s[:len(s)-2]+"━┛"
  28.     return s
  29.  
  30. def print2d(ar,type_=0):
  31.     if type_==0:
  32.         print(genTable(ar))
  33.     else:
  34.         print(gen2d(ar))
  35.        
  36.        
  37.        
  38. m=15
  39. n=10
  40. w=10
  41.  
  42. a=[["_" for i in range(m)] for j in range(n)]
  43. w1=w
  44. while w1!=0:
  45.     t1=rnd(n)
  46.     t2=rnd(m)
  47.     while a[t1][t2]!="_":
  48.         t1=rnd(n)
  49.         t2=rnd(m)
  50.     a[t1][t2]="*"
  51.     w1-=1
  52.    
  53. for i in range(1,n-1):
  54.     for j in range(1,m-1): 
  55.         if a[i][j]=="_":
  56.             clv=0
  57.             for i1 in range(-1,2):
  58.                 for j1 in range(-1,2):
  59.                     if a[i+i1][j+j1]=="*":
  60.                         clv+=1
  61.             a[i][j]=clv
  62.  
  63. #Обработаем верхнюю границу        
  64. for j in range (1,m-1):
  65.     if a[0][j]=="_":
  66.  
  67.         clv=0
  68.         for i1 in range(0,2):
  69.             for j1 in range(-1,2):
  70.                 if a[0+i1][j+j1]=="*":
  71.                     clv+=1
  72.             a[0][j]=clv
  73.  
  74. #Обработаем нижнюю границу          
  75. for j in range (1,m-1):
  76.     if a[n-1][j]=="_":
  77.         clv=0
  78.         for i1 in range(0,2):
  79.             for j1 in range(-1,2):
  80.                 if a[n-1-i1][j+j1]=="*":
  81.                     clv+=1
  82.             a[n-1][j]=clv
  83.  
  84. #Обработаем левую границу
  85. for i in range (1,n-1):
  86.     if a[i][0]=="_":
  87.         clv=0
  88.         for i1 in range(-1,2):
  89.             for j1 in range(0,2):
  90.                 if a[i+i1][0+j1]=="*":
  91.                     clv+=1
  92.             a[i][0]=clv
  93.  
  94. #Обработаем правую границу
  95. for i in range (1,n-1):
  96.     if a[i][m-1]=="_":
  97.         clv=0
  98.         for i1 in range(-1,2):
  99.             for j1 in range(0,2):
  100.                 if a[i+i1][m-1-j1]=="*":
  101.                     clv+=1
  102.             a[i][m-1]=clv
  103.  
  104. #обработка углов
  105. if(a[0][0]=="_"):
  106.     clv=0
  107.     if a[0][1]=="*": clv+=1
  108.     if a[1][1]=="*": clv+=1
  109.     if a[1][0]=="*": clv+=1
  110.     a[0][0]=clv
  111. if(a[0][m-1]=="_"):
  112.     clv=0
  113.     if a[0][m-2]=="*": clv+=1
  114.     if a[1][m-2]=="*": clv+=1
  115.     if a[1][m-1]=="*": clv+=1
  116.     a[0][m-1]=clv
  117. if(a[n-1][0]=="_"):
  118.     clv=0
  119.     if a[n-1][1]=="*": clv+=1
  120.     if a[n-2][1]=="*": clv+=1
  121.     if a[n-2][0]=="*": clv+=1
  122.     a[n-1][0]=clv
  123. if(a[n-1][m-1]=="_"):
  124.     clv=0
  125.     if a[n-1][m-2]=="*": clv+=1
  126.     if a[n-2][m-2]=="*": clv+=1
  127.     if a[n-2][m-1]=="*": clv+=1
  128.     a[n-1][m-1]=clv
  129. print2d(a)
Advertisement
Add Comment
Please, Sign In to add comment