首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是RubyMonk上的一个bug,还是我逻辑思维中的缺陷?

这是RubyMonk上的一个bug,还是我逻辑思维中的缺陷?
EN

Stack Overflow用户
提问于 2016-01-28 06:19:07
回答 2查看 109关注 0票数 0

我正在用Rubymonk.com学习Ruby

以下是项目说明:

雇用程序员- Ruby中的布尔表达式

让我们说,你正试图为你的新创业招募团队成员!给定一个候选人,您需要一个表达式来告诉您它们是否适合某些类型。候选对象的外观如下:

代码语言:javascript
复制
candidate.years_of_experience = 4
candidate.github_points = 293
candidate.languages_worked_with = ['C', 'Ruby', 'Python', 'Clojure']
candidate.applied_recently? = false
candidate.age = 26

我们正在招聘有经验的Ruby程序员。我们理想的候选人有两年或更多的经验,但有些程序员甚至在那之前就变得很好了。我们将考虑他们的Github点(一个优秀程序员的一个很好的指示器),即使他们没有经验,有500个Github点数或更多的候选人也可以申请。还有一个问题: Ruby是一种很酷很棒的语言,很多聪明的年轻人都很擅长它。我们喜欢这些孩子,但对于这份工作,我们宁愿让他们在学校学习,也不愿让他们工作。让我们筛选出15岁以下的候选人。我们也不想考虑最近申请这个职位的候选人。

基于上述描述,我的结论是,下面列出的项目必须是真的:

  1. candidate.languages_worked_with.include?('Ruby')
  2. candidate.years_of_exprience >= 2\x{e76f} candidate.github_points >= 500
  3. candidate.age > 15
  4. candidate.applied_recently?==假

我的回答是:

代码语言:javascript
复制
is_an_experienced_programmer = (candidate.years_of_exprience >= 2 
|| candidate.github_points >= 500) && candidate.languages_worked_with.include? 'Ruby' 
&& (candidate.age > 15) && !(candidate.applied_recently?)

但答案是:

代码语言:javascript
复制
is_an_experienced_ruby_programmer =  (candidate.years_of_experience >= 2 
|| candidate.github_points >= 500) && (candidate.languages_worked_with.include? 'Ruby') 
&& ! (candidate.age < 15 || candidate.applied_recently?)

我的回答和答案之间唯一的区别是:

代码语言:javascript
复制
 (candidate.age > 15) && !(candidate.applied_recently?)

上面说,应聘者必须年满15岁,最近还没有申请过。

答案是:

代码语言:javascript
复制
! (candidate.age < 15 || candidate.applied_recently?)

上面的代码基本上说,候选人不能少于15岁,而且最近还没有申请。

它们不是一样的吗?还是我逻辑上有缺陷的东西?

EN

回答 2

Stack Overflow用户

发布于 2016-01-28 07:26:51

它几乎是你唯一缺少的东西是>=。

代码语言:javascript
复制
(candidate.age >= 15) && !(candidate_applied_recently?)

这就是为什么你可能得到了错误的答案。

希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2016-01-28 09:29:05

我的结论是,RubyMonk上的项目的测试逻辑有问题:当我使用下面的代码时,我通过了测试:

代码语言:javascript
复制
is_an_experienced_ruby_programmer =  (candidate.years_of_experience >= 2 || candidate.github_points >= 500) && (candidate.languages_worked_with.include? 'Ruby') && !candidate.applied_recently? && (candidate.age > 15)

当我使用下面的语言时,我没有通过测试:

代码语言:javascript
复制
is_an_experienced_programmer = (candidate.years_of_exprience >= 2 || candidate.github_points >= 500) && (candidate.languages_worked_with.include? 'Ruby') && (candidate.age > 15) && !(candidate.applied_recently?)

所以

代码语言:javascript
复制
!(candidate.applied_recently?) && (candidate.age > 15)

是不同的

代码语言:javascript
复制
(candidate.age > 15) && !(candidate.applied_recently?)

在鲁比蒙的脑子里?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35054142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档