Código de Python - Buscar las minas en un tablero

Imágen de perfil
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Buscar las minas en un tablerográfica de visualizaciones


Python

Actualizado el 3 de Febrero del 2021 por Joel (150 códigos) (Publicado el 4 de Noviembre del 2020)
17.912 visualizaciones desde el 4 de Noviembre del 2020
Este código muestra una manera de contar las bombas dadas alrededor de una posición de una cuadricula creada con una lista de listas.

1
2
3
4
5
6
7
8
9
10
11
tablero=[
    [' ', 'x', ' ', 'x'],
    ['x', ' ', ' ', ' '],
    [' ', 'x', 'x', ' '],
    ['x', ' ', ' ', 'x'],
]
 
buscaminas(tablero, 0,0) # 2
buscaminas(tablero, 1,1) # 4
buscaminas(tablero, 2,2) # 3
buscaminas(tablero, 6,6) # 0

1
estrellaestrellaestrellaestrellaestrella(12)

Publicado el 4 de Noviembre del 2020gráfica de visualizaciones de la versión: 1
17.913 visualizaciones desde el 4 de Noviembre del 2020
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
def buscaminas(tablero, i, j):
    minas=0
    for h in range(i-1, i+2):
        for v in range(j-1, j+2):
            if h<0 or h>len(tablero[0])-1 or v<0 or v>len(tablero)-1:
                continue
            minas = minas+1 if tablero[h][v]=="x" else minas
    return minas



Comentarios sobre la versión: 1 (12)

Camila
30 de Marzo del 2021
estrellaestrellaestrellaestrellaestrella
1
2
3
4
5
6
7
8
9
Con tablero =
[X |   |   |   |   |   |   |  ]
[  |   |   |   |   | X |   |  ]
[  | X | X |   | X |   |   |  ]
[  |   |   | X |   |   |   |  ]
[  | X |   |   |   | X |   |  ]
[  | X |   | X | X | X |   | X]
[  |   | X |   |   |   | X |  ]
[  |   |   | X |   |   |   |  ]
y la posición (1,2)
buscaminas(tablero, i, j) debió entregar 2, pero entregó 0
Vuelve a intentarlo!
Responder
Imágen de perfil
30 de Marzo del 2021
estrellaestrellaestrellaestrellaestrella
Si, es correcto Camila, porque si te fijas en el código, busca la x en minúscula.

Vuelve a intentarlo!
Responder
Christian
24 de Mayo del 2021
estrellaestrellaestrellaestrellaestrella
1
2
3
4
5
6
7
8
tablero=[
    [' ', 'x', ' ', 'x', " ", "x"],
    ['x', ' ', 'x', ' ', "x", " "],
    [' ', ' ', ' ', ' ', " ", " "],
    [' ', 'x', ' ', 'x', " ", "x"],
    ['x', ' ', 'x', ' ', "x", " "],
    [' ', ' ', ' ', ' ', " ", " "],
]
solo amplie el tablero y me da error
buscaminas(tablero, 0,0) # 1
buscaminas(tablero, 1,1) # 0
Responder
Imágen de perfil
24 de Mayo del 2021
estrellaestrellaestrellaestrellaestrella
Hola Cristian, he cogido tu mismo tablero, y me da diferente resultado que a ti!!!

1
2
print(buscaminas(tablero, 0,0)) # 2
print(buscaminas(tablero, 1,1)) # 3
Responder
30 de Octubre del 2021
estrellaestrellaestrellaestrellaestrella
a mi me sale este error, me podrías decir que hacer por favor?
Con tablero =
[X | | | | | | X | | | | ]
[ | | | X | | X | | | | X | ]
[ | | | | X | | | X | X | | ]
[ | | | X | | | X | | | | ]
[ | | | | X | | | | X | | ]
[ | X | | | | X | | X | | | X]
[ | | | X | X | | X | | | X | X]
[ | | X | X | | X | | | | X | ]
[ | | | | | | | X | | | X]
[ | X | | | | | X | | | | ]
[ | | X | | | X | X | | | | ]
y la posición (10,0)
buscaminas(tablero, i, j) debió entregar 1, pero entregó 0
Vuelve a intentarlo!
Responder
Diego
13 de Marzo del 2022
estrellaestrellaestrellaestrellaestrella
Hola Joel, ¿me podrías explicar la lógica de tu código? No he podido comprenderlo y no quiero solo copiar y pegarlo si no lo entiendo.
Responder
laura
31 de Julio del 2022
estrellaestrellaestrellaestrellaestrella
Lo lograste? Me podrías mostrar y explicara porfa
Responder
Guillermo
2 de Marzo del 2023
estrellaestrellaestrellaestrellaestrella
Hola, quería saber si pudiste resolver el ejercicio?
Responder
1 de Febrero del 2023
estrellaestrellaestrellaestrellaestrella
Hola estimados, voy con éste codigo. Y no he podido hacer que me de los valores que corresponden.
en resumen:

