Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/05/2018, 00:08
Avatar de xfxstudios
xfxstudios
 
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: EJERCICIO FaCIL PERO SE ME COMPLICo

Todo depende de como el sistema valla a recibir la data, aunque debería de estar preparado para varios ambitos, por ejemplo,

no es lo mismo parar
KKK82

que
13131382

así que como tu sistema de pruebas va a manejar dichos datos para determinar que valor darle al az en ese momento si 1 o 14

si modificamos la clase, tomando como valor del as en número 14 únicamente, quedaria la clase así:

Código PHP:
Ver original
  1. class Cartas{
  2.  
  3.     private function _mano($X){
  4.         $manos = array(
  5.             "1413121110" => "Escalera real de Color",
  6.             "109876"     => "Escalera de Color",
  7.             "99994"      => "Poker",
  8.             "4441212"    => "Full",
  9.             "77722"      => "Full",
  10.             "5551414"    => "Full",
  11.             "7771313"    => "Full",
  12.             "1211754"    => "Color",
  13.             "12111098"   => "Escalera",
  14.             "543214"     => "Escalera",
  15.             "13131382"   => "Trio",
  16.             "10106611"   => "Doble Pareja",
  17.             "11111485"   => "Pareja"
  18.         );
  19.         return (array_key_exists($X,$manos)) ? $manos[$X] : "No tiene mano válida";
  20.     }//
  21.  
  22.     private function _valor($X){
  23.         if(!is_numeric($X)){
  24.             switch ($X) {
  25.                 case 'J':
  26.                     return 11;
  27.                 break;
  28.                
  29.                 case 'Q':
  30.                     return 12;
  31.                 break;
  32.                
  33.                 case 'K':
  34.                     return 13;
  35.                 break;
  36.                
  37.                 case 'A':
  38.                     return 14;
  39.                 break;
  40.                
  41.             }
  42.         }
  43.     }
  44.  
  45.     public function _valida($X){
  46.         if(is_array($X)){
  47.             //asort($X);
  48.             //$b = implode("",$X);
  49.             //return $this->_mano($b);
  50.             $b = "";
  51.  
  52.             foreach($X as $item){
  53.                 if(is_numeric($item)){
  54.                     $b .= $item;
  55.                 }else{
  56.                     $b .= $this->_valor($item);
  57.                 }
  58.             }
  59.  
  60.             return $this->_mano($b);
  61.         }else{
  62.             return false;
  63.         }
  64.     }//
  65.  
  66. }//
  67.  
  68. $p = new Cartas();
  69.  
  70. $jugadas = [
  71.     ["A","K","Q","J",10],//Escalera real de Color
  72.     [10,9,8,7,6],//Escalera de Color
  73.     [9,9,9,9,4],//Poker
  74.     [4,4,4,"Q","Q"],//Full
  75.     [7,7,7,2,2],//Full
  76.     [5,5,5,"A","A"],//Full
  77.     [7,7,7,"K","K"],//Full
  78.     ["Q","J",7,5,4],//Color
  79.     ["Q","J",10,9,8],//Escalera
  80.     [5,4,3,2,"A"],//Escalera
  81.     ["K","K","K",8,2],//Trio
  82.     [10,10,6,6,"J"],//Doble Pareja
  83.     ["J","J","A",8,5],//Pareja
  84. ];
  85.  
  86. foreach($jugadas as $item){
  87.     echo "<li>".$p->_valida($item)."</li>";
  88. }

retornando la siguiente lista:

->Escalera real de Color
->Escalera de Color
->Poker
->Full
->Full
->Full
->Full
->Color
->Escalera
->Escalera
->Trio
->Doble Pareja
->Pareja

claro aquí no estamos tomando ni el palo ni el color para dichas validaciones y estamos manejando el orden de llegada de la data asignando el único valor de 14 al as, no soy muy experto en poker, así que no te sabría decir en que momento el as vale 1 o 14, pero igual sería una validación que se podría hacer de acuerdo al orden de envío del as imagino yo.

como por ejemplo esta escalera:

[5,4,3,2,"A"],//Escalera

alli se podría decir que el as vale 1

también debes manejar los patrones, pues puedo tener una escalera en una mano donde tenga 7 cartas por ejemplo
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 07/05/2018 a las 00:16