张老师的生日问题(ruby版)_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 张老师的生日问题(ruby版)

张老师的生日问题(ruby版)

 2011/11/29 10:14:38  鹿鸣  http://fangu002.iteye.com  我要评论(0)
  • 摘要:一个烂大街的题,前两天刚好看到别人解这个题,用c++实现的,网上还有很多的java版的等等,我就改成了ruby版的,ruby版的程序算是比较短的了吧,还是有些函数式的影子,而不是纯粹的ruby化面向对象。小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?3月4日3月5日3月8日6月4日6月7日9月1日9月5日12月1日12月2日12月8日小明说:如果我不知道的话
  • 标签:生日 Ruby 问题 老师
一个烂大街的题,前两天刚好看到别人解这个题,用c++实现的,网上还有很多的java版的等等,我就改成了ruby版的,ruby版的程序算是比较短的了吧,还是有些函数式的影子,而不是纯粹的ruby化面向对象。

小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日
  是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?
  3月4日 3月5日 3月8日
  6月4日 6月7日
  9月1日 9月5日
  12月1日 12月2日 12月8日
  小明说:如果我不知道的话,小强肯定也不知道
  小强说:本来我也不知道,但是现在我知道了
  小明说:哦,那我也知道了
  请根据以上对话推断出张老师的生日是哪一天


ruby版程序,就是按照条件排除,把数组内值非设定的都为nil,剩下的就是张老师的生日了。

month = [3,3,3,6,6,9,9,12,12,12]  # 月份
date = [4,5,8,4,7,1,5,1,2,8] #日期

#单一日期对应月份的值全部设置为nil
date.each_index do |i|          
  month.each_index { |j| date[j] = nil  if month[j] ==month[i]  }  if date.count(date[i]) == 1
end 
 
#剩余的日期,去掉重复的
date.each do |i|
  date.each_index { |j|  date[j] = nil if  i == date[j] }  if date.count(i) ==2
end

#把日期为nil的对应月份也设置为nil
date.each_index do |i|
  month[i] = nil if date[i] == nil
end
 
#去掉重复的月份
month.each do |i|  
  month.each_index { |j|  month[j] = nil if  i == month[j] } if month.count(i) ==2
end

#月份nil对应的日期为nil
month.each_index do |i|
  date[i] = nil if month[i] == nil
end

#剩下的日期就是张老师的生日了。
print "Teacher's birthday is #{month.compact[0]}-#{date.compact[0]}"
上一篇: 关于json 下一篇: PHP学习笔记 02
发表评论
用户名: 匿名