重要事项:在本项活动的最终期限后,可在脚本中心上找到 VBScript、Windows PowerShell 和 Perl解决方案。 |
在“保龄球”活动中,参赛人员将得到 10 局保龄球的分数卡,并要求计算分数。
| 关于此项活动 | |
| 活动方案 | |
| 如何输入 |
小组 | 初级 |
最终期限 | 2008 年 3 月 3 日,星期一(太平洋标准时间上午 8:00) |
奖励点数 | 10 |
保龄球游戏是在球道上投球,尝试击倒以三角形布局放置的 10 个球瓶。选手有两次机会。如果第一次投球就击倒了全部 10 个球瓶,则称为“全中”。全中在记分卡上以 X 表示。如果选手在第一次投球时击倒部分球瓶,且在第二次投球时击倒剩余的球瓶,则称为“补中”。补中在记分卡上以 / 表示。
如果选手两次投球都没能击倒所有球瓶,则他或她将得到一个指示击倒球瓶数的分数。例如,如果他第一次投球击倒 4 个球瓶,第二次击倒 3 个球瓶,则他的分数为 7。
补中按照击倒全部球瓶的 10 分加上下一次投球所得分数进行计算。例如,如果先击倒 8 个球瓶,然后击倒 2 个球瓶,则为补中。下一局时(一“局”表示下一次尝试击倒 10 个球瓶),选手第一次投球击倒 4 个球瓶。这表示,对于他补中的那一局来说,选手将得到 14 分。在保龄球记分卡上应显示类似下面的信息:

该信息的含义在于为了计算补中局的总分数,您必须等到下一局第一次投球结束。全中与此类似,不同之处在于所得分数应加上后两次投球所得的分数,而不是后一次投球所得的分数。因此,如果选手在第一局里全中,他还将得到随后两次投球的分数。如果随后两次投球分别击倒 6 瓶和 3 瓶,则第 1 局总分数为 19 (10 + 6 + 3),而第 2 局的分数为 9 (6 + 3)。这样前两局结束后,总分数将为 28,如下所示:

在本次活动中,您将挑战根据 10 局的记分卡计算总分:

开始之前,我们将给您一点小小的提示。不仅仅是提示,我们将为您提供的是脚本的入手点。虽然可能还有其他方式能够完成本活动,但您应使用一个数组。为什么呢?因为我们将要给您的就是一个数组:
VBScript
arrFrames = Array(2,5,7,"/",8,1,"X",9,"/",5,3,7,0,4,5,"X",2,0)
Windows PowerShell
$arrFrames = 2,5,7,"/",8,1,"X",9,"/",5,3,7,0,4,5,"X",2,0
Perl
@arrFrames = (2,5,7,"/",8,1,"X",9,"/",5,3,7,0,4,5,"X",2,0)
为什么我们会给您一个数组呢?因为当测试本活动参赛人员编写的脚本时,我们将用不同的数组替换该数组。这表示您的脚本需要能够处理任意 10 局保龄球分数,而不仅是我们在此处演示的这一组。
注意:如果您对最后一局出现补中的情况感到迷惑,那告诉您,在真实的保龄球比赛中,您将在最后一局结束后得到第三次投球的机会。但在本次活动中,我们不会测试这种情况。本次活动的最后一局包含两个数字,没有补中或全中的情况。测试脚本时输入的任意数组也将以两个数字结尾,不会在最后一局出现补中或全中。换句话说,您不需要考虑最后一局出现补中或全中的情况。 |
编写完脚本后,单击适当链接提交答案:
| • | |
| • | |
| • |
如果链接并未自动打开预先填好地址的邮件,请将电子邮件发送到 scripter@microsoft.com,主题行为 Beginner VBScript: Event 10、Beginner Windows PowerShell: Event 10 或 Beginner Perl: Event 10。
您所需做的是将代码粘贴到邮件正文中,然后发送电子邮件。您还可包括以下内容:
| • | 在公布脚本编写比赛点数领先者名单时可以使用的您的名字或昵称。 |
| • | 您希望代表的国家的名称。它可以是您的出生国或当前所居住的国家,但也可以是其他国家;您可以代表所希望的任意国家。 |
| • | 您所属的任意用户组的名称。如果您的用户组正在参加“用户组挑战”,应包括此信息。 |
只需在电子邮件上方键入这些项目即可。此时,您的电子邮件(假定您将提交针对 VBScript 小组的答案)可能看起来像:
Ken Myer
USA
Northern Iowa User Group
For i = 1 to 100
Wscript.Echo i
Next