TIL 2018-08-08
오늘 배운 것 & 한 것
1. sports
겨우 풀었다.. 문자열 길이만큼 키 만든 후 섞은 다음 다시 문자열에 매칭시키고 set로 중복 제거하면 되는데, 섞는 부분이 굉장히 어려웠다.
아래는 답 코드:
SPOILER</summary>
var keys;
function permutations(string) {
let chars = string.split('');
let arr = [...Array(string.length).keys()];
keys = arr;
let sets = new Set([...keys]);
let combis = getCombis(arr, 0, sets, '');
console.log(combis);
let ans = [];
combis.forEach(e=>{
let target = [];
if(e.length!=keys.length){
target = [...e.split(',')];
}
else target = [e];
ans.push(target.map(i=>{
return i.split('').map(x=>string[x]).join('');
}))
});
ans = ans.reduce((acc, val) => acc.concat(val), []);
console.log([...new Set(ans)]);
return [...new Set(ans)];
}
function getCombis(arr, currentIndex, currentSets, str){
if(currentIndex == arr.length) return (str + [...currentSets]);
let index, sets,ks;
[index, sets] = [currentIndex, currentSets];
let ans = [];
[...sets].forEach((e,i,a)=>{
ks = [...keys];
if(sets.has(e)){
sets.delete(e);
ans.push([getCombis(arr, index+1, sets, str+e)].join(''));
sets.add(e);
}
});
return ans;
}
</details>
2. meta
새 snippet 만듬.
"Collapsible Block": {
"prefix": "collapsibleBlock",
"body": [
"\r",
"<details><summary>${1:spoiler}</summary>\r",
"${0}",
"</details>"
],
"description": "Collapsible block"
}
ativ에서 세팅 다운받으려 했는데 실수로 업로드함.
dep
ref
var keys;
function permutations(string) {
let chars = string.split('');
let arr = [...Array(string.length).keys()];
keys = arr;
let sets = new Set([...keys]);
let combis = getCombis(arr, 0, sets, '');
console.log(combis);
let ans = [];
combis.forEach(e=>{
let target = [];
if(e.length!=keys.length){
target = [...e.split(',')];
}
else target = [e];
ans.push(target.map(i=>{
return i.split('').map(x=>string[x]).join('');
}))
});
ans = ans.reduce((acc, val) => acc.concat(val), []);
console.log([...new Set(ans)]);
return [...new Set(ans)];
}
function getCombis(arr, currentIndex, currentSets, str){
if(currentIndex == arr.length) return (str + [...currentSets]);
let index, sets,ks;
[index, sets] = [currentIndex, currentSets];
let ans = [];
[...sets].forEach((e,i,a)=>{
ks = [...keys];
if(sets.has(e)){
sets.delete(e);
ans.push([getCombis(arr, index+1, sets, str+e)].join(''));
sets.add(e);
}
});
return ans;
}
"Collapsible Block": {
"prefix": "collapsibleBlock",
"body": [
"\r",
"<details><summary>${1:spoiler}</summary>\r",
"${0}",
"</details>"
],
"description": "Collapsible block"
}
Comments