Google Code Jam为I / O做好心理准备

这是我第一次尝试将Code Jam转换为I / O进行女性编程竞赛。 Google每年都会举办一次代码拥塞挑战赛,这是他们针对女性的第五个年头,专门帮助女性增加在线竞赛空间的多样性和在Google I / O开发者大会上的代表性。 最简单的部分是注册并确定比赛中我将使用的语言。 作为参考,您可以查看解决方案和其他统计信息,包括过去几年中用于提交的最受欢迎的语言。 允许您使用任何编程语言(包括那些不在注册列表中的语言)。 接下来是最困难的部分,这是使我自己为应对挑战做好心理准备,接下来是准备自己的事情。

为了准备,我正在回顾过去几年中的问题。 我研究了一些解决方案,以了解开发人员使用了哪些库以及他们如何解析输入。 我想像这些应该是相同的,而不管问题是什么。 我也在辩论是否使用python或swift。 我熟悉Swift并经常在工作中使用它,但是最近我一直在学习python,它是使用的顶级编程语言之一,对处理大型数据集非常强大。 无论如何,我不想花很多时间来决定,所以我采用了一些性能基准测试,并且我尝试了一些示例挑战以使自己熟悉该过程,从而有可能更成功地竞争。

我用Xcode创建了一个新的命令行项目,并将其重用于解决每个示例挑战集。 命令行项目需要一个main.swift文件,因此我制作了单独的文件夹来包含问题解决方案和示例输入文件。 我的文件夹结构如下所示:

请注意,每个练习都有自己的main.swift和ParseInput.swift文件。 对于当前要解决的当前问题,我在实际的Xcode项目中仅包含一个main.swift文件,以免使Xcode感到困惑。 对于每个挑战,解析输入文件的内容可能非常相似,因此所有可重用的读取方法都可以在ParseInput.swift文件中找到。 在提交过程中,我选择通过标准输入读取示例文件的内容。 因此,我创建了一个小的Shell脚本来尽可能频繁地编译/重新运行我的解决方案。

我的shell脚本如下所示:

要运行脚本,您将传递问题编号和不带文件扩展名的示例输入的名称。 这是一个例子:
./re-run-code-jam.sh 2 B-小型练习

如果您对我如何使用泛型通过标准输入解析行感到好奇,请看以下内容:

在比赛到来之时,我将采取以下步骤解决每个问题:

  1. 花一些时间来了解问题。 这个问题往往很罗word,但它为您提供了所需的所有信息。 在编写我的解决方案之前,我经常必须阅读几次问题描述。 正确理解问题将为您节省很多时间。
  2. 提出一种解决纸上问题的方法,根据样本输入对其进行测试,然后比较您的解决方案。
  3. 如果您认为得到了解决方案,请对其进行编码。
  4. 用一小部分问题测试您的解决方案,并修复Xcode中任何明显的错误。 我添加了额外的打印语句,以确保正确读取/或计算内容。
  5. 下载大小样本文件,以生成预期的输出。 根据需要重复最后一步。
  6. 最后一刻进行清理并提交您的输出和源代码!

祝我好运! 如果您也参加,也祝您好运! 让我们玩得开心。 🙂

Interesting Posts