• No se han encontrado resultados

Póquer Texas Hold em. CPU Inteligente.

N/A
N/A
Protected

Academic year: 2021

Share "Póquer Texas Hold em. CPU Inteligente."

Copied!
9
0
0

Texto completo

(1)

Póquer Texas Hold’em. CPU Inteligente.

José Manuel Chamorro Mínguez

Leganés, Madrid

100047212@alumnos.uc3m.es

Máximo Morales Céspedes

Valdepeñas, Ciudad Real

100056435@alumnos.uc3m.es

RESUMEN

El juego del póquer Texas Hold’em consiste en conseguir la mejor combinación de cartas a través de una serie de rondas de apuestas y de asignación de cartas. Programaremos un sistema basado en conocimiento capaz de realizar una partida de póquer con un jugador humano. Además se sabe que cada jugador tiende a un estilo de juego, el sistema programado cambiará aleatoria mente de estilo en función de la combinación que posea y del aprendizaje del estilo de juego del jugador humano. PALABRAS CLAVE

Póquer, combinación, estrategia, diagrama, Java 1. INTRODUCCIÓN

Durante el siguiente articulo mostramos las reglas y fases del póquer Texas Hold’em y como crear un jugador inteligente que sea capaz de analizar las posibles combinaciones que tiene y elegir una estrategia para conseguir ganar la mano.

2. JUEGO DEL POKER

El objetivo del juego Poker Texas hold’em consiste en llevarse el bote, donde el bote es el dinero apostado por todos los jugadores en un mano. El bote se puede ganar mostrando las cartas y consiguiendo la mejor combinación, o apostando para que los otros jugadores se retiren de la mano o “no vayan” de modo que abandonen su aportación al bote. El juego finaliza cuando alguno de los jugadores pierde todas las fichas que tiene. 2.1. REGLAMENTO

El juego comienza repartiendo dos cartas boca abajo a cada jugador, son las únicas que el jugador recibe individualmente y solo pueden ser descubiertas al final de la mano o si la apuesta es entre dos jugadores y uno de ello se juega el resto. La primera ronda de apuesta se denomina preFlop comenzando por el jugador a la izquierda de la ciega grande, en este caso el que tiene la ciega pequeña ya que solo habrá dos jugadores.

La siguiente fase es el llamado Flop, el repartidor suministra tres cartas descubiertas simultáneamente que serán comunes a los dos jugadores, esta fase va seguida de una ronda de apuestas comenzando por el jugador que tenía la ciega pequeña.

Una vez finalizado el Flop, pasamos al Turn donde el repartidor reparte una carta común, al igual que en la fase anterior, va seguido de una ronda de apuestas. Esta nueva carta común, es conocida como 4ª Calle en el argot del póquer.

Imagen PreFlop

Imagen Turn Imagen Flop

(2)

Finalmente el repartidor descubre la quinta carta común a ambos jugadores y se realiza una nueva ronda de apuestas. Si ningún jugador se ha retirado en este punto del juego se muestran las cartas, de modo que el jugador con mejor combinación gana el bote.

Las posibles combinaciones de mejor a peor son:

Escalera Real: Cinco cartas seguidas del mismo palo del 10 al AS. Combinaciones posibles: 4

Escalera de Color: Cinco cartas consecutivas del mimo palo. Combinaciones posibles: 36

Póquer: Cuatro cartas del mismo valor. Combinaciones posibles: 624

Full: Tres cartas iguales, mas otras dos iguales. Combinaciones posibles: 3744

Color: Cinco cartas del mismo palo sin ser consecutivas. Combinaciones posibles: 5148

Escalera: Cinco cartas consecutivas del palos diferentes. Combinaciones posibles: 10200

Trio: Tres cartas iguales del mismo valor. Combinaciones posibles: 54912

Doble Pareja: Dos parejas de cartas. Combinaciones posibles: 123552

Pareja: Dos cartas iguales y tres diferentes. Combinaciones posibles: 1098240

Carta más alta: Gana quien tiene la carta más alta de todas. Combinaciones posibles: 1302540

2.2. APUESTAS

Al comienzo de cada mano un jugador tendrá que pagar la ciega

grande mientras que el otro paga la ciega pequeña de la mitad

de valor que la anterior. En nuestro caso, como solo tenemos dos jugadores comienza a apostar el jugador con la ciega pequeña una vez este a realizado una decisión que no sea la de salir de la mano, se espera la decisión del jugador con la ciega grande. El esquema de la ronda de apuestas es el siguiente:

