【发布时间】:2015-06-28 20:09:07
【问题描述】:
我很快就得出结论,我不能成为一名程序员。尽管在 Ruby Koans 中做了大量的笔记并练习了所有内容,除了三遍在 Codecademy 上的 Ruby 课程,并且目前正在阅读 Chris Pine 的书,平均每天学习 6 小时......这个当前的 Koan 是一个练习沮丧和意识到不是每个人都可以成为程序员。
练习如下
# Greed is a dice game where you roll up to five dice to accumulate
# points. The following "score" function will be used to calculate the
# score of a single roll of the dice.
#
# A greed roll is scored as follows:
#
# * A set of three ones is 1000 points
#
# * A set of three numbers (other than ones) is worth 100 times the
# number. (e.g. three fives is 500 points).
#
# * A one (that is not part of a set of three) is worth 100 points.
#
# * A five (that is not part of a set of three) is worth 50 points.
#
# * Everything else is worth 0 points.
#
#
# Examples:
#
# score([1,1,1,5,1]) => 1150 points
# score([2,3,4,6,2]) => 0 points
# score([3,4,5,3,3]) => 350 points
# score([1,5,1,2,4]) => 250 points
#
# More scoring examples are given in the tests below:
#
# Your goal is to write the score method.
def score(dice)
end
所以乍一看,我假设测试将通过dice 提供随机 num 功能?还是我需要自己写?现在我必须限制掷骰子的范围?然后我所要做的就是获取数字并将它们放入一个数组中,但最多只能有 5 个位置(比如while array has 5 or less entries?,然后我需要定义点系统的工作方式。所以像score[0] = 100, score[2]= 200 这样的东西?但现在我'已经硬编码了分数,如果第一个位置不是 1 而是 5 怎么办?那么数字就是 50。那么 if/else 语句怎么样?类似于
if score[0] == 1
point = 100
elsif score[0] == 5
point = 50
else point = 0
然后我对位置 [1]-[4] 重复此操作?
尽管非常想要,但我不想简单地用谷歌搜索答案,我宁愿得到某种方向,因为没有更好的词。
希望这不是一个太笼统的问题,但您如何处理这样的问题?在解决这个问题之前,也许我应该先从头到尾看一遍 Pine 的书?
【问题讨论】:
-
你想太多了。例如,您可能不需要检查输入对 koan 是否有效 - 尽管在实际业务情况下,您考虑检查值的方式(通常称为验证)将非常有用。我认为这个 koan 的演练设置在 Stack Overflow 上没有用。这对您的培训需求来说太个人化了。非常简短的提示:if-then 检查不是一个糟糕的起点,但不要考虑处理数组中的每个项目 - 将数组的内容作为一个组查看 - 检查
Array的文档以获得好的方法 -
不要放弃!我记得在本科时学习过真正的分析。我只是无法得到它。我以为我必须放弃成为数学家的梦想。然后有一天——实际上是一天——乌云散去,一切都变得清晰,甚至是显而易见的。我继续学习更高级的分析课程,发现它们很容易(但很有趣)。另一方面,大多数人不适合成为编码员。 (后记:我终于清醒过来,意识到我只是不够聪明,不能成为普通的数学家,这让我不感兴趣。)
-
这是测试驱动开发可以帮助您的地方。我不会担心选择框架。一种基本方法是从公案中获取一个要求,并使其在脚本中工作,否则失败。也许从你有三个失败的情况开始('1,1,1,2,2 应该是 1,000),除非 score([1,1,1,2,2]) == 1,000。然后添加另一个要求并在三个数字不是数字时使分数起作用。继续添加要求,直到完成!可以在“Jim Weirich - Roman Numerals Kata”中找到有关这种技术的精彩视频 - youtu.be/983zk0eqYLY