我拿起一本书10 PRINT CHR$(205.5+RND(1)); : 转到 10
本书讨论了 Commodore 64 BASIC 单行所产生的艺术:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
这只是从 PETSCII 集合中重复地将字符 205 或 206 随机打印到屏幕上:
我不确定为什么原版使用字符 205 和 206 而不是相同的 109 和 110。另外,我更喜欢在开头添加一个 clear。这是我通常在 C64 中输入的内容:
1?CHR$(147)
2?CHR$(109.5+RND(1));:GOTO2
RUN
您可以在模拟器中自己尝试这一切,例如使用 Flash 或 JavaScript 的模拟器:
- http://codeazur.com.br/stuff/fc64_final/
http://www.kingsquare.nl/jsc64
将上述代码输入到列出的模拟器中时,您需要意识到
- ( 是 *
- ) 是 (
- + 是 ]
我决定写一个 bash 行来做类似的事情会很有趣。
我目前有:
clear; while :; do [ $(($RANDOM%2)) -eq 0 ] && (printf "\\") || (printf "/"); done;
两个问题:
- 有什么建议可以让这个更简洁吗?
- 对更好的输出字符有什么建议吗?正斜杠和反斜杠几乎没有那么漂亮,因为它们的点不对齐。PETSCII 中使用的字符是特殊字符,而不是斜线。我没有在 ASCII 中看到任何可以正常工作的东西,但也许你可以建议一种从 UTF-8 或其他东西中提取字符的方法?
迄今为止最好的答案
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
下划线分别为 shift+H、shift+N 和 shift+O。我无法在此处粘贴字符,因为它们是 PETSCII 特有的。此外,C64 输出看起来更漂亮;)
您可以在此处阅读有关 C64 BASIC 缩写的信息: