题目链接

Array transposition

题目说明

交叉合并两个数组。

开始文件

[1,2,3,4,5,6,7,8,9,0]
[a,b,c,d,e,f,g,h,i,j]

结束文件

[1,a,2,b,3,c,4,d,5,e,6,f,7,g,8,h,9,i,0,j]

最佳分数

16

我的分数

20

lqqy2ljPkplqh9@qddZZ

第一次尝试

用宏实现试试,想了一会。

qqly2ljPkpq10@qddjf]r,ZZ

24 分,差 8 分。估计主要是处理最后 0 的意外时慢了,再想想。

第二次尝试

先处理第一个数字,这样末尾的数字就不用特别处理了。

lqqy2ljPkplqh9@qddZZ

20 分,还差 4 分,可能用的方法不一样。

第三次尝试

感觉可以用内置的书签跳转,这样就不需要同步两行的长度,但没试出来。直接看吧。

@owengeorge_

}qqhi<C-Y>,<Esc>hhq9@qdB<Esc>ZZ

19 分。} 定位到末尾,开始录制宏,<C-Y> 是啥意思?把光标上方的字符复制到当前位置,还有这功能?剩下的就没什么了,最后的 dB 会删除第一行。不过他多输入了一个 <Esc>,可以去掉:

}qqhi<C-Y>,<Esc>hhq9@qdBZZ

这样就 18 分了,还差 2 分。

第四次尝试

这个操作也很紧凑了,不像能优化的样子,继续看吧。

@udioica

qqja<C-Y>,<Esc>k.q9@qddZZ

17 分。这次是从开头录的宏,同时和我第一次一样也同步两行的长度。. 是粘贴刚才插入的内容(不需要再去找光标上方的字符)。

直接看 16 分的吧。

@jkrause314

qqja<C-Y>,<Up><C-@>q9@qddZZ

是基于上边的优化,<C-@> 就是同时按 Ctrl 和 2,功能是插入上次插入过的内容,并且离开插入模式。这个我之前也不知道。

最佳操作

@jkrause314

qqja<C-Y>,<Up><C-@>q9@qddZZ

实用操作

@udioica

qqja<C-Y>,<Esc>k.q9@qddZZ

17 分。

虽然比最佳操作多 1 分,但不需要不好按的方向键。

文章目录