SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
ANTEVENIO
CODING DOJOed. Calorcito 14
¿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
Deliberate Practice
# Kata
# Coding Dojo
# Code Retreat
# Pet Projects
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.
Test Driven Development
[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
¿Que debo refactorizar?
# DRY ( Don’t Repeat Yourself)
# Malos Olores..WTFs!
# Principios SOLID
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.
[KATA]
POKER HANDShttp://www.codingdojo.org/cgi-bin/index.pl?KataPokerHands
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
# 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.
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
Rubén Orta
CTO 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 ?

Más contenido relacionado

Más de Ruben Orta

Más de Ruben Orta (9)

De la newsletter al plan de email marketing
De la newsletter al plan de email marketingDe la newsletter al plan de email marketing
De la newsletter al plan de email marketing
 
I have an idea!
I have an idea!I have an idea!
I have an idea!
 
Prácticas ágiles y software abierto para poner en órbita tu startup
Prácticas ágiles y software abierto para poner en órbita tu startupPrácticas ágiles y software abierto para poner en órbita tu startup
Prácticas ágiles y software abierto para poner en órbita tu startup
 
365 días para transformar una startup
365 días para transformar una startup365 días para transformar una startup
365 días para transformar una startup
 
¿Quieres que el cerebro reptiliano te ayude a mejorar tus newsletters?
¿Quieres que el cerebro reptiliano  te ayude a mejorar tus newsletters?¿Quieres que el cerebro reptiliano  te ayude a mejorar tus newsletters?
¿Quieres que el cerebro reptiliano te ayude a mejorar tus newsletters?
 
Mi primer map reduce
Mi primer map reduceMi primer map reduce
Mi primer map reduce
 
Remix the media with PopCorn.JS
Remix the media with PopCorn.JSRemix the media with PopCorn.JS
Remix the media with PopCorn.JS
 
INCREMENTA la CONVERSION de tu website con TEST a/b y multivariante
INCREMENTA la CONVERSION de tu website con TEST a/b y multivarianteINCREMENTA la CONVERSION de tu website con TEST a/b y multivariante
INCREMENTA la CONVERSION de tu website con TEST a/b y multivariante
 
No es software todo lo que reluce
No es software todo lo que reluceNo es software todo lo que reluce
No es software todo lo que reluce
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
Marc Liust
 

Último (18)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 

Coding dojo : Poker Hands

  • 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
  • 3. Deliberate Practice # Kata # Coding Dojo # Code Retreat # Pet Projects
  • 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
  • 7. ¿Que debo refactorizar? # DRY ( Don’t Repeat Yourself) # Malos Olores..WTFs! # Principios SOLID
  • 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
  • 13. Rubén Orta CTO 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 ?