Hướng dẫn javascript combination generator - trình tạo kết hợp javascript

Ngày 12 tháng 8 năm 2016 • 1 phút Đọc 1 min read

Một điều tôi thấy tôi cần theo thời gian trong bất kỳ ngôn ngữ lập trình nào là sự kết hợp và hoán vị của danh sách. Một số ngôn ngữ như Python bao gồm nó trong thư viện tiêu chuẩn của họ, nhưng hầu hết thời gian, tôi thấy hữu ích khi giữ một triển khai tiện dụng mà tôi có thể tham khảo.

Đây là của tôi bằng cách sử dụng các tính năng ES6 mới nhất, bao gồm cả máy phát điện. Có sự kết hợp trong máy phát điện là hữu ích khi bạn chỉ cần một số lượng hạn chế trong số chúng. Nó có thể giúp cải thiện hiệu suất khá nhiều.

const combinations = function*[elements, length] {
  for [let i = 0; i < elements.length; i++] {
    if [length === 1] {
      yield [elements[i]];
    } else {
      let remaining = combinations[elements.slice[i + 1, elements.length], length - 1];
      for [let next of remaining] {
        yield [elements[i], ...next];
      }
    }
  };
}

Kiểm tra jsfiddle này để xem nó trong hành động.

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

// abc -> [], a, b, c, ab, ac, bc, abc
function*powerSet[l]{* powerSet [l] {
for[letiofArray[1 [let i of Array[1 i & 1 ab, ac, bc
function*combinations[l,k]{* combinations [l, k] {
if[k [k ABC, BAC, BCA, ACB, CAB, CBA [x, ...set]
}
// abc, 2 -> ab, ac, bc
function*combinations[l,k]{* combinations [l, k] {
for[letsetofkSubSets[l,k]] [let set of kSubSets[l, k]]
yield*permutations[set]* permutations[set]
}

Bài Viết Liên Quan

Chủ Đề