#retosMSDN: Reto 4 – Mezclando con eficiencia en C#

¡Por fin es viernes! Y como prometimos, ¡ya tienes aquí el cuarto de nuestros #retosMSDN!

Esta vez el reto está basado en una idea que nos ha dado @maktub82. ¡Muchas gracias Sergio!

 

El Reto

Crea un método que dada una lista de elementos devuelva dicha lista con todos sus elementos mezclados de manera aleatoria, y de manera que ningún elemento esté en la misma posición que en la lista original.

 

Puedes apoyarte en los tests unitarios incluidos en este proyecto de Visual Studio 2013 que puedes descargarte de GitHub para verificar que tu implementación es correcta (teniendo en cuenta que los tests no van a probar que de verdad el orden es aleatorio, sólo las otras condiciones que tiene que cumplir la lista mezclada resultante).

 

¡Ah! Y queremos que la ejecución del método sea lo más rápida posible.

 

La Solución

¿Ya lo has resuelto? Comparte con nosotros tu solución de Visual Studio en esmsdn@microsoft.com.

El viernes de la semana que viene, el día 24 de octubre, publicaremos la solución que nosotros proponemos para el reto. ¿Será la tuya más rápida que la nuestra? De entre todas las soluciones que nos enviéis durante la semana publicaremos las más rápidas de todas.

¡Actualización! Solución al Reto 4 – Mezclando con eficiencia en C#

 

¿Sabías que…

… con Test Explorer de Visual Studio puedes por un lado ver el tiempo que tardan en ejecutarse los Test Unitarios y la salida de los mensajes que escriban por consola…

image

… y por otro lado depurarlos, analizar el código que cubren o ejecutar el Profiler para analizar su rendimiento?

image

Aquí puedes encontrar más información que te será de utilidad para resolver este reto:

Walkthrough: Creating and Running Unit Tests for Managed Code

Running Unit Tests with Test Explorer

 

Si tienes cualquier duda o problema durante la resolución del reto, o si quieres proponer tu propio reto para retar al resto de la comunidad, no dudes en ponerte en contacto con nosotros.

Un saludo,

Alejandro Campos Magencio (@alejacma)

Technical Evangelist

PD: Mantente informado de todas las novedades de Microsoft para los desarrolladores españoles a través del Twitter de MSDN, el Facebook de MSDN, el Blog de MSDN y la Newsletter MSDN Flash.