Только что имел «энергичный» разговор с сотрудником о краткости следующего основного заявления:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Это название этой книги , и он просто напечатает последовательность символов /
и \
символов, чередующихся между ними в случайном порядке, что приведет к шаблону, подобному следующему:
(Изображение заимствовано из http://www.flickr.com/photos/rndmcnlly/5058442151/sizes/o/in/photostream/ )
Будучи склонными к PHP, мы задались вопросом, каким будет самый компактный способ написать то же самое в PHP, и пришли к такому выводу:
while(1) { echo chr(47 + 45 * rand(0,1)); }
chr(47)
является /
символом, а chr (92) является \
. Таким образом, утверждение echo chr(47 + 45 * rand(0,1));
будет случайным выбором между ними, до тошноты.
В языке по вашему выбору, написать короткую программу или функцию для вывода бесконечной случайной последовательности \
и /
символов, где каждый символ имеет равную вероятность быть выбранным.
{}
брекеты, но это так же кратко, как вы можете это сделать.Ответы:
goto
Оператор был добавлен в PHP с версии 5.3.0 , так что вы можете использовать тот же метод , как вы бы в BASIC:источник
Так как это было перенесено в Codegolf ...
PHP 30 байт
Символ
Ð
208,£
символ 163.Пример использования (на коробке Windows):
Производит что-то похожее на:
Лучше всего он работает с моноширинным шрифтом, который точно квадратный (здесь я выбрал стандартный системный шрифт 8x8). Чтобы вернуться к вашему цвету по умолчанию, вы можете набрать
color
снова без каких-либо параметров.источник
rand()%2
(никто не указал, каким псевдослучайным оно должно быть) - Также не работает на терминалах Unicode (например, OSX)rand()%2
будет чередоваться от нуля до единицы.mt_rand()%2
будет работать, однако.Mathematica 157 байт
Не имея PETSCII, я катил свои собственные "\" и "/".
Никакой сигары для краткости здесь.
источник
Brainfuck - 534
Мой prng ( отсюда ) большой и очень медленный. Возможно, более простого LFSR или подобного было бы достаточно, но это работает:
источник
С, 39 символов (38 на MSVC)
Смотри, беги.
На MSVC, мы можем заменить
putchar()
с_putch()
и сохранить байт, но он не работает в IDEOne.источник
Common Lisp, 33
источник
print
имеет возвращаемое значение 1, поэтому, если вы используете это, вы можете просто обернуть все выражение вwhile
:while(print chr(47 + 45 * rand(0,1));
Вы, вероятно, можете играть в гольф и дальше.
источник
рубин,
2723 знака$><<
это «печать на стандартный вывод».источник
"/\\"
на'\/'
. Ruby 1.8 требует[rand(2),1]
создания символа вместо кода ascii.C ++, 45 символов
Я не собираюсь выигрывать награды за краткость, но я уже написал это, когда услышал об упомянутой книге, поэтому я просто играл в гольф.
Трюк с путчаром также работает в C ++, сокращая до 43, но вы не можете не объявлять тип возвращаемого значения в main.
источник
я пытаюсь создать, используя стиль CSS, и это работает
этот код php:
источник
font-family: courier; line-height: 0.75em; letter-spacing: -0.25em;
Использование-0.25em
для письма-интервала кажется совпасть лучше-3px
, который имеет артефакты из - за неточныйpt
кpx
конверсии.Common Lisp - 68
источник
do
.05AB1E , 7 байтов
Попробуйте онлайн!
источник
Befunge-98 (PyFunge) , 7 байт
Попробуйте онлайн!
?
посылает IP либо влево или вправо, так что либо/
или\
выталкивается перед печатью с,
. Выполняя'/
или\'
в неправильном порядке после печати, он просто что-то делает в стек (делит или меняет местами), а затем выталкивает ненужный символ перед повторением.источник
Befunge,
12987 байтРедактировать: Джеймс Холдернесс нашел безумное решение, которое вместо этого использует три цитаты.
Переполнение стека множеством лишних символов для каждого символа, но кого это волнует, когда вы можете сыграть в гольф этот 1 байт?
Старая версия
(Обратите внимание на конечный пробел)Конечный пробел явно не нужен (спасибо Мисте Фиггинс)Попробуйте онлайн
Это начинает заполнять стопку, с одним дополнительным символом для каждого напечатанного символа.
источник
#
в конце строки. Это непоследовательное поведение, но используемый вами интерпретатор позволяет: tio.run/##S0pNK81LT/3/X0k/RsneTkf5/38A"
, но мои попытки были тщетными. Поскольку вам нужна/
одна сторона"
, вам придется делить половину времени.<
после,#
чтобы заставить его работать.'
вместо этого. Попробуйте онлайн!?\","/"
Я думаю, что только из-за этого он переполняет стек намного быстрее.Не намного лучше. Требуется php 5.5+ для функции разыменования массива.
источник
while(1)echo'/\\'[rand(0,1)];
.Python, 68
В категории «мой язык отстой», у нас есть Python!
Спасибо Иво за несколько символов на импорт и
choice
.источник
> <> , 14 байт
Я надеялся, что смогу ограничить его размером 3 * 3, но не получилось.
Вы можете попробовать это здесь .
источник
Cubix , 12 байт
Посмотреть в онлайн переводчике!
Это соответствует следующей сети кубов:
объяснение
Настроить:
IP начинает идти на восток с самого начала
!
. Это команда «пропустить, если правдиво», которая равна False, когда в стеке ничего нет, поэтому команды не пропускаются."/\"
вводит строковый режим и добавляет эти два символьных кода в стек.B!o
здесь в основном нет, только переворачивая стек.IP теперь возвращается к первому
!
. Однако теперь в стеке положительные целые числа, поэтому первое"
пропускается. Это означает, что/
это уже не символ, а зеркало, отправляющее IP на север в основной цикл.Основной цикл:
Команда
D
является единственным источником случайности в Cubix. Он отправляет IP в случайном направлении. Заблокировав стрелками юг и восток, мы обеспечиваем 50-процентную вероятность движения на север и 50-процентную вероятность движения на запад.Если это возглавляет Запад, стек полностью изменен. Если он направляется на север, печатается верхний символ.
Это создает случайную последовательность косых черт, по желанию.
источник
PHP,
2631 байтвосемь натри байта короче вашего (без пробелов и скобок), на.два байта короче решения primo (без тега)
PHP 5.4.9 была текущей версией в декабре 1012 года, так что ...
требует PHP 5.5 или более поздней версии для индексации буквенных строк.Запустите
-r
или попробуйте онлайн .источник
rand()&1
сборку PHP для Windows. Вы можете быть удивлены.SmileBASIC, 20 байтов
источник
PowerShell ,
108908654533736 байтПопробуйте онлайн!
источник
for
также делаетwhile
немного корочеJava 8,
60595453 байта-1 байт благодаря @BenjaminUrquhart путем замены
print
наwrite
, так что'/'
может быть47
.Объяснение:
Попробуйте онлайн (время ожидания через 60 секунд).
источник
c->{for(;;)System.out.print(Math.random()<.5?'/':92);}
( 54 байта ) Или вы имели в виду, что Java 7 длиннее, чем Java 8? В этом случае вы действительно правы.System.out.write
и замены'/'
на47
JavaScript (Node.js) ,
595554 байтаОригинальный ответ
-4 байта благодаря ручной работе
-1 байт благодаря Конору О'Брайену
источник
while(1)process.stdout.write(Math.random()<.5?"/":"\\")
.for(;;)
вместоwhile(1)
Я думаю, вы можете использовать рекурсию.
Я думаю, вы можете использовать рекурсию.
источник
отрубил одного персонажа:
затем удалите фигурные скобки:
еще один трюк, такой же длины:
источник
rand()%2
произойдет чередование0
s и1
s. Не невероятно случайный. Вам нужно использоватьrand(0,1)
илиmt_rand()%2
вместо.Perl
Это выглядит смешно для меня:
(Извините, что не в теме. Я знаю, что это не PHP)
источник
Powershell, 37 байт
к сожалению, для Write-Host нет более коротких псевдонимов, которые не вызывают новую строку после каждого символа.
источник
16-битный код сборки x86, 10 байт
Я не помню, попал ли этот в книгу.
источник
Деление , 12 байт
Попробуйте онлайн!
источник
Perl 6 , 23 байта
loop
петли навсегда.<\ />
это список строк\
и/
..pick
выбирает одну из двух строк случайным образом..print
печатает эту случайную строку.источник
xx*