#!/usr/bin/env node
var oneToNine = [1,2,3,4,5,6,7,8,9];
// var patterns = makePatterns(oneToNine);
// patterns.filter(function(val, i, arr){
//
// });
function makePatterns(arr){
var len = arr.length;
// パターンをまとめる配列の初期化
var patterns = [];
// このパターンの配列を初期化
var n;
// 配列の各要素ごとに行う
for(var i=0;i<len;i++){
var n = (i) ? 2 : 1;
while(i+n<=len){
var pattern = [];
for(var j=0;j<len;j++){
if(j >=i && j < i+n){
if(j===i && n<len){
var cloned = arr.concat();
var combined = parseInt(cloned.splice(j, n).join(''));
pattern.push(combined);
}
} else {
pattern.push(arr[j]);
}
}
if(pattern.length) patterns.push(pattern);
n++;
}
}
return patterns;
}
function calculate(arr){
var intAr = arr.map(function(val){
return parseInt(val);
});
var anss = [];
for(var i=0,l=arr.length;i<l;i++){
var n = (i) ? i-1:0;
while(n<l-1){
var ans = '';
for(var j=0;j<l;j++){
if(j == l-1) {
ans += intAr[j];
continue;
}
if(j >= i && j <= i+n){
ans += intAr[j] + '+';
} else {
ans += intAr[j] + '-';
}
}
console.log('i', i, 'n', n, 'ans', ans);
anss.push(ans);
n++;
}
}
return anss;
}
var ex = [1, 2, 3, 4];
var p = calculate(ex);
console.log(p);
/*
元の配列 [1 2 3]
配列から切り分けられる要素 [1]
作成するpattern [1, 2, 3]
配列から切り分けられる要素 [12]
作成するpattern [12, 3]
配列から切り分けられる要素 [123]
作成するpattern [123]
配列から切り分けられる要素 [23]
作成するpattern [1, 23]
増えるもの
- 切り取る要素の数 n..len
- 対象となる要素 index..len
*/