Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo Practico Minesweeper
Trabajo Practico Minesweeper
Grupo 10
2. Problemas 3
2.1. Parte I: Juego básico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1. Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2. Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.3. Ejercicio 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.4. Ejercicio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.5. Ejercicio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.6. Ejercicio 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Parte II: Despejar los vacı́os . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1. Ejercicio 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2. Ejercicio 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Parte III: Jugador automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1. Ejercicio 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1
1. Definición de Tipos
type pos = Z × Z
2
2. Problemas
2.1.1. Ejercicio 1
2.1.2. Ejercicio 2
2.1.3. Ejercicio 3
2.1.4. Ejercicio 4
2.1.5. Ejercicio 5
3
2.1.6. Ejercicio 6
4
2.2. Parte II: Despejar los vacı́os
2.2.1. Ejercicio 7
2.2.2. Ejercicio 8
5
2.3. Parte III: Jugador automático
2.3.1. Ejercicio 9
6
3. Funciones Auxiliares Y Predicados
3.1. Ejercicio 1
3.2. Ejercicio 2
P|t|−1 P|t|−1
aux cantidadTotalDeBombas (t: tablero) : Z = i=0 j=0 es1SiP osicionEsBombaSino0( t, i, j) ;
3.3. Ejercicio 3
7
pred noExistenPosicionesRepetidasEnLasBanderitas (b: banderitas) {
(∀i : Z)(∀k : Z)((0 ≤ i < |b| ∧ 0 ≤ k < |b| ∧ i ̸= k)
−→L b[i] ̸= b[k])
}
3.4. Ejercicio 4
3.5. Ejercicio 5
3.6. Ejercicio 6
3.7. Ejercicio 7
8
pred ningunaPosicionDeLaSecuenciaEstaEnBanderitas (s: seq⟨pos⟩, b: banderitas) {
(∀i : Z)(∀k : Z)((0 ≤ i < |b| ∧ 0 ≤ k < |s|) −→L s[k] ̸= b[i])
}
3.8. Ejercicio 8
pred todasLasPosicionesSinMinasAdyacentesConUnaPosicionConfirmadaEnJugadaYCaminoLibreAPertenecenAJugada
(t: tablero, p: posicion, j: jugada, b: banderitas) {
(∀q : pos)(((posicionP erteneceAlT ablero(t, q) ∧
¬ posicionP erteneceABanderitas(q, b)) ∧L
(0 = minasAdyacentes(t, q) ∧
caminoLibreConBanderitas(t, p, q, b) ∧
existeU naP osicionDelCaminoLibreQueP erteneceAJugada(t, p, q, j, b))) −→L
posicionP erteneceAJugada(q, j))
}
9
pred existeUnaPosicionDelCaminoLibreQuePerteneceAJugada (t: tablero, p: posicion, q: posicion, j: jugadas, b: banderi-
tas) {
(∃m : pos)((posicionP erteneceAlT ablero(t, m) ∧
posicionP erteneceAJugada(m, j)) ∧L
(0 = minasAdyacentes(t, m) ∧
caminoLibreConBanderitas(t, m, p, b) ∧
(∃s : seq⟨pos⟩)(caminoLibreSinDef inirM inasAdyacentesALaU ltimaP osicionConBanderitas(t, q, m, s, b))))
}
3.9. Ejercicio 9
10
pred esPermutacion (s, t: seq⟨pos⟩) {
(|s| = |t|) ∧
(∀x : pos)(posicionP erteneceASecuencia(p, s) ⇐⇒ posicionP erteneceASecuencia(p, t))
}
11