`
鹿鸣
  • 浏览: 4791 次
  • 来自: 吉林
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

    博客分类:
  • 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]}"
分享到:
评论

相关推荐

    生日问题编程仿真

    生日问题是指,如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要...

    Python版生日代码、生日祝福代码、生日快乐代码(完整)

    在Python编程语言中,我们可以利用其丰富的库和功能来创建有趣的项目,比如制作一个生日祝福程序。本项目的核心是利用Python的图形库,如Turtle,来绘制生日蛋糕,并通过用户输入来定制祝福对象和祝福语,使得这个...

    Python版生日代码、生日祝福代码、生日快乐代码

    用python画生日蛋糕,并可自行设置生日祝福对象及祝福语。

    五张卡片猜生日简化版.exe

    五张卡片猜生日简化版.exe

    HTML生日祝福代码,网页版生日祝福信,女朋友生日祝福代码

    最后,这个"网页版生日祝福信"可以打包成一个压缩文件,如`happy-birthday-master.zip`,包含HTML文件、图片、音频和其他相关资源,方便发送给收件人。对方只需解压后在浏览器中打开HTML文件,就能看到这份精心制作...

    html好看的生日祝福,生日表白(源码+使用说明).zip

    html好看的生日祝福,生日表白(源码).zip 代码完整,下载可用。小白也可实战。 html好看的生日祝福,生日表白(源码).zip 代码完整,下载可用。小白也可实战。html好看的生日祝福,生日表白(源码).zip 代码完整,...

    生日祝福_C++_生日祝福_

    在本项目中,"生日祝福_C++_生日祝福_"是一个使用C++编程语言实现的程序,目的是为了给朋友们提供一种独特且有趣的生日祝福方式。它不仅包含了一般的祝福语,还通过动态变化的方式增强了视觉效果,如屏幕颜色的变化...

    10000以内50%生日问题的全解

    一个房间有23个人,会有两个人生日相同吗?答案是有50%的概率。这就是所谓的生日问题birthday problem)或生日悖论(birthday paradox)。本文回答的问题是,当人数众多时,生日相同的概率达到50%,有多少人。

    生日快乐网页模版html5

    "生日快乐网页模版html5"是一个专为庆祝生日而设计的HTML5页面模版,适合程序员们用来向他们的朋友或特别的人送上独特的生日祝福。这个模版利用了现代Web技术,提供了丰富的交互性和视觉效果,使其成为一种既实用又...

    html生日祝福特效代码

    下面将详细介绍这些技术及其在创建生日祝福页面中的应用。 1. HTML(HyperText Markup Language):HTML是构建网页的基础,用于定义网页的结构和内容。在生日祝福页面中,HTML可以用来创建标题、段落、图像、链接等...

    1-9岁生日电视投屏壁纸,生日壁纸,小朋友生日

    63张壁纸的丰富数量确保了家长有多种选择,可以根据孩子的年龄、性别甚至是他们的兴趣爱好来挑选合适的壁纸。 电视投屏技术的核心在于屏幕镜像功能,如Apple的AirPlay、Android的Miracast或Chromecast。这些技术...

    生日快乐小程序

    今天要介绍的“生日快乐小程序”,就是这样一款集技术与情感于一身的创意之作。 该项目的初衷是为用户提供一种新颖的方式来庆祝生日。不同于传统的电子贺卡或文字祝福,这个小程序通过源代码的形式,为用户提供了...

    html写的生日祝福代码

    为了制作生日祝福页面,我们可以使用`<h1>`标签创建大标题,写上“生日快乐!”: ```html 生日快乐! ``` 为了增加一些视觉效果,可以使用`<img>`标签插入一张生日蛋糕或其他相关的图片。记得为图片提供一个`...

    生日快乐.rar

    标题“生日快乐.rar”暗示了这是一个与庆祝生日相关的项目,很可能是一个互动的网页设计,用于向某人表达生日祝福。这个项目使用了HTML、CSS和JavaScript三种核心技术来创建,这是一套常见的前端开发语言组合,用于...

    祝贺生日快乐C++代码

    生日快乐c

    生日快乐代码.zip

    "生日快乐代码.zip"这个压缩包文件看起来包含了一个与编程相关的项目,可能是一个简单的程序或脚本,用于在某人的生日时表达祝福。虽然没有具体的标签来指明使用的编程语言或技术,我们可以根据常见的编程实践来推测...

    html生日快乐源代码

    这类项目通常包含交互性元素,比如动态展示祝福语、播放音乐或者显示动画效果,为庆祝生日增添趣味。 描述中提到的几个关键点是: 1. **双击index.html**:在HTML项目中,`index.html`是默认的主页文件,双击它...

    生日祝福生日烟花.zip

    标题中的“生日祝福生日烟花.zip”表明这是一个与生日庆祝相关的压缩文件,可能包含用于制作生日祝福的素材或程序。描述中的“烟花特效 倒计时 生日祝福 手机PC都响应”揭示了文件的核心内容,即包含了烟花动画效果...

    生日祝福APP

    【生日祝福APP】是一款基于开源技术的移动应用,旨在为用户提供便捷的生日祝福服务。这款APP的源代码可以从GitHub上获取,鼓励用户进行下载、学习和分享,体现了开源社区的开放精神。通过分析其源代码,我们可以深入...

    shengrikuaile.zip_生日_生日祝福C++_祝福生日

    C++是一种中级编程语言,由Bjarne Stroustrup于1983年创建,它是C语言的增强版,提供了面向对象编程的特性,如类、封装、继承和多态性。在C++中编写生日祝福程序,开发者可以利用控制台输出、文件操作甚至图形用户...

Global site tag (gtag.js) - Google Analytics