Coding dojo : Poker Hands

13
ANTEVENIO CODING DOJO ed. Calorcito 14

description

Primero Coding Dojo realizado en Antevenio. La kata usada fue poker hands.

Transcript of Coding dojo : Poker Hands

Page 1: Coding dojo : Poker Hands

ANTEVENIOCODING DOJO

ed. Calorcito 14

Page 2: Coding dojo : Poker Hands

¿Que es un coding dojo?

Reunión de un grupo de programadores para trabajar juntos en un reto de programación (Kata).

# No competitivo -> colaborativo y divertido.# Da igual el nivel# Entorno seguro para probar ideas# Ir despacio para llegar a la solución perfecta

Page 3: Coding dojo : Poker Hands

Deliberate Practice

# Kata

# Coding Dojo

# Code Retreat

# Pet Projects

Page 4: Coding dojo : Poker Hands

Reglas

# La kata se resuelve programando en parejas (Piloto

y Copiloto)

# Todo el mundo está invitado a participar

# La kata se resuelve con TDD en pequeños pasos

# Timeboxes de 7 minutos.

# Al final de un Timebox el copiloto pasa a

conductor y entra de copiloto alguien nuevo.

Page 5: Coding dojo : Poker Hands

Test Driven Development

Page 6: Coding dojo : Poker Hands

[in]# Aumenta la calidad del código.# Disminuye los bugs.# Disminuye la necesidad de depurar.# Diseño enfocado a las necesidades.# Estabilidad# Base para la integración contínua.# Herramienta para diseñar

[out]# Difícil de aprender.# Aumenta el tiempo de desarrollo.# Cambio en la forma de pensar

Test Driven Development

Page 7: Coding dojo : Poker Hands

¿Que debo refactorizar?

# DRY ( Don’t Repeat Yourself)

# Malos Olores..WTFs!

# Principios SOLID

Page 8: Coding dojo : Poker Hands

Principios SOLID S SRP- Single responsibility principle

An artifact should have only a single responsibility. O OCP - Open/closed principle

Software entities should be open for extension, but closed for modification. L LSP - Liskov substitution principle

Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.

I ISP - Interface segregation principleMany client-specific interfaces are better than one general-purpose interface.

D DIP - Dependency inversion principleOne should “Depend upon Abstractions. Do not depend upon concretions.”Dependency injection is one method of following this principle.

Page 9: Coding dojo : Poker Hands

[KATA] POKER HANDS

http://www.codingdojo.org/cgi-bin/index.pl?KataPokerHands

Page 10: Coding dojo : Poker Hands

Problema:Comparar varias manos de poker e indicar cual de las dos gana.

Glosario:

Un baraja de poker contiene 52 cartas. Cada una de una de las cartas tiene un cara : picas/spades (S), corazones/hearts (H), tréboles/clubs (C), diamantes/diamonds (D). Cada carta tiene uno de los siguientes valores: 2, 3, 4, 5, 6, 7, 8, 9, 10 (T), dama (J), reina (Q), rey (K), as (A). El 2 es la carta con menor valor y el A la carta con mayor valor.

Una mano de poker consiste en 5 cartas de la baraja. Las manos de poker se ordenan de menor a mayor dependiendo de una serie de reglas asociadas a la mano.

Poker Hands

Page 11: Coding dojo : Poker Hands

# High Card (Carta Más Alta): Para manos que no entran en ninguna de las manos superior, el ganador es aquel que tiene la carta más alta. Si se produce un empate entonces se compara la siguiente carta más alta y así sucesivamente.

# Pair (Parejas): 2 de las 5 cartas de la mano tienen el mismo valor. Si las dos manos tienen

pareja, entonces gana la que tenga la pareja más alta. Si ambas parejas son iguales entonces gana el

que tenga la carta más alta.

# Two Pairs (Dobles Parejas): La mano contiene 2 parejas diferentes. Si las dos manos tienen dobles

parejas diferentes entonces gana aquella que tenga la pareja más alta. Si las dos manos tienen las

mismas parejas entonces se compara la otra pareja. Si ambas manos tiene las mismas parejas entonces

gana el que tenga la carta más alta restante.

# Three of a Kind (Trio): 3 cartas de la mano tienen el mismo valor. Gana la mano que tiene las 3

cartas con mayor valor.

# Straight (Escalera): La mano contiene 5 cartas consecutivas. Si las dos manos tienen

escalera entonces gana la que tiene la carta más alta.

# Flush (Color): La mano tiene 5 cartas con la misma cara. Si ambas manos tienen

escalera entonces gana el que tenga la carta más alta.

# Full House (Full): La mano tiene un trío y una pareja. En caso de tener ambas manos full

entonces gana el que tenga el trío más alto.

# Straight flush (Escalera de Color): 5 cartas de la misma cara pero con valores consecutivos. En caso de tener escalera las dos manos entonces gana el que tenga el valor más alto.

# Four of a Kind (Poker): 4 cartas con el mismo valor. En caso de tener ambas manos

poker gana el que tenga el valor más alto.

Page 12: Coding dojo : Poker Hands

Datos de Prueba:

Cada fila de datos de prueba esta compuesta por las manos de los dos jugadores. Las 5 primeras cartas pertenecen al jugador llamado Black y las otras 5 al jugador llamado White.

Black: 2H 3D 5S 9C KD White: 2C 3H 4S 8C AHBlack: 2H 4S 4C 2D 4H White: 2S 8S AS QS 3SBlack: 2H 3D 5S 9C KD White: 2C 3H 4S 8C KHBlack: 2H 3D 5S 9C KD White: 2D 3H 5C 9S KH

Salida Esperada:

White gana. - con Carta Más Alta: AsWhite gana. - con ColorBlack gana. - con Carta Más Alta: 9Empate.

Poker Hands

Page 13: Coding dojo : Poker Hands

Rubén OrtaCTO de antevenio.com, mdirector.com, elviajerofisgon.com, ofelix.com, inVIPtus.com…

#twitter: @agileando#linkedin: es.linkedin.com/in/rubenorta#slideshare: es.slideshare.net/agileando#github: github.com/rubenorta

¿ Quién soy ?