Alba on Tech

Talking about technology

Kata: Sumar arrays

Empecemos con algo sencillo, para desentumecer los músculos.

Muchas veces, cuando programamos con una fecha límite, y tenemos que resolver los problemas con prisa, no nos preocupamos por el rendimiento. Como mucho, pensamos en refactorizar más adelante si hace falta. Sería muy bueno tener integradas ciertas rutinas de programación que nos permitan programar de forma más eficiente sin pensarlo.

A si que la kata que propongo es la siguiente:

Tenemos diez arrays largos, de 500 enteros cada uno.  Queremos obtener el número que obtenemos al sumar cada uno de esos 10*500=5000 enteros. Sencillo, ¿verdad?

Elige tu lenguaje de programación preferido. Y piensa dos formas distintas de obtener la suma. Por ejemplo, puedes sumar cada uno de los arrays por separado, y luego sumar los resultados. O puedes hacer sumas parciales de cada una de las posiciones de los arrays. O fundir los arrays en uno, y luego sumar todos los números. O cualquier otra forma que se te ocurra (¿una funcion recursiva tendría sentido?). Implementalas.

Ahora, mediante un bucle,  mide el tiempo que tarda en ejecutarse 1000 veces cada una de ellas.

¿Cuales son los resultados? ¿La forma que pensabas que sería más rápida, lo era de verdad?

Bonus I: A la vista de los resultados, ¿se te ocurre una tercera forma capaz de conseguir un mejor rendimiento?

Bonus II: Repite el ejercicio en un lenguaje en el que nunca hayas programado

Y recuerda,  no se trata de un concurso. Se trata de una kata. Practica y mejora. Siempre

Advertisements

27 October, 2011 - Posted by | Kata

6 Comments »

  1. La he hecho de tres formas diferentes en python y efectivamente los resultados han sido sorprendentes 🙂

    Comment by Alejandro Alonso | 27 October, 2011 | Reply

  2. Yo ya tengo una en C++, eso si, sin wrapper para python y da resultados prometedores 😛

    Comment by Andrei Antoukh (@niwibe) | 28 October, 2011 | Reply

  3. Código??? Tiempos???

    Comment by David Barragán (@bameda) | 29 October, 2011 | Reply

  4. Aquí va la de clojure: http://pastebin.com/YjBhqr61
    Y aquí la simple en C++: http://www.niwi.be/paste/42/

    La de clojure me ha costado un poco hacerla, pero al final he conseguido, curioso lenguaje de la familia de lisp sobre la jvm, en cierto modo me ha gustado.

    Comment by Andrei Antoukh (@niwibe) | 29 October, 2011 | Reply

  5. […] kaleidos.net se nos planteaba una kata muy interesante que transcribo a […]

    Pingback by Kata: Sumar Arrays (en C y Common Lisp) | Mi Pensadero | 1 November, 2011 | Reply


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: