const {uniq} = require('lodash');
function makeLine(n = 4) {
let r = {}, t = [];
function _(n) {
const melds = [];
if (n == 0) {
const meld = 'A23456789TJQKA'.split('');
const meldLen = meld.length;
for (let width = 3, j = meldLen; width < j; width++) {
for (let i = 0, j = meldLen - width + 1; i < j; i++) {
let line = meld.slice(i, width + i);
let lastCard = line[line.length - 1];
if (lastCard === 'A') {
line.pop();
line.splice(0, 0, lastCard);
}
melds.push(line.join(''));
}
}
} else {
_(n - 1).forEach(line=>{
if (line.length > 1) { // 必须要有一个真实的值参与顺子计算
let lineArr = line.split('');
for (let i = 0, j = lineArr.length;i < j;i++) {
let c = lineArr.slice();
c[i] = '*';
let s = c.join('').replace('*', '');
melds.push(s);
}
}
});
}
t[n] = uniq(melds);
// hash
t[n].forEach(s=>{
if (r[s] === undefined) {
r[s] = n;
}
});
return t[n];
}
_(n);
return r;
}