/*REPOSITORIO GITLAB: https://phoebe.roshka.com/gitlab/yalvarez/kotlin-e004-poker*/ class Carta(val valor: Int, val palo: Char) const val CARAS = "23456789tjqka" const val LETRAS = "shdc" fun esEscalera(cards: List): Boolean { val ordenar = cards.sortedBy { it.valor } if (ordenar[0].valor + 4 == ordenar[4].valor) return true if (ordenar[4].valor == 14 && ordenar[0].valor == 2 && ordenar[3].valor == 5) return true return false } fun esColor(cartas: List): Boolean { val palo = cartas[0].palo if (cartas.drop(1).all { it.palo == palo }) return true return false } fun jugada(mano: String): String { val letraMinuscula = mano.toLowerCase() //RECONOCE LA LETRA MINUSCULA QUE INGRESE val dividir = letraMinuscula.split(' ').filterNot { it == "" }.distinct() if (dividir.size != 5) return "INVALIDO" val cartas = mutableListOf() for (s in dividir) { if (s.length != 2) return "INVALIDO" val fIndex = CARAS.indexOf(s[0]) if (fIndex == -1) return "INVALIDO" val sIndex = LETRAS.indexOf(s[1]) if (sIndex == -1) return "INVALIDO" cartas.add(Carta(fIndex + 2, s[1])) } val groups = cartas.groupBy { it.valor } when (groups.size) { 2 -> { return "FULL" } 3 -> { return "DOS PARES" } 4 -> return "UN PAR" else -> { val color = esColor(cartas) val escalera = esEscalera(cartas) //corregir when { color && escalera -> return "ESCALERA COLOR" //corregir color -> return "COLOR" escalera -> return "ESCALERA" //corregir else -> return "CARTA ALTA" } } } } fun main(args: Array) { val manos = arrayOf( "ah ad th tc 6s", "as 2s 3s 4s 5s" ) for (mano in manos) { println("Jugada: ${jugada(mano)}") } }