Я взял экземпляр книги 10 PRINT CHR$(205,5+RND(1)); : ПЕРЕЙТИ К 10
В этой книге обсуждается искусство, созданное одной линейкой Commodore 64 BASIC:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Это просто многократно выводит случайный символ 205 или 206 на экран из набора 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/
http://www.kingsquare.nl/jsc64
При вводе приведенного выше кода в перечисленные эмуляторы вам необходимо понимать, что
- ( is *
- ) is (
- + is ]
Я решил, что было бы забавно написать строку 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 здесь:
R_
в вашей самой короткой версии должно бытьR<shift>N
, а неR<shift>A
(дляRND
). - person nneonneo   schedule 23.06.2016