Me gustaria iniciar en esta, nuestra comunidad, una serie de ejercicios a modo de code dojos. La idea seria que entre todos propusiéramos un tema sobre el que trabajar. Éste tema deberia ser en la medida que se pueda, algo abierto para poder tomar decisiones de diseño. Una vez acabado Colgaríamos el código para que los yogurines puedan ver 'How big bros do battle', para los expertos, nuevos puntos de vista o incluso aprender de otros lenguajes o paradigmas, o para programosaurios que decidan mantenerse engranados.
Dinámica
En los dos primeros días de la kata o ejercicio decidiríamos entre todos los que estemos interesados sobre el tema y el tiempo que se dará para resolverlo. La idea es que cada ejercicio se haga en 1-2 semanas.
Podrá participar todo el que quiera, pero solo actualizaré éste post con código coherente y que al menos compile.
En el transcurso del último día se irían subiendo las katas. Éste dia sería el indicado para criticar (siempre de manera positiva) el código de los demás. Abstenerse flameros, que para eso está feda.
El post lo usaremos también para, una vez decidido el tema, poder proponernos documentación, preguntar dudas, tomar decisiones conjuntas (o evitarlas y hacer lo que te de la gana). A lo único que hay que ceñirse es al tema decidido.
Iré manteniendo una lista en este post con los participantes en cada kata, usuario, tecnología y código fuente.
Al principio votaremos katas ya propuestas en otras webs,blogs, foros... etc y cuando vayamos rodados y si el post sobrevive intentaremos picar ideas propias.
Recursos de katas ya propuestos
http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue
http://codekata.pragprog.com/#entry-15485148
Tecnología
Se puede usar el lenguaje que se quiera y la tecnología que queramos. Hay que recordar que el propósito de estos ejercicios es poder des-oxidarse, mantenerse fuerte, mejorar puntos flojos y aprender con la ayuda de todos.
Temas
Desde aplicativos de gestión de <inserte aqui algo>, hasta código sobre algoritmos, estructuras de datos, juegos, IA, p2p... proponed lo que se os pase por la cabeza aunque no tengais ni idea del tema, si un tema es muy extenso podemos repartirnos katas mas pequeños entre los participantes para crear una kata más grande entre todos.
Reglas
-
Todos los archivos fuente subidos tienen que estar hechos por ti.
-
De usar librerias de terceros, se usara en forma de dll, libs, jar... Etc.
-
Librerias, frameworks y demás que se usen, tienen que ser de código abierto.
-
No se puede usar codigo que te encuentres por los internets.
Kata 12/04/2012 Números Romanos
El programa a realizar debe admitir como parámetro de entrada un número entero positivo mayor que 0 y menor que 4000. Los romanos tenian como regla no repetir más de 3 veces seguidas un símbolo numérico, por lo que no se puede poner MMMM para el 4000, así que no se puede poner. Y no vamos a usar símbolos avanzados.
Se usarán los símbolos siguientes:
-
I -> 1
-
V -> 5
-
X -> 10
-
L -> 50
-
C -> 100
-
D -> 500
-
M -> 1000
Reglas:
-
Se pueden repetir hasta un máximo de 3 veces seguidas los símbolos I, X, C y M
-
No se pueden repetir los símbolos V,L,D
-
Elementos de sustracción I -> V,X | X -> L,C | C -> D,M
-
No pueden sustraer de los símbolos V, L y D
Código finalizado:
-
#45 oip C
-
#46 elkaoD LISP
-
#51 Khanser Java
-
#52 eisenfaust LISP
-
#53 Nucklear Python
-
#57 LOc0 PHP
-
#64 Nucklear Ruby
-
#69 Duronman C
Kata 23/04/2012 Server Chat
Esta Kata finalizará el día 7 de Mayo, no se podrá subir código hasta como máximo el día 5 de Mayo.
El programa a realizar será un servidor para un cliente de Chat que haremos en la próxima Kata. Éste servidor seguirá un protocolo de comunicación basado en mensajes de texto enviados por TCP. Para el protocolo os podeis basar por ejemplo, en el propuesto en #146
Código finalizado:
-
#205 oip Java
-
#215 Nucklear Python
-
#218 elkaoD Clojure