MV Coders on fire

Khanser

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

4
Gusete

Propuestas a bote pie:

  • Interseccion rayo-cubo de paquetes de rayos usando sse.
  • Implementar una lista en C++ que sea compatible con el estandar.
  • Implementar un sistema de tareas sencillo (pool de threads a lo openmp pragma for)
  • Implementar un pool de memoria.
  • Sacar por pantalla un triangulo que de vueltas usando dx11.
  • Implementar radix sort en C++.
  • Implementar diferentes operaciones sobre una lista: reverse, find, etc...

Cuando llegue a casa ire poniendo mas ejercicios tipicos de entrevistas de trabajo de C++, videojueos y sistemas en tiempo real.

#3 yo propongo ideas y luego ya vosotros coger o modificar a placer. :)

#7 a quien no? :D

6 respuestas
Khanser

#2 En vez de concretar la tecnologia en la idea, la tecnologia a usar depende del que lo implemente y de las limitaciones tecnicas. Si existiera un port en ADA de directx, cualquiera sería libre de usarlo :) Lo que esta claro es k para ese fin no te vas a poner a picar un port.Cuando llegue al pc subiré unas reglas que creo esenciales y se me han olvidado antes, a ver que os parece.

1 respuesta
N3uMaN

Yo me apunto y me quedo a la espera de la primera kata =)

Merkury

Yo voy a lurkear mas que nada, si proponéis una kata en la que yo crea que puedo aportar, contad con mi teclado :D

Khanser

Antes de ponernos con cosas como las primeras de #2, podríamos empezar con cositas simples.

Como por ejemplo:

Implementar un arbol buscando velocidad de acceso en recorridos tanto en horizontal como en transversal.
La última propuesta de #2.
Intérprete de funciones matemáticas simples para dibujarlas.
Algoritmo de raster para un polígono convexo cualquiera.

B

#2 Se ve que te mola la programación paralela.

Nice ;)

1 respuesta
Tig

¿Y por qué no cogemos Katas ya existentes en vez de proponer cosas tan específicas?

Creo que lo bonito de un Kata es que el objetivo es muy sencillo, pero lo importante es como lo enfoca cada uno. Así, podría participar desde el novato hasta el experto, y al novato le serviría más que si simplemente ve un montón de código que ni entiende porque no sabe ni que hay que hacer.

Hasta ahora sólo he hecho un Kata, una calculadora, y lo disfruté mucho porque comparaba mi solución válida con otras igualmente válidas y a veces mejores.

3 respuestas
Khanser

#8 Podemos hacer eso perfectamente y ya sacar ideas para katas nuevas cuando vayamos rodados.
Tienes alguna lista de katas? Actualizaré el primer post.

1 respuesta
Buffoncete

#9 http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue

Khanser

Iré actualizando el post principal con los recursos de katas que encontreis. De estos recursos ya podríamos proponer las katas sencillas que queramos hacer.

Yo voto por el conversor de números en base decimal a números romanos: http://codingdojo.org/cgi-bin/wiki.pl?KataRomanNumerals

zoeshadow

Estoy de acuerdo con #8 , si lo que proponéis tiene un nivel asequible, habrá muchos como yo que estemos empezando que podamos participar y aprender mas que si hacéis cosas que posiblemente no sepamos ni lo que son xD

tracker086

Me parece una idea genial, y me encantaría participar! Eso si me gusta mucho el enfoque de #8!!

Khanser

#4 #5 #7 #8 #11 #12 #13
De los katas que hay aqui:
http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue
http://codekata.pragprog.com/#entry-15485148

Cuales os atraen más? Vamos a empezar con las votaciones a ver si despues de la primera kata la peña se anima más.

Edit: #2 tu tmb XD

2 respuestas
N3uMaN

Mi voto va para KataRomanNumerals.

1 respuesta
Merkury

#14 El mio también y lo podíamos hacer mas divertido, mezclandolo con KataFizzFuzz que son faciletes y entretenidos

tracker086

#14 Mi voto para el primero también es el de #15 KataRomanNumerals

Parece facilillo y entretenido para empezar

Khanser

A ver si con 1 día más aparece más gente, pensé que esto tendría más acogida, al menos entre los que ya habian comentado en el hilo xD

B

Yo me apunto sin duda. Pero empecemos con algo sencillo, no me hagáis pensar mucho xDDD.

Lo de decimal to roman lo veo bien :)

ItNaS

me apunto!

1 respuesta
Scottie

yo me apuntaría, pero por ejemplo de lo que dijo #2 la mayor parte de las cosas ni me acerco... :(

1 respuesta
Khanser

#20 y #21 pues votad, que estamos votando xD
Aunque parece que van a ganar los números romanos.

Olvidad lo que ha dicho #2 hasta más adelante XD

ItNaS

voto por KataNumberToLCD

Scottie

numeros romanos pues xDD

EnZo

Numeros romanos, aunque no sé si podré participar

B

Puedo apuntarme? Qué nivel hay que tener?

PD perdón, había leído #1 y #2 y me había espantado. Al nivel de los de la lista me da igual, pero los de #2 se escapan de mi capacidad.

1 respuesta
Khanser

#26 vota! votad coño! XD que manía teneis de comentar y no votar :p

1 respuesta
B

#27 xD pues es que me da igual, pero la de los números romanos mismamente.

MrTurbo

Venga, otro que vota por lo de los números romanos!

HaxeR

Muy buena iniciativa, me apunto! . Espero que se empiece por algo realmente simple y los que somos nuevos en este tipo de actividades vayamos aprendiendo la mecánica poco a poco.

Mi voto también para los números romanos.

pd: Supongo que no habrá problema a la hora de elegir el lenguaje no? Soy desarrollador web, básicamente de php + javascript, aunque haya tocado otros lenguajes, solo me defiendo en estos :P

1 respuesta