Agregado codigo para verificar oportunidad tri
This commit is contained in:
parent
ef9c06730a
commit
06a2319d5e
82
src/TestRon.kt
Normal file
82
src/TestRon.kt
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package dev.araozu
|
||||||
|
|
||||||
|
/*
|
||||||
|
122334
|
||||||
|
112233
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
fun obtSeq(arrl: ArrayList<Int>): ArrayList<ArrayList<Int>> {
|
||||||
|
val arrlR = arrayListOf<ArrayList<Int>>()
|
||||||
|
var i = 0
|
||||||
|
while (i < arrl.size) {
|
||||||
|
val primerElem = arrl[i]
|
||||||
|
if (arrl.contains(primerElem + 1) && arrl.contains(primerElem + 2)) {
|
||||||
|
arrl.remove(primerElem)
|
||||||
|
arrl.remove(primerElem + 1)
|
||||||
|
arrl.remove(primerElem + 2)
|
||||||
|
arrlR.add(arrayListOf(primerElem, primerElem + 1, primerElem + 2))
|
||||||
|
} else {
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return arrlR
|
||||||
|
}
|
||||||
|
|
||||||
|
fun obtTri(arrl: ArrayList<Int>): ArrayList<ArrayList<Int>> {
|
||||||
|
val arrlR = arrayListOf<ArrayList<Int>>()
|
||||||
|
var i = 0
|
||||||
|
while (i + 2 < arrl.size) {
|
||||||
|
val primerElem = arrl[i]
|
||||||
|
if (primerElem == arrl[i + 1] && primerElem == arrl[i + 2]) {
|
||||||
|
arrl.remove(primerElem)
|
||||||
|
arrl.remove(primerElem)
|
||||||
|
arrl.remove(primerElem)
|
||||||
|
arrlR.add(arrayListOf(primerElem, primerElem, primerElem))
|
||||||
|
} else {
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arrlR
|
||||||
|
}
|
||||||
|
|
||||||
|
fun obtPar(arrl: ArrayList<Int>): ArrayList<ArrayList<Int>> {
|
||||||
|
val arrlR = arrayListOf<ArrayList<Int>>()
|
||||||
|
var i = 0
|
||||||
|
while (i + 1 < arrl.size) {
|
||||||
|
val primerElem = arrl[i]
|
||||||
|
if (primerElem == arrl[i + 1]) {
|
||||||
|
arrl.remove(primerElem)
|
||||||
|
arrl.remove(primerElem)
|
||||||
|
arrlR.add(arrayListOf(primerElem, primerElem))
|
||||||
|
} else {
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arrlR
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Para solucionar el problema verificar tambien al reves
|
||||||
|
fun main() {
|
||||||
|
val cartas = arrayListOf(1, 2, 2, 2, 3, 3, 4, 5)
|
||||||
|
val cartas2 = arrayListOf(1, 2, 2, 2, 3, 3, 4, 5)
|
||||||
|
|
||||||
|
val arrlR = obtSeq(cartas)
|
||||||
|
val arrlT = obtTri(cartas)
|
||||||
|
val arrlP = obtPar(cartas)
|
||||||
|
|
||||||
|
println(arrlR)
|
||||||
|
println(arrlT)
|
||||||
|
println(arrlP)
|
||||||
|
|
||||||
|
println("-------------------")
|
||||||
|
|
||||||
|
val arrlP2 = obtPar(cartas2)
|
||||||
|
val arrlT2 = obtTri(cartas2)
|
||||||
|
val arrlR2 = obtSeq(cartas2)
|
||||||
|
|
||||||
|
println(arrlR2)
|
||||||
|
println(arrlT2)
|
||||||
|
println(arrlP2)
|
||||||
|
}
|
@ -18,13 +18,38 @@ sealed class Carta(val valor: Int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class CartaNumero(valor: Int, val numero: Int = (valor shl 27) ushr 28) : Carta(valor) {
|
sealed class CartaNumero(valor: Int, val numero: Int = (valor shl 27) ushr 28) : Carta(valor) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
fun separarCartasRojo(valores: ArrayList<Int>): Pair<ArrayList<CartaNumeroRojo>, ArrayList<Int>> {
|
||||||
|
val arrl = arrayListOf<CartaNumeroRojo>()
|
||||||
|
val arrlInt = arrayListOf<Int>()
|
||||||
|
|
||||||
|
valores.forEach {
|
||||||
|
val carta = obtenerCartaEspecifica(it)
|
||||||
|
if (carta is CartaNumeroRojo) arrl.add(carta)
|
||||||
|
else arrlInt.add(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Pair(arrl, arrlInt)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun separarCartasNegro(valores: ArrayList<Int>): Pair<ArrayList<CartaNumeroNegro>, ArrayList<Int>> {
|
||||||
|
val arrl = arrayListOf<CartaNumeroNegro>()
|
||||||
|
val arrlInt = arrayListOf<Int>()
|
||||||
|
|
||||||
|
valores.forEach {
|
||||||
|
val carta = obtenerCartaEspecifica(it)
|
||||||
|
if (carta is CartaNumeroNegro) arrl.add(carta)
|
||||||
|
else arrlInt.add(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Pair(arrl, arrlInt)
|
||||||
|
}
|
||||||
|
|
||||||
fun filtrarCartasRojo(valores: ArrayList<Int>): ArrayList<CartaNumeroRojo> {
|
fun filtrarCartasRojo(valores: ArrayList<Int>): ArrayList<CartaNumeroRojo> {
|
||||||
val arrl = arrayListOf<CartaNumeroRojo>()
|
val arrl = arrayListOf<CartaNumeroRojo>()
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package dev.araozu.juego
|
package dev.araozu.juego
|
||||||
|
|
||||||
interface Oportunidad {
|
interface Oportunidad {
|
||||||
|
|
||||||
val cartaDescartada: Int
|
val cartaDescartada: Int
|
||||||
val nombreOportunidad: String
|
val nombreOportunidad: String
|
||||||
}
|
}
|
||||||
|
@ -5,4 +5,27 @@ data class OportunidadTri(override val cartaDescartada: Int) :
|
|||||||
|
|
||||||
override val nombreOportunidad: String = "Tri"
|
override val nombreOportunidad: String = "Tri"
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
private fun arrlCartasContieneTri(carta: Int, arrl: ArrayList<Int>): Boolean {
|
||||||
|
var numCartasEncontradas = 0
|
||||||
|
// Elimina el último bit para que no se distinga entre cartas de corazon/trebol/etc
|
||||||
|
val valorCarta = (carta ushr 1) shl 1
|
||||||
|
for (c in arrl) {
|
||||||
|
val valorCartaN = (c ushr 1) shl 1
|
||||||
|
if (valorCarta == valorCartaN) numCartasEncontradas++
|
||||||
|
if (numCartasEncontradas == 2) return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>): OportunidadTri? =
|
||||||
|
if (arrlCartasContieneTri(valorCarta, cartasMano)) {
|
||||||
|
OportunidadTri(valorCarta)
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
28
src/juego/OportunidadWin.kt
Normal file
28
src/juego/OportunidadWin.kt
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package dev.araozu.juego
|
||||||
|
|
||||||
|
class OportunidadWin(override val cartaDescartada: Int) : Oportunidad {
|
||||||
|
|
||||||
|
override val nombreOportunidad = "Win"
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
private fun obtSeq1(arrl: ArrayList<CartaNumero>): ArrayList<ArrayList<CartaNumero>> {
|
||||||
|
TODO()
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>, numGruposAbiertos: Int = 0) {
|
||||||
|
val narrl = arrayListOf<Int>()
|
||||||
|
narrl.addAll(cartasMano)
|
||||||
|
narrl.add(valorCarta)
|
||||||
|
|
||||||
|
val (cartasRojo, cartasRestantes1) = CartaNumero.separarCartasRojo(narrl)
|
||||||
|
val (cartasNegro, cartasRestantes2) = CartaNumero.separarCartasNegro(cartasRestantes1)
|
||||||
|
val restoCartas = cartasRestantes2.map { Carta.obtenerCartaEspecifica(it) }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user