Tugas Anda adalah membuat skrip vim atau memberikan urutan penekanan tombol yang akan beroperasi pada satu baris teks dengan hingga 140 karakter ASCII yang dapat dicetak (di mana saja dalam file, dengan kursor mulai dari mana saja di baris) dan membalikkan setiap spasi- string yang dipisahkan dalam kalimat sambil menjaga string dalam urutan yang sama.
Misalnya, input:
roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR
harus kembali:
For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR
Script dengan karakter paling sedikit, atau urutan penekanan tombol paling sedikit, untuk mencapai hasil ini adalah pemenangnya.
Jawaban:
282524 penekanan tombolMakro rekursif, saya berasumsi bahwa Ctrl- rdihitung sebagai satu keystroke.
Bagian tersulit adalah memastikan makro tetap pada baris yang sama dan tidak menghancurkan sisa file.
sumber
cE
alih-alihct
, jika itu tidak mengakhiri makro. Tapi Anda bisa menggunakanW
alih-alihf l
menyimpan 2 pukulan.cE
terjadi ketika kursor berada di awala retcarahc-041
? Dan coba tebak apa yangW
terjadi ketika kita berada di ujung garis?E
. huruf kecile
akan pergi sampai garis putus-putus, modalE
akan pergi ke ruang berikutnya. Saya hanya mencoba untuk mengonfirmasi.:set ri<Enter>^qqct <C-r>"<Esc>W@qq@q
untuk 23.E
, saya tahu apa fungsinya. Saya merujuk yangcE<C-r><Esc>
akan berubaha retcarahc-041
menjadi140-character a
, AKA itu akan bertukar kata-kata.24 penekanan tombol
Saya tahu pertanyaan ini sudah sangat lama, tetapi saya suka vimgolf jadi saya tidak bisa tidak mengirim jawaban pada salah satu dari beberapa tantangan khusus vim di situs. Ditambah lagi solusi ini diikat dengan Orlp's.
Seperti yang dikatakan Orlp, bagian tersulit adalah memastikan bahwa sisa buffer tidak dimodifikasi. Jika bukan karena batasan itu, kita bisa melakukan:
(19 penekanan tombol) tetapi kita perlu sedikit lebih banyak untuk menjaganya agar tetap aman. Ini mengasumsikan lingkungan unix.
sumber