-
-
Save moreirayokoyama/2002607 to your computer and use it in GitHub Desktop.
function mod10(numbers) { | |
var multipliers = [2, 1]; | |
var multiplicands = numbers.reverse(); | |
var products = mapProducts(multiplicands, multipliers); | |
var mod = products.map( | |
function (number) { | |
return number.toString().split('').map( | |
function (str) { | |
return parseInt(str); | |
}).sum(); | |
}).sum() % 10; | |
if (mod >= 10) return 0; | |
return 10 - mod; | |
} |
huhuahuahuahuahuahua... não esquenta... usei o gist pra compartilhar um código baseado em uma conversa que tava tendo com uns amigos.
A idéia foi fazer uma comparação dessa implementação com esta aqui:
http://www.cjdinfo.com.br/solucao-javascript-calculo-digito-modulo-10
E falar das diferenças entre codificação imperativa e declarativa.
Aliás, Juan... estou fazendo o curso de Algoritmos online de Stanford... https://www.coursera.org/algo/auth/welcome
O curso inicia oficialmente dia 12, mas o conteúdo já tá disponível.
Seria legal ver uma implementação sua do módulo 10... assim, não pra ficar comparando, mas pra trocar idéias. Afinal, como a citação que o professor de Stanford usa:
"Perhaps the most important principle for the good algorithm designer is to refuse to be content."
Eu escrevi ontem
Anh?