Che cosa significa "Il programma deve elaborare ogni carattere prima di leggere quello successivo" Significa?

0

Dal libro Pensa come un programmatore (sottolineatura mia)

The Luhn formula is a widely used system for validating identification numbers. Using the original number, double the value of every other digit. Then add the values of the individual digits together (if a doubled value now has two digits, add the digits individually). The identification number is valid if the sum is divisible by 10. Write a program that takes an identification number of arbitrary length and determines whether the number is valid under the Luhn formula. The program must process each character before reading the next one.

In senso più ampio, cosa significa elaborare ogni personaggio prima di leggere quello successivo? Cosa sembra sintatticamente? Cosa significa il contrario e cosa significa it sintatticamente?

Aggiornamento:

Per qualche background, ecco il mio tentativo di risolvere il problema (in JavaScript):

Array.prototype.sum = function() {
    var sum = 0,
        itemCount = this.length,
        i;

    for(i = 0; i <= itemCount - 1; i++) {
        sum += this[i];
    }

    return sum;
}

function validateNumberWithLuhnForumla(number) {
    var numbersArray = number.toString().split(''),
        numberCount = numbersArray.length,
        i = 0,
        isValid = false,
        doubledDigit,
        checksum,
        numbersToSum = [];


    for(i = 0; i <= numberCount - 1; i++) {
        if(i % 2 > 0 && i > 0) {
            doubledDigit = numbersArray[i] * 2;
            if(doubledDigit > 9) {
                numbersToSum.push(1, (doubledDigit - 10));
            } else {
                numbersToSum.push(doubledDigit);
            }
        }
    }

    checkSum = numbersToSum.sum();

    if(checkSum % 10 === 0) {
        isValid = true;
    }

    return isValid;
}
    
posta Levi Hackwith 18.05.2013 - 21:29
fonte

2 risposte

3

Significa che è possibile mantenere il valore di un carattere solo in memoria fino a quando non si verifica la successiva operazione di input. Questa è un'idealizzazione del comune vincolo pratico che un algoritmo deve essere in grado di elaborare input arbitrari senza richiedere quantità arbitrarie di RAM. Un semplice test pratico è: la tua soluzione funziona con una sola variabile char ?

    
risposta data 18.05.2013 - 21:49
fonte
1

Il contrario sarebbe ad esempio la lettura del numero di identificazione intero in una stringa, e quindi l'esecuzione di più passaggi sulle cifre del numero di identificazione per calcolare il checksum Luhn. La domanda ti chiede di calcolare il checksum senza guardare indietro alle cifre precedenti.

    
risposta data 18.05.2013 - 22:08
fonte

Leggi altre domande sui tag