[VimGolf] 交叉合并两个数组
题目链接
题目说明
交叉合并两个数组。
开始文件
[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 分,但不需要不好按的方向键。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。