今天遇到codewars的一道题,这是链接,讲的是关于万圣节的一个题目,简单点说,就是9个包裹,一个天平,两次称的机会,怎么找出9个包裹中唯一一个较重的包裹。
像我这种年轻时候喜欢研究难题获得存在感的蠢材,觉得很开心,因为这是我为数不多还记得答案的小学题。包裹分成三堆,取两个堆一称,可以得到哪个是比较中的一堆,然后再在这个异常的堆里选择两个称,找到嫌疑犯X。
于是我开始码代码
function pick(bags, scale) { switch(scale.weigh([bags[0],bags[1],bags[2]], [bags[3],bags[4],bags[5]])){ case 0:switch(scale.weigh([bags[6]],[bags[7]])){ case 0:return bags[8]; break; case 1:return bags[7]; case -1:return bags[6]; } break; case 1:switch(scale.weigh([bags[3]],[bags[4]])){ case 0:return bags[5]; case 1:return bags[4]; case -1:return bags[3]; } break; case -1:switch(scale.weigh([bags[0]],[bags[1]])){ case 0:return bags[2]; case 1:return bags[1]; case -1:return bags[0]; } break; } }
呵呵呵呵
觉得有点开心啊,写完第一个case,开始复制粘贴,轻松加愉快。为什么只给我了一点KATA!
于是去看best solution。
function pick(bags, scale) { bags = [bags.slice(0,3), bags.slice(3,6), bags.slice(6)]; var scaleResult = scale.weigh(bags[0], bags[2]); bags = bags[scaleResult+1]; var scaleResult = scale.weigh([bags[0]], [bags[2]]); return bags[scaleResult+1]; }
唉。
何时能长大啊,自然语言和程序语言的差别啊。
P.S.试了一下幼圆字体,着急啊。
时间: 2024-10-04 03:25:35