¿Qué es?
¡Acepta el reto! es un almacén y juez en línea de problemas de programación en español que acepta soluciones en C, C++ y Java.
No es un mero listado de problemas, sino mucho más. ¡Es un corrector automático!
Si quieres poner a prueba tu habilidad programando y compararla con la de otros, ¡éste es tu sitio!
¿Por dónde empiezo?
Si no conoces este tipo de jueces, te ayudamos a resolver el primer problema para que entiendas la dinámica del uso y no cometas los errores más comunes.
Luego puedes resolver algún otro de los múltiples problemas disponibles. Si no sabes por cuál empezar, puedes recorrer las diferentes categorías o mirar el problema de la semana que te proponemos abajo. También puedes mirar lo que otros usuarios están resolviendo.
¿Aceptas el reto?
Problema de la semana
SemVer++
El versionado semántico (SemVer, por Semantic Versioning) es un esquema de numeración de versiones de software, muy utilizado especialmente en bibliotecas por reducir la pesadilla de las dependencias (dependency hell). El número de versión tiene relación directa con la compatibilidad del API, de modo que es fácil saber, de manera automática, si una determinada aplicación que depende de una versión concreta de una biblioteca podrá funcionar con una versión posterior. El número de versión tiene por tanto un significado, de ahí el nombre de versionado semántico.
Bajo este esquema, la versión de una biblioteca se compone de tres números separados por punto, cada uno con un significado, que normalmente se representan como Major.Minor.Patch. Así, por ejemplo, la versión 3.1.4 tiene como versión principal la 3, subversión 1 y revisión (o parche) 4.
Un incremento en el número principal de la versión (major) indica un cambio incompatible de API. Eso significa que, por ejemplo, una aplicación que utilice la versión 3.1.4 de una biblioteca no podrá ser compilada con la versión 4.0.0 porque la forma en la que funciona ha cambiado completamente.
Un incremento en el número de subversión (minor) indica una mejora de la librería, ampliando su funcionalidad pero no cambiando nada de lo que ya tuviera la versión previa. Por su parte, un cambio en el número de revisión (patch) indica un arreglo de algún error descubierto de la versión previa, pero sin cambios en la funcionalidad.
El problema del versionado semántico es que es imposible saber qué versión seguirá a una dada, porque podría cambiar cualquiera de los tres números. Eso sí, al menos sabemos que cuando un número cambia, los siguientes se reinician a 0.