Il tuo compito è scrivere un programma o una funzione che determini se un numero è divisibile per un altro. Il trucco è che dovrebbe dare una risposta il più presto possibile , anche se non sono state fornite tutte le cifre del numero.
Il tuo programma dovrebbe prendere un numero intero D ≥ 2 e quindi una serie di cifre come input. Questi rappresentano le cifre di un altro numero intero N ≥ 1, iniziando dalla cifra meno significativa. Al primo punto che N sia necessario o non deve essere divisble da D , il programma dovrebbe uscita la risposta appropriata e uscire. Se viene raggiunta la fine dell'input, dovrebbe uscita se l'intero N è divisibile per D .
Ecco un elenco di formati di input accettabili per N (lascia un commento se pensi che dovrebbe essere consentito qualcosa che non è incluso):
Input standard : le cifre sono indicate su righe separate; la fine dell'input è EOF o un valore speciale; exit indica che la funzione ritorna o il programma esce.
Ingresso analogico : tramite ad esempio sequenze di tasti o dieci pulsanti che rappresentano ciascuna cifra; la fine dell'input è un valore speciale; exit indica che la funzione ritorna o il programma esce.
Funzione con stato globale : chiamata ripetutamente con cifre successive; la fine dell'input è un valore speciale; exit indica che la funzione restituisce un valore non nullo. Se si utilizza lo stato globale, è necessario cancellarlo dopo la restituzione di un valore o in caso contrario ripristinarlo in modo tale che la funzione funzioni più volte .
Funzione al curry : restituisce un'altra funzione da chiamare con la cifra successiva o un valore; la fine dell'input è un valore speciale o chiama la funzione senza argomento; exit indica che la funzione restituisce una risposta anziché un'altra funzione.
Prompt della GUI o simile : visualizzato ripetutamente; la fine dell'input è "annulla" o equivalente, o un valore speciale; exit indica che i prompt non vengono più visualizzati.
Funzione Iteratore : input è un oggetto o una funzione stateful che restituisce la cifra successiva quando viene chiamato, la fine dell'ingresso è un'eccezione o un valore speciale; exit indica che l'iteratore smette di essere chiamato.
L'input per D e l'output possono essere eseguiti con qualsiasi metodo standard accettabile .
Casi test:
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
input con un valore speciale per EOF?
[]
e [2]
niente di ritorno diverso false
o true
(tra cui la stessa funzione, ecc ...), mentre [2,3]
, [2,3,1]
e [2,3,1,EOF]
ritorno true
. Mi sembra il più vicino all'opzione dello stato globale.