En este esquema hemos supuesto que la ciega pequeña la tiene la CPU, de modo que comienza a hablar ella, que puede decidir salir, igualar la ciega grande o igualarla y apostar algo mas, una vez tomada la decisión se pregunta al otro jugador. Destacar que en la última fase de cada mano, cuando se encuentran las cincon cartas comunes en la mesa, se permite una randa de apuesta mas larga.

(3)

2.3. MODELADO DEL JUEGO

El juego comienza decidiendo que tiene la ciega grande. Una vez repartidas las ciegas, cada jugador obtiene sus dos cartas privadas, a partir de aquí se inicia una ronda de apuestas en las que intervienen las decisiones tomadas por el jugador y por la CPU, si alguno de estos jugadores decide salir de la mano, el sistema adjudica un ganador (le suma el bote acumulado), comprueba que la partida de póquer no ha terminado (los jugadores siguen teniendo fichas) y vuelve a repartir las ciegas y las cartas privadas. Si los jugadores han igualado sus apuestas tenemos que pasar a la siguiente ronda Flop, el procedimiento es el mismo, se realiza una ronda de apuestas entre el jugador y la CPU y se decide si seguir a la siguiente fase Turn o si algun jugador se ha retirado, se nombra un ganador, volviendo al comienzo. Finalmente llegaríamos al River donde después de la ronda de apuestas, se muestran las cartas privadas nombrando ganador al jugador con mejor combinación. El proceso es el siguiente:

La estructura del programa en Java de este diagrama de flujo es:

/* Mientras haya fichas, continua el juego */

