求一JS算法,高效率的算法

一把编程的菜刀 2017-03-07 10:00:04
求一算法:有ABCD组成的一串数字,其中得知以下7个条件:A排除012,B排除246,C排除347,D排除257,A+B排除01,B+C排除123,C+D排除04,并且7个条件允许可以错2个条件,即容错2,求ABCD组成的数字
...全文
369 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-03-07
  • 打赏
  • 举报
回复
abcd各代表0到9一个数字么?
  • 打赏
  • 举报
回复
daswcszxw 2017-03-07
  • 打赏
  • 举报
回复
厉害了我的哥,我也琢磨琢磨,跟着学习。
天际的海浪 2017-03-07
  • 打赏
  • 举报
回复

var arr = [];
for (var i = 0; i <= 9999; i++) {
	var str = ("000"+i).slice(-4);
	var f = 0;
	if ("012".indexOf(str[0])>=0) f++;
	if ("246".indexOf(str[1])>=0) f++;
	if ("347".indexOf(str[2])>=0) f++;
	if ("257".indexOf(str[3])>=0) f++;
	if ("01".indexOf((str[0]*1+str[1]*1)%10)>=0) f++;
	if ("123".indexOf((str[1]*1+str[2]*1)%10)>=0) f++;
	if ("04".indexOf((str[2]*1+str[3]*1)%10)>=0) f++;
	if (f<=2) arr.push(str);
}
//console.log(arr);
document.write(arr.join("<br>"));
  • 打赏
  • 举报
回复
引用 5 楼 jslang 的回复:
A+B排除01 这个A+B是数值相加,还是字符串相加?
比如5+7=12,这里取最右边一个,即取2
  • 打赏
  • 举报
回复
引用 5 楼 jslang 的回复:
A+B排除01 这个A+B是数值相加,还是字符串相加?
相加
天际的海浪 2017-03-07
  • 打赏
  • 举报
回复

var arr = [];
for (var i = 0; i <= 9999; i++) {
	var str = ("000"+i).slice(-4);
	var f = 0;
	if ("012".indexOf(str[0])>=0) f++;
	if ("246".indexOf(str[1])>=0) f++;
	if ("347".indexOf(str[2])>=0) f++;
	if ("257".indexOf(str[3])>=0) f++;
	if ("01".indexOf(str[0]*1+str[1]*1)>=0) f++;
	if ("123".indexOf(str[1]*1+str[2]*1)>=0) f++;
	if ("04".indexOf(str[2]*1+str[3]*1)>=0) f++;
	if (f<=2) arr.push(str);
}
//console.log(arr);
document.write(arr.join("<br>"));
天际的海浪 2017-03-07
  • 打赏
  • 举报
回复
A+B排除01 这个A+B是数值相加,还是字符串相加?
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
abcd各代表0到9一个数字么?
是的
乔乔这先生 2017-03-07
  • 打赏
  • 举报
回复
题目有点难看懂

87,899

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