34567,填在圆圈里,使每条线上三个数的和相等

在业主群里,有邻居问一道数学题,34567,填在圆圈里,使每条线上三个数的和相等?如下图所示:

要求是至少给出三对

4567,填在圆圈里,使每条线上三个数的和相等"

这位邻居很是心急,一道也没做出来,对于程序员来讲,其实不难,借助于计算机很容易实现,于是用js简单地实现了。

 

var arr = [3,4,5,6,7];
var size = arr.length;
var maxLength = 3;
var t = Array();
var tmp = [];
var i = 0;
for(var a=0;a<size;a++){
	for(var b=0;b<size;b++){
      tmp = [];
		for(var d=0;d<size;d++){
          if (b!=a && b!= d && a!=d){
                  tmp.push(arr[a]);
                  tmp.push(arr[b]);
                  tmp.push(arr[d]);
            	  if (tmp.length == maxLength){
                    t[i] = tmp;
                    i++;
                    tmp=[];
                  }
              }
		}
	}

}
if (t.length > 0){
  	var tSize = t.length;
	for(var m=0;m<tSize;m++){
    	for(var n=0;n<tSize;n++){
        	if (m != n && t[m][1] == t[n][1]){
              	if (arrayEquesCount(t[m],t[n]) == 1){
              	if (t[m][0]+t[m][1]+t[m][2] == t[n][0]+t[n][1]+t[n][2]){
                	console.log(t[m]+"=="+t[n]);
                
              }
            	
            }
        }
    }
	}
}

function arrayEquesCount(arr1, arr2){
  	var count = 0;
  	var arr1Size = arr1.length;
  	var arr2Size = arr2.length;
  	for(var m=0;m<arr1Size;m++){
    	for(var n=0;n<arr2Size;n++){
        	if (arr1[m] == arr2[n]){
            	count++;
            }
        }
    }
  return count;
}

最终答案不考虑位置关系,共有24组,如下图所示:

4567,填在圆圈里,使每条线上三个数的和相等"

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

× 1 = 7

联系我们

132-0493-0970

在线咨询:点击这里给我发消息

邮件:1535604235@qq.com

工作时间:周一至周五,9:00-18:30,节假日休息

QR coce