2008 冬季脚本编写比赛

初级活动 10:保龄球

重要事项:在本项活动的最终期限后,可在脚本中心上找到 VBScript、Windows PowerShell 和 Perl解决方案

在“保龄球”活动中,参赛人员将得到 10 局保龄球的分数卡,并要求计算分数。

*
On This Page
关于此项活动关于此项活动
活动方案活动方案
如何输入如何输入

关于此项活动

小组

初级

最终期限

2008 年 3 月 3 日,星期一(太平洋标准时间上午 8:00)

奖励点数

10

Top of pageTop of page

活动方案

保龄球游戏是在球道上投球,尝试击倒以三角形布局放置的 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 局保龄球分数,而不仅是我们在此处演示的这一组。

注意:如果您对最后一局出现补中的情况感到迷惑,那告诉您,在真实的保龄球比赛中,您将在最后一局结束后得到第三次投球的机会。但在本次活动中,我们不会测试这种情况。本次活动的最后一局包含两个数字,没有补中或全中的情况。测试脚本时输入的任意数组也将以两个数字结尾,不会在最后一局出现补中或全中。换句话说,您不需要考虑最后一局出现补中或全中的情况。

Top of pageTop of page

如何输入

编写完脚本后,单击适当链接提交答案:

初级 VBScript

初级 Windows PowerShell

初级 Perl

如果链接并未自动打开预先填好地址的邮件,请将电子邮件发送到 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

Top of pageTop of page