while(j1.getFichas()>=0 && j2.getFichas()>=0){ if(vPreFlop==0){

//Despues de la primera ronda de apuestas, pasamos al Flop

if(vFlop==0){

//Tras la ronda de apuestas del Flop, pasamos al Turn

if(vTurn==0){

//Tras la ronda de apuestas del Turn

pasamos al River

if(vRiver==0){

// Última ronda de apuestas // Se decide un ganador

}else if(vRiver == 1){

// Si devuelve 1, CPU sale, gana el jugador

}else if(vRiver == 2){

//Si devuelve 2, jugador sale, gana la CPU

}

}else if(vTurn == 1){

//Si devuelve 1, CPU sale, gana el jugador

}else if(vTurn == 2){

//Si devuelve 2, jugador sale, gana la CPU

}else if(vFlop == 1){

//Si devuelve 1, CPU sale, gana el jugador

}else if(vFlop == 2){

//Si devuelve 2, jugador sale, gana la CPU

}else if(vPreFlop == 1){

//Si devuelve 1, CPU sale, gana el jugador

}else if(vPreFlop == 2){

//Si devuelve 2, jugador sale, gana la CPU

}

// Terminada la mano, turnamos las ciegas

}

Donde los valores vPreFlop, vFlop, vTurn, vRiver son los resultado de los métodos correspondientes a cada fase del juego, devuelven 0 si tras la ronda de apuestas, se decide pasar a la siguiente fase, 1 si se retira la CPU, y 2 si el que se retira es el jugador 2. Solo se llegará a mostrar las cartas cuando después del River, se haya finalizado la última ronda de apuestas.

2.4. ESTILOS DE JUEGO Agresivo

Un jugador agresivo, sube la apuesta siempre que tiene una buena combinación de cartas, de modo que consigue atemorizar al otro jugador haciendo que este se retire del juego obteniendo las fichas que este había apostado. Por ejemplo, un jugador que recibe una pareja con las dos cartas privadas inicialmente realiza una apuesta alta o cuando este tiene pareja con la carta más alta de las cartas comunitarias y decide jugarse el resto. El estilo agresivo es útil en momentos puntuales, por ejemplo, cuando tenemos muchas menos fichas que el jugador contrario y es necesario aumentar la cantidad de fichas lo antes posible, sin embargo mantener este tipo de juego de manera indefinida supone perder fichas a gran velocidad.

Farolero

En este caso el jugador intenta engañar a su contrincante realizando una apuesta relativamente grande a pesar de no tener una buena combinación de cartas. El contrincante se atemoriza y decide retirarse de la mano. Al igual que en el caso anterior, los faroles se deben lanzar en momentos puntuales, si se realiza demasiadas veces levantaremos sospechas y tarde o temprano el jugador contrario descubre la táctica. La mejor situación para lanzar un farol es durante la ronda de apuestas del Turn y el

River, y siempre con alguna jugada de referencia, es decir, si en

las cartas centrales hay tres cartas consecutivas podemos engañar al contrincante pensando que tenemos escalera. Cazador

Este tipo de jugador es muy peligroso, es el enemigo natural de los jugadores agresivos. El jugador recibe cartas buenas, y junto con las cartas comunitarias tiene una jugada muy buena (por encima de trío), pero decide no apostar nada y esperar a que el

(4)

contrincante reciba una pareja alta y éste decida realizar una apuesta grande, en ese momento, él sube esta apuesta obligando al jugador agresivo a retirarse o a igualar sabiendo que probablemente pierda la mano.

Asegurador

Un jugador asegurador solo realiza una apuesta elevada cuando tiene una combinación muy alta, y probablemente superior a la del otro jugador. En principio está táctica parece una de las mejores, sin embargo si el contrario la detecta, nunca nos seguirá el juego, de modo que aunque apostemos mucho, no va a ser útil ya que nunca entrarán a estas apuestas.

Se ha demostrado que cada persona tiende a realizar una de estas tácticas, de modo que los jugadores profesionales realizan un estudio de cada jugador y pueden saber que va a realizar el contrario en cada mano. Además seguir uno de estos estilos indefinidamente no es práctico ya que se puede detectar con el siguiente beneficio para el contrincante. Lo ideal es elegir alguno de manera totalmente aleatoria (teniendo en cuenta el valor de la combinación que tenemos) de este modo, el jugador humano nunca podrá conocer el estilo de juego de la CPU. 2.5 IMPLEMENTACIÓN EN APLICACIÓN JAVA La aplicación java consta principalmente de las siguientes clases:

Jugador

Es la clase encargada de modelar el comportamiento de un jugador humano, sus atributos son un nombre, un conjunto de cartas que puede tener y el número de fichas que éste contiene. En cuanto a métodos, los más destacados son los encargados de analizar qué tipo de combinación tiene, pareja, doble pareja, full… además de los métodos get y set correspondientes a cada atributo.

Jugador_CPU

Esta clase hereda directamente de la clase jugador, por lo que tiene los mismos atributos y métodos, además, incluye los métodos de decisión en cada momento del juego, estos son:

decisionPreFlop(), decisionFlop(), decisionTurn(), y decisiónRiver()

Baraja

Es la clase encargada de modelar una baraja inglesa con 52 cartas repartidas en cuatro palos. El método principal de esta clase es libre() que nos proporciona una carta de la baraja que no está siendo utilizada de manera plenamente aleatoria.

Mesa

Es la clase encargada de seguir el diagrama de flujo del juego. Como atributos a destacar, consta de las cinco cartas comunitarias, el bote que habrá en cada mano, y los dos jugadores que están jugando en ella. Sus métodos principales son juego(), preFlop(boolean), flop(boolean), turn(boolean),

river(boolean), y los encargados de realizar las preguntas

adecuadas a cada jugador.

3. EL POKER Y LA INTELIGENCIA ARTIFICIAL La inteligencia del jugador controlado por la CPU está creada mediante sistemas basados en conocimiento, en los que el usuario define el conocimiento adquirido a través de su experiencia en el mundo del póquer, e integra este conocimiento en el sistema mediante una aplicación.

Se ha demostrado que los jugadores profesionales de póquer actúan mecánicamente, contemplando todas las posibilidades y huyendo todo lo posible de las emociones humanas (y mucho mas de expresarlas abiertamente). Durante las World Series of

Poker colocaron pulsímetros a varios jugadores y se pudo

observar como el pulso cardiaco de éstos permanecía constante a pesar de realizar todo tipo de jugadas, faroles, apuestas fuertes, jugarse el resto… Es en este punto donde una maquina tiene ventaja respecto un jugador medio que actúe por emociones, la CPU puede clasificar al jugadro dependiendo de sus jugadas mientras que la maquina puede decidir fríamente que decisión tomar en cada momento.

Dentro de la taxonomía de Bloom el jugador CPU actúa a bajo nivel, básicamente es capaza de aplicar el conocimiento y destrezas que el usuario ha implementado en el sistema y que éste ha memorizado y comprendido a lo largo de muchas partidas de póquer. Finalmente, la maquina debe ser capaz de analizar y evaluar todas las posibilidades del juego, teniendo en cuenta las jugadas realizadas por el jugador humano. En este sentido, la CPU debe de tener memoria episódica, es decir debe recordar los eventos experimentados a lo largo del juego, teniendo en cuenta la situación en la que estos ocurrieron, posibles proyectos de color o escalera, cartas centrales en ese momento, fichas que tenía el jugador en ese momento…

3.1. DIAGRAMAS DE LA CPU

Para representar la inteligencia de la CPU utilizamos diagramas de flujo, en lo que podemos observar como la computadora analiza las posibilidades y analiza las jugadas posibles. Una vez analizadas está decide utilizar un tipo de estrategia de manera casi aleatoria. Por ejemplo, si tiene un póquer de cartas la CPU sabe que tiene una de las mejores jugadas posibles, entonces aleatoriamente decide si utilizar una estrategia agresiva y realizar una apuesta grande o utilizar una estrategia de cazador, decide pasar o igualar, esperando que el otro jugador se confie y realice una gran apuesta, en ese momento, esta cazado.

Diagrama preFlop

El diagrama que sigue la maquina durante la primera ronda de apuestas preFlop es el siguiente:

(5)

En la primera ronda de apuestas la mayor mano posible que podemos tener es mano, por ello la CPU analiza primero esta posibilidad. Si es mayor que 9 la pareja es muy buena y tiene más de un 72% de posibilidades de ganar en una mesa de dos jugadores, por ello analiza las posibilidades y decide utilizar una estrategia determinada, si decide cazar pasará de la mano, sin embargo si decide utilizar un estrategia apostará un gran porcentaje del bote. Si no tiene pareja, pasa directamente a analizar las cartas que tiene, si son cartas altas, por ejemplo AS 8 que tiene un 58% de posibilidades de ganar contra un solo jugador, en ese caso decide que estrategia utilizar, si decide una estrategia agresiva realizará una apuesta alta, pero no tan elevada que si tuviese pareja. Finalmente en el caso de tener cartas demasiado bajas, la CPU tiene dos posibilidades, retirarse, o pasar o igualar, siempre y cuando solo tenga que igualar la ciega grande o una apuesta muy pequeña, en el caso de que sea necesario igualar una apuesta muy elevada se decantará por retirarse.

Posibilidades de ganar la mano con una pareja o con una combinación alta en las cartas privadas:

Jugada Probabilidad de Ganar 85% 82% 80% 77% 75% 72% 69% 66% 65% 64% 63% 63% 62% 60% 59% 59% 58%

Por debajo de la mano AS 8 (conocida como la mano del muerto) es casi tirar una moneda al aire de modo que la CPU decide pasar esperando encontrar una combinación mejor con las cartas comunes repartidas durante el Flop.

Diagrama Flop, Turn, River

En la siguiente figura mostramos el diagrama de flujo que sigue la CPU, cuando tiene que tomar una decisión dentro de las fases de Flop, Turn y River.

Este es el diagrama principal de nuestro jugador CPU, destacar que los porcentajes con los que utiliza cada tipo de estrategia no han sido mostrados en el diagrama a fin de no desvelar por completo el pensamiento de la maquina y añadir un poco de dificultad al jugador que juega por primera vez contra nuestra maquina inteligente.

(6)

El diagrama anterior muestra los pasos realizados durante cada ronda de apuesta. Destacar que éste es un diagrama generalizado, la CPU tiene en cuenta su situación en la ronda de apuestas, y si se encuentra en el Flop, en el Turn o en el River. En todos los casos comienza a analizar las posibilidades empezando por la mejor combinación posible desde la escalera de color, a tener solo cartas altas, en cada caso, analiza la jugada y decide que estrategia tomar.

En primer lugar analiza la posibilidad de tener escalera de color, esta posibilidad es muy difícil, de modo que tras analizar la jugada podrá decidir entre cazador, agresivo (jugandose el resto) o asegurador. Si la CPU no tiene escalera de color, pasa a analizar la posibilidad de tener full, si no lo tiene, pasa a analizar la posibilidad de color… así sucesivamente hasta llegar a la posibilidad de tener pareja o cartas altas si no se ha detectado una combinación mejor antes.

Decisiones en el Flop

Durante la primera fase cuando la CPU tenga una combinación alta casi siempre optará por la estrategia del cazador, está demostrado que es la mejor, esperando a que el contrincante cometa el error de realizar una apuesta alta. La otra posibilidad principal con una buena combinación consiste en seguir una estrategia agresiva solo cuando el bote es grande, si solo tiene el valor de las ciegas no tiene sentido, una combinación buena se puede exprimir mucho mas. Además durante el Flop, todavía se le da gran valor a poseer cartas altas, destacar que una de las mejores “cazas” que se pueden realizar (pero la más arriesgada) consiste en aumentar el bote progresivamente hasta que en las siguientes fase se consiga una pareja muy alta (pareja de reyes o ases) y llevarse el bote engordado durante toda la mano. Finalmente que la estrategia segura, se suele utilizar cuando se tiene una combinación intermedia, de escalera a pareja, ya el jugador contrario puede seguir apostando esperando terminar un proyecto de color, full o combinación superior.

Decisiones durante el Turn

Una vez realizada la ronda de apuestas del Flop, la CPU debe estudiar cuidadosamente la estrategia del contrincante, y las posibilidades de ganar la mano. Si tiene una buena combinación y utiliza una estrategia aseguradora, intentara realizar una pequeña apuesta para exprimir la mano todo lo posible. Desde el punto de vista del cazador, es un buen momento para realizar una apuesta alta si el bote es alto, ya que aseguramos que el contrincante no obtenga una combinación mejor con la quinta carta común. Destacar que este es el punto óptimo para tirar un farol, ya que el jugador estará estudiando todas las posibilidades de la mesa, por ejemplo, si hay tres cartas del mismo color en las cartas comunitarias, podemos engañar al contrario haciéndole pensar que tenemos color.

Decisiones durante el River

En la última fase de la mano no tiene sentido realizar una estrategia de cazador, llegados a este punto del juego hay que mostrar claramente tu estrategia. Si se ha seguido una estrategia de caza y se ha llegado al River, la mejor opción es pasar a una actitud agresiva, que puede llevar a dos posibilidades, el contrincante se retira y la CPU consigue el bote, o el contrincante iguala la apuesta pensando que la CPU está utilizando un farol. Destacar que si se ha seguido una estrategia

(7)

agresiva durante toda la mano y se ha llegado a la última fase, lo mejor es pasar a una actitud aseguradora, ya que es muy probable que el otro jugador lleve una mano muy buena. Por ejemplo, un jugador con una pareja de doses en las cartas privadas y otro dos en las caras comunitarias, ese tipo de trío pasaría totalmente desapercibido, y es mejor que cualquier pareja o doble pareja.

3.2. DECISIONES EN JAVA

La toma de decisiones se realiza mediante métodos programados en java con la siguiente estructura:

/* Toma de decisiones en la primera ronda de apuestas*/

if(ronda == 0){

if(escaleraColor>0){

//Toma de decisiones para Escalera Color

}else if(poquer>0){

// Toma de decisiones para Poquer

}else if(full>0){

// Toma de decisiones para Full

}else if(color>0){

// Toma de decisiones para Color

}else if(escalera>0){

//Toma de decisiones para Escalera

}else if(trio >0){

//Toma de decisiones para Trio

}else if(doblePareja>0){

//Toma de decisiones para Doble Pareja

}else if(pareja>0){

//Toma de decisiones para Pareja

}else if(sumCartasPropias>15){

//Toma de decisiones para cartas Altas

}else{

//Toma de decisiones para caratas Bajas

}

/* Toma de decisiones si se llega a las segunda ronda de apuestas */

}else if(ronda == 1){ if(escaleraColor>0){

//Toma de decisiones para Escalera Color

}else if(poquer>0){

// Toma de decisiones para Poquer

}else if(full>0){

// Toma de decisiones para Full

}else if(color>0){

// Toma de decisiones para Color

}else if(escalera>0){

//Toma de decisiones para Escalera

}else if(trio >0){

//Toma de decisiones para Trio

}else if(doblePareja>0){

//Toma de decisiones para Doble Pareja

}else if(pareja>0){

//Toma de decisiones para Pareja

}else if(sumCartasPropias>15){

//Toma de decisiones para cartas Altas

}else{

//Toma de decisiones para caratas Bajas

} }

Esta es la estructura básica de los métodos decisionFlop(),

decisionTurn() y decisionRiver(), incluidos en la clase

Jugador_CPU, encargada del comportamiento inteligente de un jugador contralado por el ordenadorl.

5. CONCLUSIONES

Una vez realizado nuestro rival de póquer Texas Hold’em hemos comprobado cómo es capaz de tomar decisiones adecuadas en función de las posibilidades que este tiene de ganar.

Hemos realizado multitud de partidas al póquer con la CPU, y podemos llegar a la conclusión que el porcentaje de victorias depende directamente del contrincante humano. Las reglas de la CPU han sido creadas a través del conocimiento de uno de los dos alumnos del trabajo, es en este caso cuando menos posibilidades tiene la computadora de alzarse con la victoria. En el caso de jugarse el resto deliberadamente al comienzo de cada mano, el porcentaje de victoria de la CPU es muy alto, alrededor del 70 %, ya que siempre que iguale la apuesta será con cartas muy altas.

Tras realizar una serie de partidas con all-in llegando a mostrar todas las cartas obtuvimos las siguientes probabilidades de victoria:

Mano Cartas Jugador 1 Cartas Jugador 2 Pareja alta contra

pareja baja 82% 18%

Pareja contra 2

cartas mayores 55% 45%

Pareja contra una

carta mayor 69% 31%

Pareja alta contra cartas bajas

consecutivas 81% 19%

Pareja alta contra cartas de valor consecutivo del mismo palo 77% 23% Pareja contra cartas mayores de valor consecutivo del mismo palo

50% 50%

2 cartas contra cartas más bajas de valor consecutivo del mismo palo

58% 42% 2 cartas contra cartas bajas de valor consecutivo 62% 38% Mano dominada 71% 29%

Cartas del mismo

palo contra pareja 34% 66%

Cartas mayores contra cartas de valor consecutivo del mismo palo

(8)

Carta mayor contra cartas de valor consecutivos 56% 48% 2 cartas contra 2 cartas bajas 68% 32% Pareja contra 2 cartas más bajas 89% 11% Duelo de cartas cuando alguien tenga la más alta y la más baja 64% 36% Duelo de cartas intercaladas 58% 42%

Finalmente, destacar que la máquina no es infalible, y depende en gran medida de la siguiente carta a salir, es decir, la “suerte” es un componente esencial para tener éxito en este juego, especialmente cuando jugamos a pocas manos. Sin embargo, cuando las partidas se alargan durante varias horas, este factor deja de ser tan importante, ya que nos puede afectar en momentos puntuales, no durante toda la partida.

Una computadora es el rival perfecto para torneo de póquer de larga duración, destacar que los torneos profesionales se alargan durante varios días, donde el desgaste y el cansancio hacen mella en los jugadores humanos, mientras que una maquina sigue tomando decisiones como al principio de manera fría y calculada.

6. REFERENCIAS [1] Api de Java

[2] Texas Hold’em Wikipedia.

http://es.wikipedia.org/wiki/Texas_hold_em [3] Probabilidades Póker

http://www.probabilidadespoker.es/

[4] Apuntes de la asignatura Inteligencia en Redes de Comunicaciones

(9)

Referencias

Documento similar

• En el sentido de las agujas del reloj, cada jugador que cumpla con los requisitos podrá tomar la primera carta del montón de cartas de progreso de color que muestre el dado.

Algunas opciones de juego que impliquen caminar, saltar y correr son propicias a esta edad, entre esas pueden: realizar pistas de obstáculos con elementos de la casa como

Baraja todas las cartas y colócalas boca abajo de forma ordenada (por ejemplo 4 filas de 4 cartas).El objetivo es emparejar a cada experta con su descubrimiento / avance, para

Juan Bautista Amorós y Vázquez de Figueroa (Madrid, 1856- Getafe, 1912), más conocido por su seudónimo Silverio Lanza, fue un escritor español. Hijo de una familia

En este sentido, con nuestro proyecto educativo, pretendemos fomentar el desarrollo de dichas habilidades que se recomiendan en el currículo oficial, partiendo de un

El cuidado de personas con necesidades especiales diversas, tal vez esté supedi- tado a la continuidad o estabilidad de los cónyuges (Nardone, 2003). Cuatro son las formas de la

c) Los compuestos Ph3SnX reaccionan con un ión X–– para formar el anión [Ph3SnX2]–– que tiene estructura de bipirámide trigonal con los grupos fenilo en.

Sí, considero que se pueden dar ambos aspectos (U. 6); frente a un 13 % de conocimiento confuso, es decir, que aunque tiene conocimientos acerca del tema también