Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo chuỗi n cái nhìn và nói số đầu tiên trong JavaScript

Vấn đề

Trong toán học, chuỗi nhìn và nói là chuỗi các số nguyên bắt đầu như sau -

1, 11, 21, 1211, 111221, 312211, …

Để tạo một thành viên của dãy từ thành viên trước đó, chúng tôi đọc bớt các chữ số của thành viên trước đó, đếm số chữ số trong các nhóm có cùng một chữ số.

Ví dụ:số tiếp theo của 1211 là -

111221

Bởi vì nếu chúng ta đọc chữ số 1211 to hơn thì nó sẽ -

One one, one two, two one which gives us 111221

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một số n và trả về n số hạng đầu tiên của chuỗi giao diện nhìn và nói.

Ví dụ

Sau đây là mã -

const num = 12;
const generateSequence = (num = 1) => {
   const lookAndSay = (val) => {
      let res = '';
      let chars = (val + ' ').split('');
      let last = chars[0];
      let count = 0;
      chars.forEach(c => {
         if(c === last){
            count++;
         }else{
            res += (count + '') + last;
            last = c;
            count = 1;
         };
      });
      return res;
   }
   let start = 1;
   const res = [];
   for(let i = 0; i < num; i++){
      res.push(String(start));
      start = lookAndSay(start);
   };
   return res;
};
console.log(generateSequence(num));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[
   '1',
   '11',
   '21',
   '1211',
   '111221',
   '312211',
   '13112221',
   '1113213211',
   '31131211131221',
   '13211311123113112211',
   '11131221133112132113212221',
   '3113112221232112111312211312113211'
]