[05.08.22] Coding test

Juyeon.it·2022년 5월 8일
0

Coding test

목록 보기
27/32

ISBN-10 Validation

Description

ISBN-10 identifiers are ten digits long. The first nine characters are digits 0-9. The last digit can be 0-9 or X, to indicate a value of 10.
An ISBN-10 number is valid if the sum of the digits multiplied by their position modulo 11 equals zero.
For example:
ISBN : 1 1 1 2 2 2 3 3 3 9
position : 1 2 3 4 5 6 7 8 9 10
This is a valid ISBN, because:
(11 + 12 + 13 + 24 + 25 + 26 + 37 + 38 + 39 + 910) % 11 = 0
Examples
1112223339 --> true
111222333 --> false

My answer

function validISBN10(isbn) {
  if (!(/^\d{9}[\d|X]$/.test(isbn))) { return false }
  
  let sum = 0;
  let arr = [...isbn];
  for (let i = 0; i < arr.length; i++) {
    sum += (arr[i] === 'X') ? (10 * (i+1)) : (arr[i] * (i+1))
  }
  return (sum % 11 === 0) ? true : false;
}

Other solutions

function validISBN10(isbn) {
  var len = isbn.length;
  
  if (len !== 10) {
      return false;
  }
  
  return isbn.split('')
      .map(function (num, index) {
         return (num === 'X' && index === len - 1 ? 10 : parseInt(num, 10)) * (index + 1); 
      })
      .reduceRight(function (a, b) {
          return a + b;
      }, 0) % 11 === 0;
}

0개의 댓글

관련 채용 정보