tablero = [[' ', 'X', ' ', 'X'],['X', ' ', ' ', ' '],[' ', 'X', 'X', ' '],['X', ' ', ' ', 'X']]
def buscaminas(tablero, fil, col):
if tablero[fil][col] != 'X': #esto es para que no cuente en el caso de que elija una mina
minas = 0
for i in [fil-1, fil+1]: # aqui se resume la fila anterior, media y superior a la coordenada elejida.
for j in [col-1, col+1]: # lo mismo pero en columna, asi cubrimos todos los recuadros alrededor.
if i<0 or i>(len(tablero)-1) or j<0 or j>(len(tablero)-1): #esta condición es para no salirnos de los márgenes del tablero
if tablero[i][j]=='X':
minas+=1
return minas

Aún así, para buscaminas(tablero,1,1) me da 0 y para (0,2) me da 1.
Alguien me ayudaría a identificar el error?
Responder
1 de Febrero del 2023
estrellaestrellaestrellaestrellaestrella
Me di cuenta que escribi muy mal el anterior. :D

tablero = [[' ', 'X', ' ', 'X'],['X', ' ', ' ', ' '],[' ', 'X', 'X', ' '],['X', ' ', ' ', 'X']]
def buscaminas(tablero, fil, col):
(*) if tablero [fil][col] != "X" # esto es opcional, en caso de que quieran que no sea X el recuadro en el que caen
minas = 0
for i in range (fil-1, fil+2): # la funcion recorre desde la linea anterior (-1) hasta la posterior (+1), pero al no considerar el rango final se escribe como (+2)
for j in range (col-1, col+2): #lo mismo en columna, así mapeamos todo alrededor (incluido el recuadro en el que caimos)
if i<0 or i>(len(tablero)-1) or j<0 or j>(len(tablero)-1): #esto nos impide elegir recuadros de los margenes.
continue
if tablero[i][j]=='X':
minas = minas+1
(*) if tablero [fil][col] == "X" minas=minas-1 ésto es opcional en caso de que no quieran contar la X del recuedro en el que cayeron, pero si no se los piden no lo pongan.
return minas

print(buscaminas(tablero,1,1)) = 4
print(buscaminas(tablero,0,2)) = 2
print(buscaminas(tablero,2,2)) = 3

Alguno ha visto como considerar los recuadros de los márgenes? tendría que reescribir el "in range" para 4 condiciones (4 margenes)?
Saludos y gracias.
Responder
Guillermo
2 de Marzo del 2023
estrellaestrellaestrellaestrellaestrella
Hola como estas?
Pudiste resolver el problema?
Responder
juan
19 de Abril del 2023
estrellaestrellaestrellaestrellaestrella
tablero=[
[' ', 'X', ' ', 'X'],
['X', ' ', ' ', ' '],
[' ', 'X', 'X', ' '],
['X', ' ', ' ', 'X'],
]

def buscaminas(tablero, i, j):
minas=0
for h in range(i-1, i+2):
for v in range(j-1, j+2):
if h<0 or h>len(tablero[0])-1 or v<0 or v>len(tablero)-1:
continue

if tablero[h][v]=="X":
minas = minas+1

return minas

print(buscaminas(tablero, 0,0)) # 2
print(buscaminas(tablero, 1,1)) # 4
print(buscaminas(tablero, 2,2)) # 3
print(buscaminas(tablero, 6,6)) # 0
Responder

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s6695