0votos

Kata Minesweeper en Python

por josejuan hace 6 años

Una solución cualquiera, nada especial.

Representa campos de minas del conocido juego buscaminas en esta kata donde tendrás que interpretar entradas del usuario y posteriormente representar el tablero.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sys 
import re 
 
f = 0                                                                        # n de tablero 
l = 0                                                                        # n de l'inea en la entrada 
I = sys.stdin.readlines()                                                    # archivo de entrada 
T = [(x, y) for x in range(-1, 2) for y in range(-1, 2) if x != 0 or y != 0] # deltas celdas adjacentes 
 
def esMina(c): return 1 if c == '*' else 0 
def sumMinas(r, c, M): return sum(map(lambda d: M[r+d[1]][c+d[0]], T)) 
 
while l < len(I): 
        (m, l) = (re.search("([0-9]+) ([0-9]+)", I[l]), l + 1)               # parseamos dimensiones 
        (h, w) = (int(m.group(1)), int(m.group(2))) 
        if h == 0:                                                           # condici'on de fin de entrada 
                break 
        print "Campo #%i:" % f 
        b = [[0] * (w + 2)] 
        M = b + map(lambda r: [0] + map(esMina, r), I[l:l+h]) + b 
        for r in range(1, h + 1): 
                for c in range(1, w + 1): 
                        sys.stdout.write('*' if M[r][c] == 1                 # si es mina un '*' 
                                             else str(sumMinas(r, c, M)))    # sino, el conteo adjacentes 
                print '' 
        print '' 
        (f, l) = (f + 1, l + h) 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.