鍍金池/ 問答/HTML/ javascript 進(jìn)行組合,C(M,1),m數(shù)量是不確定的,應(yīng)該如何解決?

javascript 進(jìn)行組合,C(M,1),m數(shù)量是不確定的,應(yīng)該如何解決?

題目描述

我看到其他人提到一個問題,還有下邊的答案,感覺非常有興趣,就把題目改編了

題目來源及自己的思路

題目原本是這樣的,`var wordList = [

[{'熱烈'}, {'萬分'}, {'非常'}, ''],
[{'歡迎'}, {'感謝'}, {'謝謝'}],
[{'您'}, {'親'}, {'老板'}, {'大神'}, ''],
[{'光臨'}, {'惠顧'}, {'支持'}],
[{'小店'}, {'本店'}, {'火女菜館'}]

];`

你期待的結(jié)果是什么?

如何把這個全都組合起來呢,相同行的不能組成一個,比如:熱烈 感謝 老板 支持 小店(每行取一個)這是正確的。

但是熱烈 萬分 謝謝 大神 支持,這樣是錯誤的

每次要提取的數(shù)量m,是不一定的,比如m=5,就是熱烈 感謝 老板 支持 小店
m=4,就是 熱烈 感謝 老板 支持

熱烈 感謝 老板 小店
熱烈 老板 支持 小店
感謝 老板 支持 小店

這樣的,當(dāng)然還有很多種,都沒有一一列出來,這種計算應(yīng)該如何達(dá)成呢?

組成的應(yīng)該是這樣的:[{'熱烈'},{'感謝'},{'老板'},{'支持'},{'小店'}]
回答
編輯回答
膽怯

改成這樣該如何做:

let wordList=[
{"name":"熱烈","id":1},{"name":"萬分","id":2},{"name":"非常","id":3},
{"name":"歡迎","id":1},{"name":"感謝","id":2},{"name":"謝謝","id":3},
{"name":"您","id":2},{"name":"親","id":1},{"name":"大神","id"1}
]

id相同的不能組合為一組,共有多少種組合的方式,同樣M是不確定的,從這些組種選擇M個想組合,該如何代碼

2018年5月4日 15:46
編輯回答
獨(dú)特范
import * as _ from 'lodash';
var wordList = [
    ['熱烈', '萬分', '非常'],
    ['歡迎', '感謝', '謝謝'],
    ['您', '親', '老板', '大神'],
    ['光臨', '惠顧', '支持'],
    ['小店', '本店', '火女菜館']
];
var sentence=_.map(wordList,_.sample).join('');
2018年6月27日 01:27
編輯回答
舊時光
let wordList = [
    ['熱烈', '萬分', '非常'],
    ['歡迎', '感謝', '謝謝'],
    ['您', '親', '老板', '大神'],
    ['光臨', '惠顧', '支持'],
    ['小店', '本店', '火女菜館']
];

let M = 4;

/** @example cross([[1]], [2,3]) // [[1,2], [1,3]] */
let cross = (a1, a2) => a1.reduce((r, s1) => r.concat(a2.map(s2 => [...s1, s2])), []);
//還可以這么寫
//let cross = (a1, a2) => [].concat(...a1.map(s1 => a2.map(s2 => [...s1, s2])));

let result = wordList.slice(0, M).reduce(cross, [[]]);

//回答追問

let wordList=[
    {"name":"熱烈","id":1},{"name":"萬分","id":2},{"name":"非常","id":3},
    {"name":"歡迎","id":1},{"name":"感謝","id":2},{"name":"謝謝","id":3},
    {"name":"您","id":2},{"name":"親","id":1},{"name":"大神","id":1}]
    
wordList = wordList.reduce((r, o)=>(r[o.id-1]=(r[o.id-1]||[]).concat(o.name),r),[]);

//然后按之前的步驟解決
2018年9月20日 14:09