
流行っている様なのでコマンド版作った。
実行すると以下のように全半角が入り乱れた英数字がコンソールにゆっくり延々と表示され続ける。
$ mortal C4KQyoHRsNzlgrR8wShmLU1BbSgjkOrpxzz0r0bue5HW0GHF7xnAHzn1hvpKQED5QJii5zXckg1yuTzCUEF4HV4UmYyy1q4HSYNff7uSpqgIrKcUKu1giKve8XqHiGVefGAGJFAKRCcQ7UeCpJzZOtGwP0AT9Poah4OUj6crL95vxHtaTKsaf3GoWzXaXp6BpiaMYUIEFGpjJ4MEcjYKxVBuIn2OXvsQKuzGvjIVKwug8xXR66aY0M8GTLqC4berPn27Fs1DFs4eOBsPoo2nNjrfeuFZT2pR1N65XfB4qkk znIpmtxXbopZ7f18Wgz1KQta8EyT0ZulfB3eKZGs5WcIMLwsnYMYO9UpyDCpaxBRjc7j80Tg0beoaMl63fkoc0GLs5Y9BtzBSYaCGhzD8owBIWh5XIqogWzGCPeSaEO6E5VLty1DLo1DMFcsqVN5Y5AcykHyNmy6l9nKfxADUdZbTFM2TsZX1pKbJ54mSeZf2TqeSFbMtp2LmcJtFmpjxdtOzhvL9fxUbbgXNKHVb3RnE9QfcR6RPOP6aM7pngofoGFv2aRjq3M4p0FWKDah7ZBqxYc3SaAdkoVs5qdAdw5ZR3NqqzYaQO3gBB4AP1ln6PHl7Jp8OSzUiztnFpOFMmBa6cm7ICI9hD4uhk6vBDSSKO97RH4rX3458LgPcdEMSxPyJngbiUwEx6kl9GB7zeFVvNSyOLhTRPXQ8BWjOrmRMSechf560b5wKEEfLJw9hpfrT9oHtuSRho59uszbU0KTxcaH6CG33t0Td1SpaZ0wIsaPlP4EhReFXo0d8NKlOBjy9IRbH2KbBq0vvTTT8svlTMt7qGslamH8Obe1efK8xtroch3eRrV4RqxCSwAL6aQ1E2C0t7dOulVC1Awyidt79A40mua3NeosCPoSqEHHbVj6g3qiuxyxyjo3VQCYFPcIKthQQOyo9XSohh02rSzvisEy6rBNCq6NFsqAXzlWr8jtT7Y ztf7bebTBdayGaCpx52mnsoEdUC1eBw0HZipJh1ozNpCOndVPOuESm4u9vd6QWPliolKv7COzYUz1TmMd15Q3ueIMMiPyA8l2QYq0ItOSfFj2gBkFAiNDEbM7YIa0P6yp6jEpP8AwRaaCi3m1cYsft4HTCaQOuUk782N6O1E61obRl99WEaUZEf9cYjYVhiS1AxaMzkqu28baeom2iCru0y2RAGOwZ5PO8Wlj333VrLwYW
ソースはこちら。
This file contains 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
#!/usr/local/bin/gosh | |
(use srfi-1) ; list-index | |
(use srfi-14) ; char-set | |
(use math.mt-random) | |
(use gauche.parseopt) | |
(define (usage) | |
(print "Usage: mortal [options ...]") | |
(print " - s|sleep : milli second sleep") | |
(print " - l|length") | |
(print " - h|help") | |
(exit 0)) | |
(define (make-lookupper keys values :optional (comp eq?)) | |
(^ (key) | |
(let1 idx (list-index (pa$ comp key) keys) | |
(and idx (list-ref values idx))))) | |
(define rand | |
(let1 m (make <mersenne-twister> :seed (sys-time)) | |
(^ (:optional (len 2)) | |
(mt-random-integer m len)))) | |
(define (main args) | |
(let-args (cdr args) | |
((n "s|sleep=i" 1000) | |
(len "l|length=i") | |
(help "h|help" => usage)) | |
(let* ((src1 (char-set->list #[a-zA-Z0-9])) | |
(src2 (char-set->list #[a-zA-Z0-9])) | |
(lookup (make-lookupper src1 src2))) | |
(let1 body (^ _ (sys-nanosleep (* n 100000)) | |
(let1 char (list-ref src1 (rand (length src1))) | |
(display (if (zero? (rand 2)) | |
char | |
(lookup char))) | |
(flush))) | |
(if len | |
(for-each body (iota len)) | |
(while #t (body))))))) |
0 件のコメント:
コメントを投稿