非常に身勝手な質問ですので
お時間のある方のみで結構です。
「30-seconds-of-code」という、ライブラリのバグを発見したかもしれません。その発見が正しいか否か、確かめて頂けますでしょうか。
https://github.com/Chalarangelo/30-seconds-of-code#luhncheck
以下のサイト
http://blog.livedoor.jp/enjoy_math/archives/51792472.html
を参考にした所、'19547'という数字を引数にすると、trueになるはずですが、falseになってしまいます。
そこで、github記載のコードを以下のようにすれば、正しく動作すると思いました。
(val * 2) % 9 || 9の部分を括弧で囲うように修正しました。
javascript
1const luhnCheck = num => { 2 let arr = (num + '') 3 .split('') 4 .reverse() 5 .map(x => parseInt(x)); 6 let lastDigit = arr.splice(0, 1)[0]; 7 let sum = arr.reduce((acc, val, i) => (i % 2 !== 0 ? acc + val : acc + ((val * 2) % 9 || 9)), 0); 8 sum += lastDigit; 9 return sum % 10 === 0; 10};
スターを17000ほど集めているライブラリのバグを発見したかもしれない
ということで、一人で舞い上がっておりますので、
是非とも、確かめて頂きたいです。
回答1件
あなたの回答
tips
プレビュー