题目链接

Reconstruct the actual output from my unit test tool report

题目说明

把 diff 文件修改成后一个文件的样子。具体来说就是把以 - 和 ? 开头的行删掉,然后把所有行的前两个字符删掉。

开始文件

  {'claims': [{'add': '',
-              'mainsnak': {'property': 'P31',
+              'mainsnak': {'datatype': 'wikibase-item',
+                           'datavalue': {'type': 'wikibase-entityid',
+                                         'value': {'entity-type': 'item',
+                                                   'id': 'Q5',
+                                                   'numeric-id': 5}},
+                           'hash': 'ad7d38a03cdd40cdc373de0dc4e7b7fcbccb31d9',
+                           'property': 'P31',
-                           'snaktype': 'value',
+                           'snaktype': 'value'},
?                                              +

-                           'value': {'entity-type': 'item', 'id': 'Q5'}},
+              'qualifiers': {},
               'rank': 'normal',
               'type': 'statement'}],
   'id': 'Q44',
   'ns': 0}

结束文件

{'claims': [{'add': '',
             'mainsnak': {'datatype': 'wikibase-item',
                          'datavalue': {'type': 'wikibase-entityid',
                                        'value': {'entity-type': 'item',
                                                  'id': 'Q5',
                                                  'numeric-id': 5}},
                          'hash': 'ad7d38a03cdd40cdc373de0dc4e7b7fcbccb31d9',
                          'property': 'P31',
                          'snaktype': 'value'},

             'qualifiers': {},
             'rank': 'normal',
             'type': 'statement'}],
 'id': 'Q44',
 'ns': 0}

最佳分数

16

我的分数

21

:g/^-/d<CR>kkdd:%s/..<CR>ZZ

第一次尝试

用命令来替换吧,虽然可能不快。

:g/^-/d<CR>kkdd:%s/../<CR>ZZ

22 分,差 6 分,也许还能优化下。

第二次尝试

发现能稍微优化下。

:g/^-/d<CR>kkdd:%s/..<CR>ZZ

.. 后的 / 可以去掉,21 分,还差 5 分。

第三次尝试

没想出来怎么优化,直接看吧。

@jeffacce

:g/^[-\?]/d<CR>ggh<C-V>G0dZZ

这个虽然也是 21 分,但方法值得参考,忘了可以用 [-?] 来匹配两个字符,改造下。

:g/^[-?]/d<CR>:%s/..<CR>ZZ

20 分,还差 4 分。

第四次尝试

按照这个思路好像很难再优化了。

@__Seve__

h<C->VG0dJD8jddj.j.ZZ

18 分。根据这个操作不大对劲,但方法是可以借鉴的,就是先把前两列删掉,然后根据记忆来删其他行,就像这样:

h<C-Q>G0djdd7j.j.j.ZZ

17 分,还差 1 分了。

第五次尝试

又不知道怎么优化了,直接看吧。

@rogsto1

h<C-V>G0xjddM.j.j.ZZ

好吧,是继续优化了下,用 M 替换了 7j,因为那行刚好在正中间。

最佳操作

@rogsto1

h<C-V>G0xjddM.j.j.ZZ

实用操作

:g/^[-?]/d<CR>:%s/..<CR>ZZ

20 分。

虽然比最佳操作多了 4 分,但这些操作都是不依赖特定文件细节的,比如不依赖最开始光标的位置,也不依赖哪些行前有 -、+、?,只要是这类 diff 文件都可以使用,而且很好理解。

文章目录