/tpl_vikipedia

2019 维基百渴

Primary LanguageShell

维基百渴 (Vikipedia)

问题背景

前天,物理系科协公众号清物语发布了一则推送《维基百渴重建记》。芃芃虽然不是物理系的,也想在其中贡献自己的一份力。有一天,他发现维基百科有公开的存档,于是下载了一份中文维基百科的页面列表到本地,想进行一些统计,看看维基百科都有哪些东西。

问题描述

我们提供了中文维基百科的一份页面列表 html.lst 。它的格式如下:

zh/index.html
zh/articles/!/!/!/Image~!!!!東京大学医科学研究所First_Building0080.JPG_61e7.html
zh/articles/!/!/!/Image~!!!WALLERSTEIN,Immanuel.JPG_96e9.html
zh/articles/!/!/!/Image~!!!表参道ヒルズ.JPG_dcd2.html

每一行都对应了中文维基百科的一个页面路径,你需要在这些路径中找到我们需要找到的信息。

你需要实现一个 Bash 脚本 count.sh 。它应该读取 html.lst 文件,回答下列查询,并以每个数字一行的形式将答案输出到标准输出:

  1. 路径中含有“清华”的页面个数
  2. 路径中含有“北大”的页面个数
  3. 名称以“清华”开始的页面个数
  4. 名称以“北大”开始的页面个数
  5. 名称以“清华”结尾的页面个数
  6. 名称以“北大”结尾的页面个数

这里的名称指的是路径中 .html 的文件名,即最后一个 /.html 之间的内容。如 zh/articles/0/7/月/07月15日.html 的页面名称就是 07月15日

所有问题中,只需要考虑简体中文的字符,即“清華”并不计算在内。

你可以通过 ./count.sh 或者 bash count.sh 来执行这个文件。

评分

这次不提供样例数据,你可以自己使用编辑器或其他手段检查答案。

最终分数构成为:

  • 黑盒 60 分:6 个页面个数的答案,每个 10 分(注意:必须使用脚本打开文件进行计算,直接输出答案或其他等价行为均不得分)
  • 白盒 40 分:代码风格与 Git 使用各 20 分(包括恰当注释、合理命名、提交日志等)

助教以 deadline 前 GitHub 上最后一次提交为准进行评测。

提示

  1. 可以使用 grep 来搜索符合条件的路径
  2. 可以使用正则表达式来匹配问题 3 到 6 的路径
  3. 可以使用 wc 来统计行数