Last active
December 18, 2016 14:15
-
-
Save tyru/6e17ca16203f0e1a3a26c95e30c94e3c to your computer and use it in GitHub Desktop.
FizzBuzz by Vim mapping
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" | |
" fizzbuzz-buffer.vim - FizzBuzz by mappings & buffer content | |
" | |
" Rules: | |
" * No <expr> | |
" * Of course no Vim script expressions in normal mode, too | |
" | |
" Mapping Flow: | |
" 1. doit | |
" 2. getchar:{numchar} | |
" 3. getchar{n % 3}{n % 5 == 0 ? 1 : 0}:{numchar} | |
" 4. Result | |
" 1. <SID>(result:fizz) | |
" 2. <SID>(result:buzz) | |
" 3. <SID>(result:fizzbuzz) | |
" 4. <SID>(result:number) | |
" | |
" nmap <expr> doit join(map(range(1, 100), '"<SID>getchar:entry:".v:val."\<Esc>"'),'') | |
nmap doit <SID>getchar:1<Esc><SID>getchar:2<Esc><SID>getchar:3<Esc><SID>getchar:4<Esc><SID>getchar:5<Esc><SID>getchar:6<Esc><SID>getchar:7<Esc><SID>getchar:8<Esc><SID>getchar:9<Esc><SID>getchar:10<Esc><SID>getchar:11<Esc><SID>getchar:12<Esc><SID>getchar:13<Esc><SID>getchar:14<Esc><SID>getchar:15<Esc><SID>getchar:16<Esc><SID>getchar:17<Esc><SID>getchar:18<Esc><SID>getchar:19<Esc><SID>getchar:20<Esc><SID>getchar:21<Esc><SID>getchar:22<Esc><SID>getchar:23<Esc><SID>getchar:24<Esc><SID>getchar:25<Esc><SID>getchar:26<Esc><SID>getchar:27<Esc><SID>getchar:28<Esc><SID>getchar:29<Esc><SID>getchar:30<Esc><SID>getchar:31<Esc><SID>getchar:32<Esc><SID>getchar:33<Esc><SID>getchar:34<Esc><SID>getchar:35<Esc><SID>getchar:36<Esc><SID>getchar:37<Esc><SID>getchar:38<Esc><SID>getchar:39<Esc><SID>getchar:40<Esc><SID>getchar:41<Esc><SID>getchar:42<Esc><SID>getchar:43<Esc><SID>getchar:44<Esc><SID>getchar:45<Esc><SID>getchar:46<Esc><SID>getchar:47<Esc><SID>getchar:48<Esc><SID>getchar:49<Esc><SID>getchar:50<Esc><SID>getchar:51<Esc><SID>getchar:52<Esc><SID>getchar:53<Esc><SID>getchar:54<Esc><SID>getchar:55<Esc><SID>getchar:56<Esc><SID>getchar:57<Esc><SID>getchar:58<Esc><SID>getchar:59<Esc><SID>getchar:60<Esc><SID>getchar:61<Esc><SID>getchar:62<Esc><SID>getchar:63<Esc><SID>getchar:64<Esc><SID>getchar:65<Esc><SID>getchar:66<Esc><SID>getchar:67<Esc><SID>getchar:68<Esc><SID>getchar:69<Esc><SID>getchar:70<Esc><SID>getchar:71<Esc><SID>getchar:72<Esc><SID>getchar:73<Esc><SID>getchar:74<Esc><SID>getchar:75<Esc><SID>getchar:76<Esc><SID>getchar:77<Esc><SID>getchar:78<Esc><SID>getchar:79<Esc><SID>getchar:80<Esc><SID>getchar:81<Esc><SID>getchar:82<Esc><SID>getchar:83<Esc><SID>getchar:84<Esc><SID>getchar:85<Esc><SID>getchar:86<Esc><SID>getchar:87<Esc><SID>getchar:88<Esc><SID>getchar:89<Esc><SID>getchar:90<Esc><SID>getchar:91<Esc><SID>getchar:92<Esc><SID>getchar:93<Esc><SID>getchar:94<Esc><SID>getchar:95<Esc><SID>getchar:96<Esc><SID>getchar:97<Esc><SID>getchar:98<Esc><SID>getchar:99<Esc><SID>getchar:100<Esc> | |
nmap <SID>getchar: <SID>getchar00: | |
nmap <SID>getchar00:0 <SID>append:0<SID>getchar01: | |
nmap <SID>getchar00:1 <SID>append:1<SID>getchar10: | |
nmap <SID>getchar00:2 <SID>append:2<SID>getchar20: | |
nmap <SID>getchar00:3 <SID>append:3<SID>getchar00: | |
nmap <SID>getchar00:4 <SID>append:4<SID>getchar10: | |
nmap <SID>getchar00:5 <SID>append:5<SID>getchar21: | |
nmap <SID>getchar00:6 <SID>append:6<SID>getchar00: | |
nmap <SID>getchar00:7 <SID>append:7<SID>getchar10: | |
nmap <SID>getchar00:8 <SID>append:8<SID>getchar20: | |
nmap <SID>getchar00:9 <SID>append:9<SID>getchar00: | |
nmap <SID>getchar00:<Esc> <SID>(result:fizz) | |
nmap <SID>getchar01:0 <SID>append:0<SID>getchar01: | |
nmap <SID>getchar01:1 <SID>append:1<SID>getchar10: | |
nmap <SID>getchar01:2 <SID>append:2<SID>getchar20: | |
nmap <SID>getchar01:3 <SID>append:3<SID>getchar00: | |
nmap <SID>getchar01:4 <SID>append:4<SID>getchar10: | |
nmap <SID>getchar01:5 <SID>append:5<SID>getchar21: | |
nmap <SID>getchar01:6 <SID>append:6<SID>getchar00: | |
nmap <SID>getchar01:7 <SID>append:7<SID>getchar10: | |
nmap <SID>getchar01:8 <SID>append:8<SID>getchar20: | |
nmap <SID>getchar01:9 <SID>append:9<SID>getchar00: | |
nmap <SID>getchar01:<Esc> <SID>(result:fizzbuzz) | |
nmap <SID>getchar10:0 <SID>append:0<SID>getchar11: | |
nmap <SID>getchar10:1 <SID>append:1<SID>getchar20: | |
nmap <SID>getchar10:2 <SID>append:2<SID>getchar00: | |
nmap <SID>getchar10:3 <SID>append:3<SID>getchar10: | |
nmap <SID>getchar10:4 <SID>append:4<SID>getchar20: | |
nmap <SID>getchar10:5 <SID>append:5<SID>getchar01: | |
nmap <SID>getchar10:6 <SID>append:6<SID>getchar10: | |
nmap <SID>getchar10:7 <SID>append:7<SID>getchar20: | |
nmap <SID>getchar10:8 <SID>append:8<SID>getchar00: | |
nmap <SID>getchar10:9 <SID>append:9<SID>getchar10: | |
nmap <SID>getchar10:<Esc> <SID>(result:number) | |
nmap <SID>getchar11:0 <SID>append:0<SID>getchar11: | |
nmap <SID>getchar11:1 <SID>append:1<SID>getchar20: | |
nmap <SID>getchar11:2 <SID>append:2<SID>getchar00: | |
nmap <SID>getchar11:3 <SID>append:3<SID>getchar10: | |
nmap <SID>getchar11:4 <SID>append:4<SID>getchar20: | |
nmap <SID>getchar11:5 <SID>append:5<SID>getchar01: | |
nmap <SID>getchar11:6 <SID>append:6<SID>getchar10: | |
nmap <SID>getchar11:7 <SID>append:7<SID>getchar20: | |
nmap <SID>getchar11:8 <SID>append:8<SID>getchar00: | |
nmap <SID>getchar11:9 <SID>append:9<SID>getchar10: | |
nmap <SID>getchar11:<Esc> <SID>(result:buzz) | |
nmap <SID>getchar20:0 <SID>append:0<SID>getchar21: | |
nmap <SID>getchar20:1 <SID>append:1<SID>getchar00: | |
nmap <SID>getchar20:2 <SID>append:2<SID>getchar10: | |
nmap <SID>getchar20:3 <SID>append:3<SID>getchar20: | |
nmap <SID>getchar20:4 <SID>append:4<SID>getchar00: | |
nmap <SID>getchar20:5 <SID>append:5<SID>getchar11: | |
nmap <SID>getchar20:6 <SID>append:6<SID>getchar20: | |
nmap <SID>getchar20:7 <SID>append:7<SID>getchar00: | |
nmap <SID>getchar20:8 <SID>append:8<SID>getchar10: | |
nmap <SID>getchar20:9 <SID>append:9<SID>getchar20: | |
nmap <SID>getchar20:<Esc> <SID>(result:number) | |
nmap <SID>getchar21:0 <SID>append:0<SID>getchar21: | |
nmap <SID>getchar21:1 <SID>append:1<SID>getchar00: | |
nmap <SID>getchar21:2 <SID>append:2<SID>getchar10: | |
nmap <SID>getchar21:3 <SID>append:3<SID>getchar20: | |
nmap <SID>getchar21:4 <SID>append:4<SID>getchar00: | |
nmap <SID>getchar21:5 <SID>append:5<SID>getchar11: | |
nmap <SID>getchar21:6 <SID>append:6<SID>getchar20: | |
nmap <SID>getchar21:7 <SID>append:7<SID>getchar00: | |
nmap <SID>getchar21:8 <SID>append:8<SID>getchar10: | |
nmap <SID>getchar21:9 <SID>append:9<SID>getchar20: | |
nmap <SID>getchar21:<Esc> <SID>(result:buzz) | |
nnoremap <SID>append:0 a0<Esc> | |
nnoremap <SID>append:1 a1<Esc> | |
nnoremap <SID>append:2 a2<Esc> | |
nnoremap <SID>append:3 a3<Esc> | |
nnoremap <SID>append:4 a4<Esc> | |
nnoremap <SID>append:5 a5<Esc> | |
nnoremap <SID>append:6 a6<Esc> | |
nnoremap <SID>append:7 a7<Esc> | |
nnoremap <SID>append:8 a8<Esc> | |
nnoremap <SID>append:9 a9<Esc> | |
nnoremap <SID>(result:fizz) ccFizz<CR><Esc> | |
nnoremap <SID>(result:buzz) ccBuzz<CR><Esc> | |
nnoremap <SID>(result:fizzbuzz) ccFizzBuzz<CR><Esc> | |
nnoremap <SID>(result:number) o<Esc> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" | |
" fizzbuzz-pushdown-automaton.vim - FizzBuzz by mappings & stack | |
" | |
" Rules: | |
" * No <expr> | |
" * Of course no Vim script expressions in normal mode, too | |
" | |
" Mapping Flow: | |
" 1. doit | |
" 2. getchar:{numchar} | |
" 3. getchar{n % 3}{n % 5 == 0 ? 1 : 0}:{numchar} | |
" 4. Result | |
" 1. <SID>(result:fizz) | |
" 2. <SID>(result:buzz) | |
" 3. <SID>(result:fizzbuzz) | |
" 4. <SID>(result:number) | |
" Pop numbers until the stack becomes empty | |
" | |
" nmap <expr> doit join(map(range(1, 100), '"<SID>getchar:entry:".(join(reverse(split(v:val, "\\zs")), ""))."\<Esc>"'),'') | |
nmap doit <SID>getchar:1<Esc><SID>getchar:2<Esc><SID>getchar:3<Esc><SID>getchar:4<Esc><SID>getchar:5<Esc><SID>getchar:6<Esc><SID>getchar:7<Esc><SID>getchar:8<Esc><SID>getchar:9<Esc><SID>getchar:01<Esc><SID>getchar:11<Esc><SID>getchar:21<Esc><SID>getchar:31<Esc><SID>getchar:41<Esc><SID>getchar:51<Esc><SID>getchar:61<Esc><SID>getchar:71<Esc><SID>getchar:81<Esc><SID>getchar:91<Esc><SID>getchar:02<Esc><SID>getchar:12<Esc><SID>getchar:22<Esc><SID>getchar:32<Esc><SID>getchar:42<Esc><SID>getchar:52<Esc><SID>getchar:62<Esc><SID>getchar:72<Esc><SID>getchar:82<Esc><SID>getchar:92<Esc><SID>getchar:03<Esc><SID>getchar:13<Esc><SID>getchar:23<Esc><SID>getchar:33<Esc><SID>getchar:43<Esc><SID>getchar:53<Esc><SID>getchar:63<Esc><SID>getchar:73<Esc><SID>getchar:83<Esc><SID>getchar:93<Esc><SID>getchar:04<Esc><SID>getchar:14<Esc><SID>getchar:24<Esc><SID>getchar:34<Esc><SID>getchar:44<Esc><SID>getchar:54<Esc><SID>getchar:64<Esc><SID>getchar:74<Esc><SID>getchar:84<Esc><SID>getchar:94<Esc><SID>getchar:05<Esc><SID>getchar:15<Esc><SID>getchar:25<Esc><SID>getchar:35<Esc><SID>getchar:45<Esc><SID>getchar:55<Esc><SID>getchar:65<Esc><SID>getchar:75<Esc><SID>getchar:85<Esc><SID>getchar:95<Esc><SID>getchar:06<Esc><SID>getchar:16<Esc><SID>getchar:26<Esc><SID>getchar:36<Esc><SID>getchar:46<Esc><SID>getchar:56<Esc><SID>getchar:66<Esc><SID>getchar:76<Esc><SID>getchar:86<Esc><SID>getchar:96<Esc><SID>getchar:07<Esc><SID>getchar:17<Esc><SID>getchar:27<Esc><SID>getchar:37<Esc><SID>getchar:47<Esc><SID>getchar:57<Esc><SID>getchar:67<Esc><SID>getchar:77<Esc><SID>getchar:87<Esc><SID>getchar:97<Esc><SID>getchar:08<Esc><SID>getchar:18<Esc><SID>getchar:28<Esc><SID>getchar:38<Esc><SID>getchar:48<Esc><SID>getchar:58<Esc><SID>getchar:68<Esc><SID>getchar:78<Esc><SID>getchar:88<Esc><SID>getchar:98<Esc><SID>getchar:09<Esc><SID>getchar:19<Esc><SID>getchar:29<Esc><SID>getchar:39<Esc><SID>getchar:49<Esc><SID>getchar:59<Esc><SID>getchar:69<Esc><SID>getchar:79<Esc><SID>getchar:89<Esc><SID>getchar:99<Esc><SID>getchar:001<Esc> | |
nmap <SID>getchar:0 <SID>(stack:init)<SID>stack:push:0<SID>getchar01: | |
nmap <SID>getchar:1 <SID>(stack:init)<SID>stack:push:1<SID>getchar10: | |
nmap <SID>getchar:2 <SID>(stack:init)<SID>stack:push:2<SID>getchar20: | |
nmap <SID>getchar:3 <SID>(stack:init)<SID>stack:push:3<SID>getchar00: | |
nmap <SID>getchar:4 <SID>(stack:init)<SID>stack:push:4<SID>getchar10: | |
nmap <SID>getchar:5 <SID>(stack:init)<SID>stack:push:5<SID>getchar21: | |
nmap <SID>getchar:6 <SID>(stack:init)<SID>stack:push:6<SID>getchar00: | |
nmap <SID>getchar:7 <SID>(stack:init)<SID>stack:push:7<SID>getchar10: | |
nmap <SID>getchar:8 <SID>(stack:init)<SID>stack:push:8<SID>getchar20: | |
nmap <SID>getchar:9 <SID>(stack:init)<SID>stack:push:9<SID>getchar00: | |
nmap <SID>getchar00:0 <SID>stack:push:0<SID>getchar00: | |
nmap <SID>getchar00:1 <SID>stack:push:1<SID>getchar10: | |
nmap <SID>getchar00:2 <SID>stack:push:2<SID>getchar20: | |
nmap <SID>getchar00:3 <SID>stack:push:3<SID>getchar00: | |
nmap <SID>getchar00:4 <SID>stack:push:4<SID>getchar10: | |
nmap <SID>getchar00:5 <SID>stack:push:5<SID>getchar20: | |
nmap <SID>getchar00:6 <SID>stack:push:6<SID>getchar00: | |
nmap <SID>getchar00:7 <SID>stack:push:7<SID>getchar10: | |
nmap <SID>getchar00:8 <SID>stack:push:8<SID>getchar20: | |
nmap <SID>getchar00:9 <SID>stack:push:9<SID>getchar00: | |
nmap <SID>getchar00:<Esc> <SID>(result:fizz) | |
nmap <SID>getchar01:0 <SID>stack:push:0<SID>getchar01: | |
nmap <SID>getchar01:1 <SID>stack:push:1<SID>getchar11: | |
nmap <SID>getchar01:2 <SID>stack:push:2<SID>getchar21: | |
nmap <SID>getchar01:3 <SID>stack:push:3<SID>getchar01: | |
nmap <SID>getchar01:4 <SID>stack:push:4<SID>getchar11: | |
nmap <SID>getchar01:5 <SID>stack:push:5<SID>getchar21: | |
nmap <SID>getchar01:6 <SID>stack:push:6<SID>getchar01: | |
nmap <SID>getchar01:7 <SID>stack:push:7<SID>getchar11: | |
nmap <SID>getchar01:8 <SID>stack:push:8<SID>getchar21: | |
nmap <SID>getchar01:9 <SID>stack:push:9<SID>getchar01: | |
nmap <SID>getchar01:<Esc> <SID>(result:fizzbuzz) | |
nmap <SID>getchar10:0 <SID>stack:push:0<SID>getchar10: | |
nmap <SID>getchar10:1 <SID>stack:push:1<SID>getchar20: | |
nmap <SID>getchar10:2 <SID>stack:push:2<SID>getchar00: | |
nmap <SID>getchar10:3 <SID>stack:push:3<SID>getchar10: | |
nmap <SID>getchar10:4 <SID>stack:push:4<SID>getchar20: | |
nmap <SID>getchar10:5 <SID>stack:push:5<SID>getchar00: | |
nmap <SID>getchar10:6 <SID>stack:push:6<SID>getchar10: | |
nmap <SID>getchar10:7 <SID>stack:push:7<SID>getchar20: | |
nmap <SID>getchar10:8 <SID>stack:push:8<SID>getchar00: | |
nmap <SID>getchar10:9 <SID>stack:push:9<SID>getchar10: | |
nmap <SID>getchar10:<Esc> <SID>(result:number) | |
nmap <SID>getchar11:0 <SID>stack:push:0<SID>getchar11: | |
nmap <SID>getchar11:1 <SID>stack:push:1<SID>getchar21: | |
nmap <SID>getchar11:2 <SID>stack:push:2<SID>getchar01: | |
nmap <SID>getchar11:3 <SID>stack:push:3<SID>getchar11: | |
nmap <SID>getchar11:4 <SID>stack:push:4<SID>getchar21: | |
nmap <SID>getchar11:5 <SID>stack:push:5<SID>getchar01: | |
nmap <SID>getchar11:6 <SID>stack:push:6<SID>getchar11: | |
nmap <SID>getchar11:7 <SID>stack:push:7<SID>getchar21: | |
nmap <SID>getchar11:8 <SID>stack:push:8<SID>getchar01: | |
nmap <SID>getchar11:9 <SID>stack:push:9<SID>getchar11: | |
nmap <SID>getchar11:<Esc> <SID>(result:buzz) | |
nmap <SID>getchar20:0 <SID>stack:push:0<SID>getchar20: | |
nmap <SID>getchar20:1 <SID>stack:push:1<SID>getchar00: | |
nmap <SID>getchar20:2 <SID>stack:push:2<SID>getchar10: | |
nmap <SID>getchar20:3 <SID>stack:push:3<SID>getchar20: | |
nmap <SID>getchar20:4 <SID>stack:push:4<SID>getchar00: | |
nmap <SID>getchar20:5 <SID>stack:push:5<SID>getchar10: | |
nmap <SID>getchar20:6 <SID>stack:push:6<SID>getchar20: | |
nmap <SID>getchar20:7 <SID>stack:push:7<SID>getchar00: | |
nmap <SID>getchar20:8 <SID>stack:push:8<SID>getchar10: | |
nmap <SID>getchar20:9 <SID>stack:push:9<SID>getchar20: | |
nmap <SID>getchar20:<Esc> <SID>(result:number) | |
nmap <SID>getchar21:0 <SID>stack:push:0<SID>getchar21: | |
nmap <SID>getchar21:1 <SID>stack:push:1<SID>getchar01: | |
nmap <SID>getchar21:2 <SID>stack:push:2<SID>getchar11: | |
nmap <SID>getchar21:3 <SID>stack:push:3<SID>getchar21: | |
nmap <SID>getchar21:4 <SID>stack:push:4<SID>getchar01: | |
nmap <SID>getchar21:5 <SID>stack:push:5<SID>getchar11: | |
nmap <SID>getchar21:6 <SID>stack:push:6<SID>getchar21: | |
nmap <SID>getchar21:7 <SID>stack:push:7<SID>getchar01: | |
nmap <SID>getchar21:8 <SID>stack:push:8<SID>getchar11: | |
nmap <SID>getchar21:9 <SID>stack:push:9<SID>getchar21: | |
nmap <SID>getchar21:<Esc> <SID>(result:buzz) | |
" Stack operations | |
let s:stack = [] | |
function! s:stack_init() abort | |
call s:stack_dump('init') | |
let s:stack = [s:SNR_PREFIX . "result:number:\<Esc>"] | |
return '' | |
endfunction | |
function! s:stack_pop() abort | |
call s:stack_dump('pop') | |
return remove(s:stack, -1) | |
endfunction | |
function! s:stack_push(n) abort | |
call s:stack_dump('push') | |
let s:stack += [s:SNR_PREFIX . 'result:number:' . a:n] | |
return '' | |
endfunction | |
let s:DEBUG = 0 | |
function! s:stack_dump(caller) abort | |
if !s:DEBUG | return | endif | |
echomsg a:caller ':' string(s:stack) | |
endfunction | |
function! s:SID() | |
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$') | |
endfunction | |
let s:SNR_PREFIX = "\<SNR>" . s:SID() . '_' | |
nnoremap <expr> <SID>(stack:init) <SID>stack_init() | |
nmap <expr> <SID>(stack:pop) <SID>stack_pop() | |
nnoremap <expr> <SID>stack:push:0 <SID>stack_push(0) | |
nnoremap <expr> <SID>stack:push:1 <SID>stack_push(1) | |
nnoremap <expr> <SID>stack:push:2 <SID>stack_push(2) | |
nnoremap <expr> <SID>stack:push:3 <SID>stack_push(3) | |
nnoremap <expr> <SID>stack:push:4 <SID>stack_push(4) | |
nnoremap <expr> <SID>stack:push:5 <SID>stack_push(5) | |
nnoremap <expr> <SID>stack:push:6 <SID>stack_push(6) | |
nnoremap <expr> <SID>stack:push:7 <SID>stack_push(7) | |
nnoremap <expr> <SID>stack:push:8 <SID>stack_push(8) | |
nnoremap <expr> <SID>stack:push:9 <SID>stack_push(9) | |
" Output | |
nnoremap <SID>(result:fizz) aFizz<CR><Esc> | |
nnoremap <SID>(result:buzz) aBuzz<CR><Esc> | |
nnoremap <SID>(result:fizzbuzz) aFizzBuzz<CR><Esc> | |
" Pop until <SID>result:number:<Esc> | |
nmap <script> <SID>(result:number) <SID>(stack:pop) | |
nmap <script> <SID>result:number:0 a0<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:1 a1<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:2 a2<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:3 a3<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:4 a4<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:5 a5<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:6 a6<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:7 a7<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:8 a8<Esc><SID>(stack:pop) | |
nmap <script> <SID>result:number:9 a9<Esc><SID>(stack:pop) | |
nnoremap <SID>result:number:<Esc> o<Esc> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" | |
" fizzbuzz-register.vim - FizzBuzz by mappings & register @n | |
" | |
" Mapping Flow: | |
" 1. doit | |
" 2. getchar:entry:{num} | |
" 3. getchar:{num} | |
" 4. fizzbuzz:{type} | |
" | |
nmap <expr> doit join(map(range(1, 100), '"<SID>getchar:entry:".v:val."\<Esc>"'),'') | |
nmap <expr> <SID>getchar:entry [setreg('n', '', 'c'), "<SID>getchar"][1] | |
nmap <expr> <SID>getchar:0 [setreg('n', @n.'0', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:1 [setreg('n', @n.'1', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:2 [setreg('n', @n.'2', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:3 [setreg('n', @n.'3', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:4 [setreg('n', @n.'4', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:5 [setreg('n', @n.'5', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:6 [setreg('n', @n.'6', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:7 [setreg('n', @n.'7', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:8 [setreg('n', @n.'8', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:9 [setreg('n', @n.'9', 'c'), "<SID>getchar:"][1] | |
nmap <expr> <SID>getchar:<Esc> "<SID>fizzbuzz:".str2nr((@n%5==0).(@n%3==0), 2) | |
nnoremap <expr> <SID>fizzbuzz:0 "o".@n."\<Esc>" | |
nnoremap <SID>fizzbuzz:1 oFizz<Esc> | |
nnoremap <SID>fizzbuzz:2 oBuzz<Esc> | |
nnoremap <SID>fizzbuzz:3 oFizzBuzz<Esc> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 | |
2 | |
Fizz | |
4 | |
Buzz | |
Fizz | |
7 | |
8 | |
Fizz | |
Buzz | |
11 | |
Fizz | |
13 | |
14 | |
FizzBuzz | |
16 | |
17 | |
Fizz | |
19 | |
Buzz | |
Fizz | |
22 | |
23 | |
Fizz | |
Buzz | |
26 | |
Fizz | |
28 | |
29 | |
FizzBuzz | |
31 | |
32 | |
Fizz | |
34 | |
Buzz | |
Fizz | |
37 | |
38 | |
Fizz | |
Buzz | |
41 | |
Fizz | |
43 | |
44 | |
FizzBuzz | |
46 | |
47 | |
Fizz | |
49 | |
Buzz | |
Fizz | |
52 | |
53 | |
Fizz | |
Buzz | |
56 | |
Fizz | |
58 | |
59 | |
FizzBuzz | |
61 | |
62 | |
Fizz | |
64 | |
Buzz | |
Fizz | |
67 | |
68 | |
Fizz | |
Buzz | |
71 | |
Fizz | |
73 | |
74 | |
FizzBuzz | |
76 | |
77 | |
Fizz | |
79 | |
Buzz | |
Fizz | |
82 | |
83 | |
Fizz | |
Buzz | |
86 | |
Fizz | |
88 | |
89 | |
FizzBuzz | |
91 | |
92 | |
Fizz | |
94 | |
Buzz | |
Fizz | |
97 | |
98 | |
Fizz | |
Buzz |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment