Su tarea es escribir un programa o función que determine si un número es divisible por otro. El problema es que debe dar una respuesta lo antes posible , incluso si no se han dado todos los dígitos del número.
Su programa debe tomar un número entero D ≥ 2 y luego una serie de dígitos como entrada. Estos representan los dígitos de otro número entero N ≥ 1, comenzando en el dígito menos significativo. En el primer punto que N sea debe o no debe ser divisible por D , el programa debería devolver la respuesta apropiada y salida. Si se alcanza el final de la entrada, se debe de salida si el total N es divisible por D .
Aquí hay una lista de formatos de entrada aceptables para N (deje un comentario si cree que se debe permitir algo que no está incluido):
Entrada estándar : los dígitos se dan en líneas separadas; el final de la entrada es EOF o un valor especial; salir significa que la función regresa o el programa sale.
Entrada analógica : mediante, por ejemplo, pulsaciones de teclas o diez botones que representan cada dígito; El final de la entrada es un valor especial; salir significa que la función regresa o el programa sale.
Función con estado global : llamada repetidamente con dígitos sucesivos; El final de la entrada es un valor especial; salir significa que la función devuelve un valor no nulo. Tenga en cuenta que si usa el estado global, debe borrarse después de que se devuelve un valor o restablecerse de otra manera para que la función funcione varias veces .
Función curry : devuelve otra función que se llamará con el siguiente dígito o un valor; El final de la entrada es un valor especial o se llama a la función sin argumento; salir significa que la función devuelve una respuesta en lugar de otra función.
Solicitud de GUI o similar : se muestra repetidamente; el final de la entrada es "cancelar" o equivalente, o un valor especial; salir significa que las indicaciones dejan de aparecer.
Función de iterador : la entrada es un objeto o función con estado que devuelve el siguiente dígito cuando se llama, el final de la entrada es una excepción o un valor especial; salir significa que el iterador deja de ser llamado.
La entrada para D y la salida pueden realizarse a través de cualquier método estándar aceptable .
Casos de prueba:
2; 6 => true
5; 6 => false
20; 0 3 => false
20; 0 4 => true
100; 1 => false
100; 0 0 => true
100; 0 2 => false
4; 2 4 => false
4; 2 5 => true
4; 2 [eof] => false
4; 4 [eof] => true
625; 5 5 => false
625; 5 7 2 => false
625; 5 7 3 6 => false
625; 5 7 3 4 => true
7; 9 3 4 [eof] => false
7; 9 3 4 5 [eof] => true
140; 0 3 => false
140; 0 4 5 [eof] => false
140; 0 4 5 1 [eof] => true
14; 4 5 1 4 [eof] => false
14; 4 5 1 4 1 [eof] => true
digits
entrada con un valor especial para EOF?
[]
y [2]
de retorno que no sea nada false
o true
(incluyendo la propia función etc ...), mientras que [2,3]
, [2,3,1]
y [2,3,1,EOF]
de retorno true
. Me parece lo más cercano a la opción de estado global.