查看完整版本: [-- 来道Google招聘题 --]

Ruby中文社区论坛 -> 题目征集 -> 来道Google招聘题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

bbschat 2008-04-23 21:42

来道Google招聘题

找出符合下面这种模式的算式,当然数字不能以0开头

WWWDOT - GOOGLE = DOTCOM

小提示:答案有2个,M 和 E 可以互换。

我机器要跑半个小时才能出答案,有点郁闷。
看看有没有更好的解决方案。

jmouse 2008-04-24 16:45
这类题目应该先手工分析一下吧。
WWWDOT
DOTCOM
------------------
GOOGLE
第二列w-o-->o
第三列w-t-->o
第五列o-o-->l
这里面应该可以总结出不少东西,把不可能的排除掉,剩下的就算是穷举,也能秒杀了吧。

bbschat 2008-04-30 17:02
手工分析到底的话可以全部解出,不需要计算机了。
我觉得针对类似这种字符转数字的模式,
能不能写出通用的计算机求解方法是蛮有意义的一件事。
至于喜欢用笔在纸上思考解题的又是另外一种乐趣了。

alanxujian 2008-12-30 09:08
我的解法,时间还行吧。

不知道为什么,运行时会有“warning: default `to_a' will be obsolete”这个提示W=[9,8,7,6,5,4,3,2,1,0]

W.each do |w|
(W-w.to_a).each do |d|
(W-w.to_a-d.to_a).each do |g|
next if w- g != d and w - 1 - g != d
(W-w.to_a-d.to_a-g.to_a).each do |o|
next if w - o != o and w- 1 - o != o and w+10-o != o and w+10-1-o != o
(W-w.to_a-d.to_a-g.to_a-o.to_a).each do |t|
next if w - o != t and w- 1 - o != t and w+10-o != t and w+10-1-o != t
(W-w.to_a-d.to_a-g.to_a-o.to_a-t.to_a).each do |l|
next if o - l != o and o- 1 - l != o and o+10-l != o and o+10-1-l != o
(W-w.to_a-d.to_a-g.to_a-o.to_a-t.to_a-l.to_a).each do |e|
(W-w.to_a-d.to_a-g.to_a-o.to_a-t.to_a-l.to_a-e.to_a).each do |c|
next if d - g != c and d- 1 - g != c and d+10- g != c and d+10-1- g != c
(W-w.to_a-d.to_a-g.to_a-o.to_a-t.to_a-l.to_a-e.to_a-c.to_a).each do |m|
next if t - e !=m and t +10 - e != m
if w*100000+w*10000+w*1000+d*100+o*10+t-(g*100000+o*10000+o*1000+g*100+l*10+e)==d*100000+o*10000+t*1000+c*100+o*10+m
puts \"Found\"
puts \"#{w*100000+w*10000+w*1000+d*100+o*10+t}-#{g*100000+o*10000+o*1000+g*100+l*10+e}\"
#sleep 10
end
end
end
end
end
end
end
end
end
end


查看完整版本: [-- 来道Google招聘题 --] [-- top --]


Powered by phpwind v8.0 Code ©2003-2010 phpwind
Time 0.031794 second(s),query:2 Gzip enabled