我正在用Rubymonk.com学习Ruby
以下是项目说明:
雇用程序员- Ruby中的布尔表达式
让我们说,你正试图为你的新创业招募团队成员!给定一个候选人,您需要一个表达式来告诉您它们是否适合某些类型。候选对象的外观如下:
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岁以下的候选人。我们也不想考虑最近申请这个职位的候选人。
基于上述描述,我的结论是,下面列出的项目必须是真的:
我的回答是:
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?)但答案是:
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?)我的回答和答案之间唯一的区别是:
(candidate.age > 15) && !(candidate.applied_recently?)上面说,应聘者必须年满15岁,最近还没有申请过。
答案是:
! (candidate.age < 15 || candidate.applied_recently?)上面的代码基本上说,候选人不能少于15岁,而且最近还没有申请。
它们不是一样的吗?还是我逻辑上有缺陷的东西?
发布于 2016-01-28 07:26:51
它几乎是你唯一缺少的东西是>=。
(candidate.age >= 15) && !(candidate_applied_recently?)这就是为什么你可能得到了错误的答案。
希望能帮上忙。
发布于 2016-01-28 09:29:05
我的结论是,RubyMonk上的项目的测试逻辑有问题:当我使用下面的代码时,我通过了测试:
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)当我使用下面的语言时,我没有通过测试:
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?)所以
!(candidate.applied_recently?) && (candidate.age > 15)是不同的
(candidate.age > 15) && !(candidate.applied_recently?)在鲁比蒙的脑子里?
https://stackoverflow.com/questions/35054142
复制相似问题