Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การกลับลำดับคำที่มีความยาวเป็นจำนวนเฉพาะ - JavaScript

กลับลำดับตัวอักษรในคำที่มีความยาวเป็นจำนวนเฉพาะ (prime length: 2, 3, 5, 7, 11, ...)

ตัวอย่าง

// Input: 'His father is an engineer by profession'
// ความยาวคำ: His(3) father(6) is(2) an(2) engineer(8) by(2) profession(10)
// Prime lengths: 3, 2, 2, 2 → His, is, an, by
// Output: 'siH father si na engineer yb profession'

ตัวอย่างโค้ด

const str = 'His father is an engineer by profession';

const isPrime = n => {
  if (n === 1) return false;
  if (n === 2) return true;
  for (let x = 2; x < n; x++) {
    if (n % x === 0) return false;
  }
  return true;
};

const reverseString = str => str.split('').reverse().join('');

const reversePrime = str => {
  return str.split(' ').reduce((acc, val) => {
    if (isPrime(val.length)) {
      acc += reverseString(val) + ' ';
    } else {
      acc += val + ' ';
    }
    return acc;
  }, '').trim();
};

console.log(reversePrime(str));

ผลลัพธ์

siH father si na engineer yb profession