Este documento describe qué es un coding dojo y sus reglas. Un coding dojo es una reunión de programadores para trabajar juntos en un reto de programación de manera colaborativa y sin competición. Los participantes resuelven el reto (kata) en parejas siguiendo el enfoque de desarrollo guiado por pruebas y realizando cambios en intervalos cortos de tiempo. El documento también presenta un ejemplo de kata sobre comparar manos de poker para determinar qué jugador gana.
2. ¿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
4. 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.
6. [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
8. 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 principle
Many client-specific interfaces are better than one general-purpose interface.
D DIP - Dependency inversion principle
One should “Depend upon Abstractions. Do not depend upon concretions.”
Dependency injection is one method of following this principle.
10. 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
11. # 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.
12. 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 AH
Black: 2H 4S 4C 2D 4H White: 2S 8S AS QS 3S
Black: 2H 3D 5S 9C KD White: 2C 3H 4S 8C KH
Black: 2H 3D 5S 9C KD White: 2D 3H 5C 9S KH
Salida Esperada:
White gana. - con Carta Más Alta: As
White gana. - con Color
Black gana. - con Carta Más Alta: 9
Empate.
Poker Hands