このソースコードは、2022年2月初旬のもので、最新版ではありません。プログラミング言語Javaで書かれています。
//=====縦の二国同盟の発動
function allianceTC(){ banm=[ [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0] ];const two=2; let alliance=[0,0,0,0,0,0,0,0,0,0];
for(let i=1; i<10; i++){
for(let ii=1; ii<10; ii++){
let bid = document.getElementById( "b"+ii+i );if(bid.value == ""){banm[i][ii]=Possible(bid);} else{banm[i][ii]="0";}
}//banm[Y][T]には、可能候補が"1,3,"のように保存される。空きマスでない場合は"0"。
}
let xx=0;
for(let Y=1; Y<10; Y++){
for(let T=1; T<10; T++){
if( (banm[Y][T] != "0") ){
for(let i=T+1;i<10;i++){if( (banm[Y][T] == banm[Y][i]) && (banm[Y][T].length == 4) ){
for(let ii=1;ii<10;ii++){alliance[ii]=banm[Y][ii]};
for(let ii=1;ii<10;ii++){ alliance[ii]=alliance[ii].replace( ( banm[Y][T].substring(0,2)),"") ; }
for(let ii=1;ii<10;ii++){ alliance[ii]=alliance[ii].replace( ( banm[Y][T].substring(2,4)),"") ; }
//一字だけ残ったら、確定。
for(let ii=1;ii<10;ii++){
if(alliance[ii].length==2){ document.getElementById( "b"+ii+Y ).value = alliance[ii].substring(0,1) }
}
}
}
}
}
}where(0);fcount();location.href="#banmen";
}
//=====横の二国同盟の発動
function allianceYC(){ banm=[ [0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0] ];const two=2; let alliance=[0,0,0,0,0,0,0,0,0,0];
for(let i=1; i<10; i++){
for(let ii=1; ii<10; ii++){
let bid = document.getElementById( "b"+i+ii );if(bid.value == ""){banm[i][ii]=Possible(bid);} else{banm[i][ii]="0";}
}//banm[T][Y]には、可能候補が"1,3,"のように保存される。空きマスでない場合は"0"。
}
let xx=0;
for(let Y=1; Y<10; Y++){
for(let T=1; T<10; T++){
if( (banm[T][Y] != "0") ){
for(let i=Y+1;i<10;i++){if( (banm[T][Y] == banm[T][i]) && (banm[T][Y].length == 4) ){
for(let ii=1;ii<10;ii++){alliance[ii]=banm[T][ii]};
for(let ii=1;ii<10;ii++){ alliance[ii]=alliance[ii].replace( ( banm[T][Y].substring(0,2)),"") ; }
for(let ii=1;ii<10;ii++){ alliance[ii]=alliance[ii].replace( ( banm[T][Y].substring(2,4)),"") ; }
//一字だけ残ったら、確定。
for(let ii=1;ii<10;ii++){
if(alliance[ii].length==2){ document.getElementById( "b"+T+ii ).value = alliance[ii].substring(0,1) }
}
let XXX=banm[T][i];
let XX=banm[T][Y];
let stop=0;}
}
}
}
}where(0);fcount();location.href="#banmen";
}
//=====ブロックの二国同盟の発動
function allianceBLW(){
let startD = new Date();let start=startD.getTime();
//第1のループ=====
for(let search1=1;search1<9;search1++){let aaBL1=[ [0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0] ];
for(let BL=1;BL<10;BL++){let whitemasu=[0,0,0,0,0]; count1=EmptyCount(search1,BL,whitemasu);
if(count1==2){aaBL1[BL] [0]=BL; aaBL1[BL] [1]=whitemasu[1]; aaBL1[BL] [2]=whitemasu[2];
}
}
//第2のループ=====
for(let search2=search1+1;search2<10;search2++){let aaBL2=[ [0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0] ];
for(let BL=1;BL<10;BL++){let whitemasu=[0,0,0,0,0]; count2=EmptyCount(search2,BL,whitemasu);
if(count2==2){aaBL2[BL] [0]=BL; aaBL2[BL] [1]=whitemasu[1]; aaBL2[BL] [2]=whitemasu[2];
}
}
//search1で空きマスが2個のブロックを探す…B1(aa,bb),B2(cc,dd)…。(B1,aa,bb)として保存。
//search2で空きマスが2個の(B1,aa,bb)を探す…B1(aa,bb),B2(cc,dd)…。(B1,aa,bb)として保存。
//第3のループ=====
for(bli=1;bli<10;bli++){
if( (aaBL1[bli][0]==aaBL2[bli][0]) && (aaBL1[bli][1]==aaBL2[bli][1]) && (aaBL1[bli][2]==aaBL2[bli][2]) && (aaBL1[bli][0]!=0) ){
for(let search3=1;search3<10;search3++){let aaBL3=[ [0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0] ];
for(let BL=1;BL<10;BL++){let whitemasu=[0,0,0,0,0];if( (search3==search1) || (search3==search2) ){break;} count3=EmptyCount(search3,BL,whitemasu);
if(count3==2){aaBL3[BL] [0]=BL; aaBL3[BL] [1]=whitemasu[1]; aaBL3[BL] [2]=whitemasu[2];
if( (aaBL3[bli][1]==aaBL1[bli][1]) || (aaBL3[bli][1]==aaBL1[bli][2]) || (aaBL3[bli][2]==aaBL1[bli][1]) || (aaBL3[bli][2]==aaBL1[bli][2]) ){
//aaB-L3[bli][1]かaa-BL3[bli][2]のどちらか1つだけが、aaBL1[bli][1]かaaBL1[bli][2]ならば、bliブロックでsearch1とsearch2の2国同盟成立。
//aaBL1[bli][1]とaaBL1[bli][2]には、search3は入れない。aaBL3[bli][1]==aaBL1[bli][1]ならば、search3はaaBL1[bli][2]に入る。
if ( aaBL3[bli][1]==aaBL1[bli][1] ){ let bname = document.getElementById("b"+aaBL3[bli][2]); bname.value=search3; } //aaBL3[bli][1]には入れられない。
else if ( aaBL3[bli][1]==aaBL1[bli][2] ){ let bname = document.getElementById("b"+aaBL3[bli][2]); bname.value=search3; } //aaBL3[bli][1]には入れられない。
else if ( aaBL3[bli][2]==aaBL1[bli][1] ){ let bname = document.getElementById("b"+aaBL3[bli][1]); bname.value=search3; } //aaBL3[bli][2]には入れられない。
else if ( aaBL3[bli][2]==aaBL1[bli][2] ){ let bname = document.getElementById("b"+aaBL3[bli][1]); bname.value=search3; } //aaBL3[bli][2]には入れられない。
else{ }
}
}
}
}
}
}
}
}
let endD = new Date();let end=endD.getTime();let time=(end-start)/1000;
}
function EmptyCount(search,BL,whitemasu){//BL内のsearchに対する空白の個数を数える。whitemasuには空白マスの座標が3個まで。
let count=0; b1199.value=BL; where(search);count=countAki(whitemasu,BL);return count;
}
//---------------
function where(search){crosskesi(search);fcount();fnone();if (search!=0){WriteNumber.value=search;}else{
candidateCLI.value="";WriteNumber.value="";fcount();}
//WriteNumber.value:マスに記入する数字
for(let i=0; i<10; i++){let bname = document.getElementById( "b"+i ); bname.style.color ="black"} //まず黒字にしておく
let bname = document.getElementById( "b"+search );bname.style.color ="red";//(search)数字ボタンを赤にする。
for(let i=1; i<10; i++){let bname = document.getElementById("dcheckR"+i);bname.value=""; }
for(let i=1; i<10; i++){let bname = document.getElementById("dcheckD"+i);bname.value=""; }
for (let BB = 11; BB < 100; BB++){
if(BB % 10 !=0){let bname = document.getElementById( "b"+BB );{if(bname.value!=""){bname.style.backgroundColor = CROSSbg;};
if (bname.disabled == false){bname.style.color = BANbaseCOLOR} else {bname.style.color = "black"}
} } }
/*search!=0には意味がある*/
for (let BB = 11; BB < 100; BB++){
if(BB % 10 !=0){let bname = document.getElementById( "b"+BB );
if(bname.value==search && search!=0){bname.style.color = "red"; cross(BB);}
}
}dcheck();fcount();writeYA(search);
//取り敢えずのパッチ
if (search==0){
for (let BB = 11; BB < 100; BB++){if(BB % 10 !=0){let bname = document.getElementById( "b"+BB );
if(bname.value==""){bname.style.backgroundColor ="white";bname.disabled = false;} }
}
}
}
//----------crosskesi whereから呼ばれる。searchはボタンの数字(1〜9)
function crosskesi(search){for(let i=1; i<10; i++){for(let ii=1; ii<10; ii++)
{ let bname = document.getElementById( "b"+i+ii );bname.style.color = "black";
if(bname.disabled == false){bname.style.backgroundColor = "white";}
else {bname.style.backgroundColor = DISABLEDbgcolor;}
} } }
//---------------
function countAki(whitemasu,bl){let BL=b1199.value; let count=0;const base=[0,11,14,17,41,44,47,71,74,77]; const plus=[0,0,1,2,10,11,12,20,21,22];
if(typeof bl !="undefined"){BL=bl;}
for(let i=1;i<4;i++){whitemasu[i]=0;};//←とwhitemasu=[0,0,0,0]は同じようだが、whitemasu=[0,0,0,0]とすると、whitemasuのスコープは、この関数内になって、外には影響しない。
for(let i=1;i<10;i++){
let bb99=base[BL]+ plus[i];let bb99ID = document.getElementById( "b"+bb99 );
if(bb99ID.style.backgroundColor=="white"){count++;if(0
最後まで読んでいただいて、ありがとうございました。