- Intenta no leer el enunciado completo antes de empezar, ve leyendo poco a poco mientras lo resuelves.
- Haz sólo una tarea a la vez. El truco está en aprender a trabajar de forma incremental.
- Asegúrate de testear únicamente las entradas correctas. No es necesario testear las entradas incorrectas para esta kata.
- Crea una String Calculator con el método:
def add (numbers: string) -> int
- El parámetro del método puede contener 0, 1 o 2 números y devolverá su suma (para un string vacío devolverá 0). Por ejempo: "" o "1" o "1,2"
- Compieza por un test simple para un string vacío y luego para 1 y 2 números.
- Recuerda resolver el problema de la manera más simple posible para que te fuerce a escribir las pruebas que aún no se te habían ocurrido.
- Recuerda refactorizar después de conseguir pasar cada test.
- Permite al metodo "Add" manejar cualquier cantidad de números.
- Permite al método "add" manejar saltos de línea entre números en lugar de usar comas.
- La siguiente entrada es correcta: "1\n2,3" (el resultado será 6)
- La siguiente entrada NO es correcta: "1,\n" (no hace falta que la pruebes, es simplemente para clarificar)
- Soporta diferentes delimitadores
- Para cambiar un delimitador, el comienzo del string debe contener una línea separada que sea como esta: "//[delimitador]\n[números...]". Por ejemplo: "//;\n1;2" debe dar como resultado 3 donde el delimitador por defecto es ";".
- La primera línea es opcional. Todos los escenarios existentes hasta ahora, deben estar soportados.
- Llamar al método "Add" con números negativos deberá lanzar una excepción con el texto "negativos no soportados" y el número negativo que ha sido pasado. Si hay múltiples números negativos, muestra todos ellos en el mensaje de la excepción.
- Los numeros mayores de 1000 deben ser ignorados. Por ejemplo "2,1001" dará como resultado 2.
- Los delimitadores pueden ser de cualquier longitud con el siguiente formato: "//[delimiter]\n". Por ejemplo: "//[***]\n1***2***3" debe dar como resultado 6.
- Permite múltiples delimitadores de la siguiente manera: "//[delim1][delim2]\n". Por ejemplo: "//[*][%]\n1*2%3" debe dar como resultado 6.
- Asegúrate de que puedes manejar delimitadores de cualquier longitud mayor de un caracter.