Вы знаете, они выглядят так:
Цель состоит в том, чтобы нарисовать музыку, которая выглядит следующим образом:
= = =
= = = = =
== = == = == = ====
== ==== == === = = =======
======== == ==== = ========= =
=================================
Правила таковы:
- Ширина иллюстрации составляет 33 символа, но если вам нужно, допускаются любые конечные пробелы, превышающие эту ширину.
- Каждый столбец состоит из знаков равенства (
=
). - Каждый столбец имеет произвольную высоту (высота следующего столбца никоим образом не должна зависеть от высоты предыдущего столбца), варьируясь от 1 до 6. Также хорошо, если по крайней мере возможно получить какой-либо ввод без строгого математическая вероятность (т. е. некоторые входные данные могут появляться реже, чем другие).
- Столбец не может плавать над дном и иметь пробелы в нем.
- Поскольку каждый столбец имеет минимальную высоту 1, в последней строке также не должно быть пробелов - он всегда состоит из 33 знаков равенства.
- Так как столбцы с высотой 6 не могут быть (в конце концов, все они случайны): в этом случае вам не нужно иметь верхнюю строку из пробелов. Применяется к любым крайним случаям такого рода: если вдруг в вашем коде не было столбцов с высотой больше 1, вам не нужно иметь дополнительные строки из пробелов выше нижней строки.
- Вы не берете никакой информации .
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
)Math.random()
напрямую вычисляется из предыдущего вызова, если известны параметры линейного конгруэнтного генератора, что означает, что вам придется изменить большинство встроенных случайных функций, чтобы соответствовать этим критериям. Я полагаю, что это лучше сформулировано.Ответы:
Pyth , 13 байт
И я перехитрил желе .
Попробуйте онлайн!
источник
Dyalog APL , 14 байтов
объяснение
33⍴6
33 повторения 6?
случайное целое число в диапазоне [1, n ] для каждого из 33 6 с'='⍴¨⍨
символ равенства повторяется каждый из этих раз↑
преобразовать список списков в таблицу строк⍉
транспонировать строки в столбцы, столбцы в строки⊖
перевернуть с ног на головуПример работает
Введено шесть пробелов:
источник
Желе, 14 байт
Попробуй это здесь.
источник
6ṗ33X
работает также.JavaScript (ES6), 116 байт
Проверьте это в анимированном фрагменте ниже:
источник
C 87 байтов
Звоните как
f();
. Этот ответ основан на том факте, что шесть последовательных вызововtime(0)
возвращают один и тот же результат (в секундах). Это практически всегда так, но, вероятно, стоит упомянуть.источник
x
иy
избегать объявлять их какint
. Раз нет ввода, это разрешено? Если да, это хорошая идея!f();
Thats приятно! Я не знал, что С может сделать это.Чеддер,
6865 байт (неконкурирующий)О_О Чеддер на самом деле делает хорошо! Использует
sprintf
иturn
делает основную часть работы.vfuse
это вертикальный предохранитель, означающий, что он присоединяется к массиву, но вертикально. Это очень гольф, но и довольно быстро. Версия - prerelease v 1.0.0-beta.10 , которая публикуется позже .объяснение
Пример запускается:
источник
05AB1E , 22 байта
Нет автоматического соединения, нет автоматического заполнения при переносе, osabie обречена на это. Код:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
Python 2, 95 байт
источник
Python 3, 115 байт
У Python даже не было шанса ...
Как это работает
Попробуйте это на Ideone
источник
МАТЛ,
20191817 байт1 байт сохранен благодаря @Luis
Попробуйте онлайн
источник
SpecaBAS - 76 байт
Печатает знак равенства по соответствующей экранной координате.
с пятном цвета и
GOTO
петли становитсяисточник
К4, 18 байт
По сути это порт решения APL (неудивительно).
источник
C #,
200117 байтовЯ переезжаю в @Lynn алгоритму и сохраняю 83 байта!
C # лямбда без ввода и где выход является строкой. Попробуйте онлайн .
Код:
источник
Haskell, 164 байта
Будучи чисто функциональным языком, Haskell был обречен с самого начала. Я все равно это сделал, и оказалось, что необходимые накладные расходы не так уж велики.
Использование:
Объяснение:
чтобы иметь возможность использовать
newStdGen
иrandoms
быть в состоянии использовать
transpose
определяет функцию, которая печатает пробел, если ее первый аргумент больше, чем второй, и
=
иначе. Вызывается сmap (f m) [0..5]
заданным номеромm
и списком[0,1,2,3,4,5]
. (Увидеть ниже)Создает новый стандартный генератор случайных чисел
занимает 33 случайных целых числа
Вычисляет
m = n % 6
и отображает(f m)
в списке[0,1,2,3,4,5]
, что приводит к одному из"======", " =====", ..., " ="
. Эти строки отображаются в списке из 33 случайных целых чисел, в результате чего получается таблица. (Таблица в Haskell - это список списков)переключает столбцы и строки таблицы
печатает каждую строку в таблице
источник
CJam, 19 байтов
Попробуйте онлайн!
объяснение
источник
Mathematica, 78 байт
Анонимная функция. Не требует ввода и возвращает строку в качестве вывода. Символ Unicode - это U + F3C7, представляющий
\[Transpose]
.источник
R, 102 байта
объяснение
m=rep(" ",33)
инициировать пустой вектор для предстоящего циклаn=ifelse(m=="=",m,sample(c(" ","="),33,T,c(6-i,i)))
Если=
в ряду выше есть, то убедитесь, что у места внизу также есть=
; в противном случае случайно выбрать. Случайные выборки взвешиваются, чтобы убедиться, что а) нижний ряд - это все=
и б) вы получите аккуратную форму для всего этого.cat(n,"\n",sep="")
выведите эту строку в консоль с новой строкой в конце и без пробелов между элементами!источник
PHP
959289 байтОчень доволен этим на самом деле. Некоторое время у меня была версия, которая теоретически могла генерировать любые входные данные, но на практике генерировала бы только сплошные блоки =, но это и короче, и равномерно распределено!
Создает 7 неопределенных, что-то замечает, когда вы запускаете его, но это нормально.
редактировать: хорошо, я только что узнал, что объединение является псевдонимом взрыва, так что это хорошо.
источник
J, 18 байт
Очень простые вещи. С исправлением от миль!
источник
>:?33#6
чтобы получить случайные целые числа в диапазоне [1, 6]. Кроме того, копия ранга 0 будет короче, используя'='#~"0
. Это приводит|.|:'='#~"0>:?33#6
к тому, что, к сожалению, экономия в 2 байта в конечном итоге уменьшается за счет включения оператора приращения.Perl, 64 байта
использование
Perl, 68 байт
Альтернативная версия, которая использует управляющие коды ANSI для перемещения курсора, сначала опуская 6 строк вниз, затем записывая исходную строку (все строки
=
), перемещая строку вверх и печатая замененную строку (s/=/rand>.4?$&:$"/ge
) несколько раз, пока не произойдет больше подстановок. Это может привести к написанию более шести строк, но в итоге оно будет заменено пустой строкой.Примечание:
\x1b
s на самом деле символ ASCII Esc.источник
Рубин,
102998483 байтаНовый и значительно более короткий подход, где я начинаю со строки, полной новых строк.
Старая версия ...
... дал вывод с новой строкой. Моя первая подача в Ruby с использованием подхода, подобного подходу @ Barbarossa, но в одном цикле.
Что мне понравилось в Ruby при работе над этой программой:
.times
петляrand()
который довольно короткийМне не понравилось (в основном с точки зрения игры в гольф):
обязательныйне так обязательно в$
для глобальных переменных.times
циклекоторый может быть заменен однострочным блокомdo
иend
ключевые слова0
это не обманисточник
JavaScript, 179 байт
Все еще работаю над игрой в гольф. Мне нравится это, так как это просто.
Использование:
источник
.map(n=>{return Math.floor(Math.random() * 6)+1})
на.map(n=>Math.floor(Math.random()*6)+1)
. Лямбдаif (n<=m+1){r[m]+="="}else
может бытьif(n<=m+1)r[m]+="=" else
Далее 190 байт
Я должен был создать свой собственный PRNG , сдвиг Xor отсюда . Слово
f
- это слово, которое вы бы назвали несколько раз, чтобы увидеть результат.Попробуйте онлайн - обратите внимание, что системное время - это одно из двух значений, в зависимости от того, какой сервер (или что-то еще) выполняет код. Кроме того, по какой-то причине они не меняются в онлайн-среде IDE. Таким образом, вы увидите только два возможных выхода. Вы можете вручную установить начальное значение, изменив
utime
его на целое число.Ungolfed
Разрушенный онлайн
источник
JavaScript, 165 байт
Новые строки не нужны, но они помогают увидеть, что происходит. Не самое оптимальное решение, но оно имеет смысл для меня, по крайней мере.
источник