Skip to content

Instantly share code, notes, and snippets.

@suneo3476
Created May 1, 2014 00:00
Show Gist options
  • Save suneo3476/2e059b4d4ea4ee7022ad to your computer and use it in GitHub Desktop.
Save suneo3476/2e059b4d4ea4ee7022ad to your computer and use it in GitHub Desktop.
効率の良い遠征の組み合わせを求めます。データはWikiから http://wikiwiki.jp/kancolle/?%B1%F3%C0%AC#id10 。combination関数は組み合わせを求める度に遠征データから最高率の遠征を除きます。
//燃料、弾薬、鋼材、ボーキの時給理論値
var resourceSet = [
[-32,120,0,0],
[-56,200,60,0],
[54,34,120,0],
[-31.2,72,0,0],
[111.67,133.33,13.33,13.33],
[-24,-24,0,120],
[-42,0,50,30],
[2.67,25.33,16.67,16.67],
[79.25,0,0,0],
[-12,33.33,0,20],
[-5.6,0,0,50],
[2.75,31.25,25,6.25],
[48.25,62.5,0,0],
[-7.83,40,33.33,0],
[-5.17,-5,25,33.33],
[30.2,30,13.33,13.33],
[57.33,26.67,66.67,0],
[-14.4,-6.6,60,20],
[46.33,-19.33,8.33,5],
[-8.5,-9,75,0],
[109.71,89.57,0,0],
[-33.33,-36,0,0],
[-50,-53,0,25],
[0,0,0,0],
[16.15,-3.4,7.5,0],
[-0.9,-1,0,11.25],
[-0.8,-1.6,40,0],
[-0.96,-1.92,36,14],
[-1,-2,0,4.16],
[-1,-2,0,2.08],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[-17.71,-22.29,34.29,40],
[40.44,-13.78,22.22,22.22],
[-27.64,107.64,98.18,0],
[119.31,-32.91,68.57,0]
];
//バケツ
var bucketSet = [
0,
1,
0,
0.6,
0,
0,
0,
0,
0.375,
0.333,
0.2,
0,
0.25,
0.083,
0,
0,
0,
0.1,
0,
0,
0,
0,
0,
0,
0,
0.019,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0.111,
0,
0
];
function combination(resourceData,bucketData){
//ここをかえます これは最低限ボーキ100とたまにバケツほしい場合の例です
var oil = 0; //さいていげんほしい燃料
var bullet = 0; //さいていげんほしい弾薬
var steel = 0; //さいていげんほしい鋼材
var bauxite = 100; //さいていげんほしいボーキ
var bucket = 0.1; //さいていげんほしいばけつ
var kantai = 3; //かいほうしてるかんたいのかず
var sort = 6; //けっかのそーときじゅん
//3燃料 4弾薬 5鋼材 6ボーキ 7合計 8バケツ
var result = [];
for (var i = 0; i < resourceData.length; i++) {
for (var j = i; j < resourceData.length; j++) {
for (var k = j; k < resourceData.length; k++) {
var resource = [0,0,0,0];
var resourceSum = 0;
var bucketSum = 0;
//資源の計算
for (var l = 0; l < 4; l++){
resource[l] += resourceData[i][l];
resource[l] += kantai>=2 ? resourceData[j][l] : 0;
resource[l] += kantai>=3 ? resourceData[k][l] : 0;
resource[l] = Math.floor(resource[l] * 100) / 100;
resourceSum += resource[l];
}
//バケツの計算
bucketSum = bucketData[i] + bucketData[j] + bucketData[k];
bucketSum = Math.floor(bucketSum * 100) / 100;
//閾値フィルター
if(resource[0] < oil || resource[1] < bullet || resource[2] < steel || resource[3]< bauxite) continue;
if(bucketSum < bucket) continue;
//結果に挿入
resource.unshift([(i+1), (kantai>=2 ? (j+1) : ""), (kantai==3 ? (k+1) : "")]);
resource.push(resourceSum);
resource.push(bucketSum);
result.push(resource);
}
}
}
//重複削除
for(var i = 0; i < result.length-1; i++){
for(var j = i+1; j < result.length; j++){
if(typeof result[i] === "undefined" || typeof result[j] === "undefined") continue;
if(result[i][0]==result[j][0]) result[j] = undefined;
}
}
//ソート
for(var i = 0; i < result.length-1; i++){
for(var j = i+1; j < result.length; j++){
if(typeof result[i] === "undefined" || typeof result[j] === "undefined") continue;
if(result[i][sort]<result[j][sort]){
tmp = result[i];
result[i] = result[j];
result[j] = tmp;
}
}
}
//resourceDataのデータを置換
if(result.length > 0 && typeof result !== "undefined"){
for(var i = 0; i < 3; i++){
resourceSet[ result[0][0][i]-1 ] = [0,0,0,0];
bucketSet[ result[0][0][i]-1 ] = 0;
}
}
return result;
}
function show(result){
var showNum = 10; //ひょうじけんすう
//ひょうじ
console.log("組み合わせ 燃料 弾薬 鋼材 ボーキ 資源合計 バケツ");
for(var i = 0; i < result.length && i < showNum; i++){
if(typeof result[i] === "undefined") continue;
console.log(result[i].join('\t'));
resultNum++;
}
var resultNum = 0;
for(var i = 0; i < result.length; i++){
if(typeof result[i] === "undefined") continue;
resultNum++;
}
console.log(resultNum+"件");
}
var result;
result = combination(resourceSet, bucketSet);
show(result);
result = combination(resourceSet, bucketSet);
show(result);
result = combination(resourceSet, bucketSet);
show(result);
組み合わせ 燃料 弾薬 鋼材 ボーキ 資源合計 バケツ
2,5,6 31.67 309.33 73.33 133.33 547.66 1
2,6,21 29.7 265.57 60 120 475.27 1
2,6,38 39.31 143.09 128.57 120 430.97 1
4,6,9 24.04 48 0 120 192.04 0.97
9,11,11 68.05 0 0 100 168.05 0.77
6,9,10 43.25 9.32 0 140 192.57 0.7
11,11,13 37.04 62.5 0 100 199.54 0.65
6,9,13 103.5 38.5 0 120 262 0.62
4,5,6 56.47 181.33 13.33 133.33 384.46000000000004 0.6
4,6,17 2.12 74.67 66.67 120 263.46000000000004 0.6
74件
組み合わせ 燃料 弾薬 鋼材 ボーキ 資源合計 バケツ
9,11,11 68.05 0 0 100 168.05 0.77
11,11,13 37.04 62.5 0 100 199.54 0.65
3,11,11 42.8 34 120 100 296.8 0.4
11,11,16 19 30 13.33 113.33 175.66 0.4
11,11,17 46.13 26.67 66.67 100 239.47000000000003 0.4
11,11,21 98.51 89.57 0 100 288.08 0.4
11,16,35 6.89 7.71 47.62 103.33 165.55 0.2
7件
組み合わせ 燃料 弾薬 鋼材 ボーキ 資源合計 バケツ
0件
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment