Vim: 231 Perintah Utama
Perhatikan bahwa setiap ^ yang mendahului karakter berarti Anda harus memegang kendali saat mengetik karakter itu
mbomayiwo^V^R"^V^V^V^X ^V^["sy0dd`a@f ^["bc0yiwo^V^V^V^X^V^R"^V^[0l@sa^V^V^V^A-^V^[0f-"ayhdd`a@i ^["dc0mbyiwo^V^R"Exe@b^V^[0fel"ty2ldd`b@t ^["ec0wmbyiwo@f @d^V^[@z ^["fc0"xyiwwmbyiwocw^V^V^V^Rx^V^V^V^[@a@i @e^V^[@z ^["ic0IB0 B^V^R" ^V^OWB0 ^V^OA B0^V^[0*w"tyiWdd`b@t ^["zd0dd`bAe^[0@e
Langkah-langkah agar Anda dapat menjalankan ini juga!
- Salin baris ke Vim
- Mengetik
:s/\^V/<Ctrl-V><Ctrl-V>/g
dan tekan enter (keduanya harus memberi Anda warna biru ^ V)
- Mengetik
:s/\^R/<Ctrl-V><Ctrl-R>/g
dan tekan enter (Anda akan melihat biru ^ Rs sekarang)
- Mengetik
:s/\^X/<Ctrl-V><Ctrl-X>/g
dan tekan enter (Anda akan melihat biru ^ Xs sekarang)
- Mengetik
:s/\^O/<Ctrl-V><Ctrl-O>/g
dan tekan enter
- Mengetik
:s/\^A/<Ctrl-V><Ctrl-A>/g
dan tekan enter
- Mengetik
:s/\^\[/<Ctrl-V><Ctrl-[>/g
dan tekan enter (perintah ini sedikit berbeda karena saya harus keluar dari [)
- Mengetik
0"yy$
. Perintah sekarang disimpan dalam register y
- Atur input pada saluran, dan jalankan dengan
@y
Jika seseorang tahu cara yang lebih baik untuk membagikan perintah, beri tahu saya. Saya tahu ini panjang, tapi itu yang terbaik yang bisa saya lakukan.
Input output
String input harus sendiri pada baris apa pun dalam file. 1 0 0 4 3 0 0 0 7
Outputnya hanya akan menimpa string input 1 2 3 4 3 4 5 6 7
Penjelasan
Algoritma
- Mulai dari angka yang bukan nol, pastikan itu bukan angka terakhir
- Temukan nomor bukan nol berikutnya
- Ambil perbedaan mereka. Jika jawabannya negatif, Anda harus mengurangi perbaikan kisaran, jika tidak, kenaikan untuk memperbaiki kisaran.
- Kembali ke karakter pertama dan ganti setiap nol dengan menambah / mengurangi angka sebelumnya.
- Ulangi sampai Anda mencapai karakter terakhir
Macro Digunakan
@ e - Periksa akhir. Nomor terakhir akan memiliki e ditambahkan ke dalamnya. Jika angka di bawah kursor memiliki e di bagian akhir, hapus e dan hentikan eksekusi. Jika tidak, mulailah siklus interpolasi dengan @b.
mbyiwo^R"Exe@b^[0fel"ty2ldd`b@t
@b - Mulai siklus interpolasi. Simpan angka di bawah kursor untuk operasi pengurangan (@s) dan kemudian cari istilah non-nol berikutnya (@f)
mayiwo^R"^V^X ^["sy0dd`a@f
@ s - Menyimpan perintah pengurangan untuk digunakan dalam @d. Itu hanya di (val)^X
mana (val)
nomor pada awal langkah interpolasi. Ini diatur oleh perintah @b.
@ f - Temukan istilah bukan nol berikutnya. Tulis nilai saat ini ke register tanpa nama, kemudian tulis @f @d
di baris berikutnya, dan kemudian jalankan @z. Ini akan mengulangi perintah ini jika angkanya nol, dan jalankan @d jika tidak.
wmbyiwo@f @d^[@z
@z - Eksekusi bersyarat jika register tanpa nama adalah 0. Perintah ini mengharapkan dua perintah pada baris baru dalam format command1 command2
. Jika register tanpa nama adalah 0, command1
dieksekusi, jika command2
tidak dieksekusi. Perhatikan bahwa tidak ada perintah yang memiliki spasi di dalamnya.
IB0 B^R" ^OWB0 ^OA B0^[0*w"tyiWdd`b@t`
@t - Register perintah sementara. Menyimpan berbagai perintah untuk waktu yang singkat sebelum menjalankannya. Digunakan terutama dalam pernyataan if.
@ d - Tentukan arah interpolasi. Kurangi angka pertama dalam urutan dari angka di bawah kursor (menggunakan @s). Jika hasilnya negatif, interpolasi harus menurun sehingga ^ X disimpan ke @a. Kalau tidak, kita harus naik sehingga ^ A disimpan ke @a. Setelah ini disimpan, kembali ke awal siklus interpolasi ini dan jalankan @i untuk benar-benar interpolasi
yiwo^V^X^R"^[0l@sa^V^A-^[0f-"ayhdd`a@i
@a - Menyimpan ^A
atau^X
menambah atau mengurangi selama langkah interpolasi. Ini diatur oleh perintah @d.
@ i - Interpolasi. Salin nomor di lokasi saat ini ke @x dan pindah ke nomor berikutnya. Jika angka itu nol, ganti dengan @x dan jalankan @a untuk memodifikasinya naik atau turun, lalu ulangi perintah ini. Jika angkanya bukan nol, kami telah mencapai akhir dari siklus interpolasi ini. Yang baru harus dimulai dengan angka ini sebagai awal, jadi jalankan @e untuk memeriksa akhirnya dan jalankan lagi.
"xyiwwmbyiwocw^V^Rx^V^[@a@i @e^[@z
@x - Register penyimpanan sementara. Digunakan dalam perintah interpolasi (@i)
Memecah penekanan tombol
mbo :Set b mark to current position and open a new line below to write macros
mayiwo^V^R"^V^V^V^X ^V^["sy0dd`a@f ^["bc0 :Write to @b and reset line
yiwo^V^V^V^X^V^R"^V^[0l@sa^V^V^V^A-^V^[0f-"ayhdd`a@i ^["dc0 :Write to @d and reset line
mbyiwo^V^R"Exe@b^V^[0fel"ty2ldd`b@t ^["ec0 :Write to @e and reset line
wmbyiwo@f @d^V^[@z ^["fc0 :Write to @f and reset line
"xyiwwmbyiwocw^V^V^V^Rx^V^V^V^[@a@i @e^V^[@z ^["ic0 :Write to @i and reset line
IB0 B^V^R" ^V^OWB0 ^V^OA B0^V^[0*w"tyiWdd`b@t ^["zd0 :Write to @z and reset line
dd`b :Delete this line and move cursor back to original line
Ae^[ :Append an e to the last number
0@e :Move to the beginning of the line and run
0
program kami dapat mengambil nilai lain sepertinull
?