Bash版本的C64代码艺术:10 PRINT CHR $(205.5 RND(1)); :GOTO
我拿起了这本书的副本10 PRINT CHR $(205.5 RND(1)); :GOTO 10
> http://www.amazon.com/10-PRINT-CHR-205-5-RND/dp/0262018462 本书讨论了Commodore 64 BASIC的单行产生的艺术: 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 这只是从PETSCII集合中重复打印随机的字符205或206到屏幕: > http://en.wikipedia.org/wiki/PETSCII 我不知道为什么原件使用字符205和206而不是相同的109和110.同样,我更喜欢在开头添加一个清晰的。这是我通常输入到C64: 1?CHR$(147) 2?CHR$(109.5+RND(1));:GOTO2 RUN 您可以在模拟器中自己尝试这一切,例如使用Flash或JavaScript的模拟器: > http://codeazur.com.br/stuff/fc64_final/ 当将上述代码输入到列出的模拟器中时,您需要意识到这一点 >(是* 我决定写一个bash线做类似的事情会是有趣的。 我目前有: clear; while :; do [ $(($RANDOM%2)) -eq 0 ] && (printf "") || (printf "/"); done; 两个问题: 任何建议,使这更简洁? 最佳答案 bash最短(40个字符): yes 'c=(╱ ╲);printf ${c[RANDOM%2]}'|bash 这是一个简短的zsh(53个字符): c=(╱ ╲);clear;while :;do printf ${c[RANDOM%2+1]};done 这是一个我喜欢放入我的.bashrc或.profile的别名 alias art='c=(╱ ╲);while :;do printf "%s" ${c[RANDOM%2]};done' 有趣的比较这个最短我可以为C64 BASIC(23个字符): 1?C_(109.5+R_(1));:G_1 下划线分别是移位H,移位N和移位O。我不能粘贴这个角色,因为它们是针对PETSCII的。此外,C64输出看起来更漂亮;) 您可以在这里阅读C64 BASIC缩写: > http://www.commodore.ca/manuals/c64_programmers_reference/c64-programmers_reference_guide-02-basic_language_vocabulary.pdf
这个怎么样?
# The characters you want to use chars=( $'xe2x95xb1' $'xe2x95xb2' ) # Precompute the size of the array chars nchars=${#chars[@]} # clear screen clear # The loop that prints it: while :; do printf -- "${chars[RANDOM%nchars]}" done 作为具有较短变量名称的单行,使其更简洁: c=($'xe2x95xb1' $'xe2x95xb2'); n=${#c[@]}; clear; while :; do printf -- "${c[RANDOM%n]}"; done 你可以摆脱循环,如果你提前知道要打印多少个字符(这里80 * 24 = 1920) c=($'xe2x95xb1' $'xe2x95xb2'); n=${#c[@]}; clear; printf "%s" "${c[RANDOM%n]"{1..1920}"}" 或者,如果要直接包含字符而不是其代码: c=(╱? ╲); n=${#c[@]}; clear; while :; do printf "${c[RANDOM%n]}"; done 最后,随着数组c的大小预先计算,并删除不必要的空格和引号(我不能比这短): c=(╱? ╲);clear;while :;do printf ${c[RANDOM%2]};done 用于此行的字节数: $ wc -c <<< 'c=(╱? ╲);clear;while :;do printf ${c[RANDOM%2]};done' 59 编辑。一个有趣的方式使用命令是: clear;yes 'c=(╱ ╲);printf ${c[RANDOM%2]}'|bash 它使用50字节: $ wc -c <<< "clear;yes 'c=(╱ ╲);printf ${c[RANDOM%2]}'|bash" 51 或46个字符: $ wc -m <<< "clear;yes 'c=(╱ ╲);printf ${c[RANDOM%2]}'|bash" 47 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |