Недавно пришла весна, и это почти время, когда цветы начинают прорастать. Поэтому я хочу, чтобы вы помогли им вырасти.
Твое задание:
Даны два числа, m
и n
выводятся m
цветы, случайно расположенные на n*n
сетке.
Один цветок выглядит так:
&
|
Положение цветка определяется тем, где он &
находится. При случайном размещении двух цветов никакие два не могут быть в одном месте. Если один цветок &
перекрывает другой цветок |
, покажите &
. Нижний ряд цветов может не содержать никаких &
.
Ввод может быть в виде числа или строки любым из стандартных методов.
Вывод может быть списком строк, каждая строка представляет одну строку сетки или строку с разделителями, следуя той же рекомендации, что и список. Стандартные методы вывода. Трейлинг разрешен, и вы можете использовать вкладки, чтобы отделить цветы. Обратите внимание, что каждая сетка должна быть полностью заполнена пробелами или чем-то еще.
Обратите внимание , что вход всегда будет действовать, вы всегда будете иметь возможность легально соответствовать m
цветы в n
по n
сетке.
Тестовые случаи:
Поскольку из-за всего бита «случайного размещения» могут быть гарантированы только очень узкие тестовые случаи, это будет единственный вид тестового примера с предоставленным ответом. Но я попробую все заявки онлайн, чтобы убедиться, что они действительны, используя некоторые тестовые случаи.
Входные данные для тестовых случаев приведены в форме m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Обратите внимание, что перевод строки после слова Output:
в тестовых случаях не является обязательным.
Другие тестовые случаи:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
Код гольф, поэтому самый короткий код выигрывает!
Спасибо ComradeSparklePony за то, что приняли этот вызов и разместили его в подарочной коробке Secret Santa !. Песочница
Ответы:
Желе , 33 байта
Попробуйте онлайн!
Как?
источник
m
и /n
или почемуsquare m
? что это за нилад ?rotate
. Отличная работа; отличная разбивка!PHP (> = 7,1),
135 131 128 116 110109 байтпринимает входные данные из аргументов командной строки; запустить
-nr
или проверить это онлайн .сломать
источник
-r
свободен ; он говорит PHP запускать код из аргумента командной строки.-n
сбрасывает PHP к настройкам по умолчанию.Python 2 , 150 байт
Попробуйте онлайн!
Как?
Принимает
input()
из STDIN и распаковывает предоставленный кортеж (разделенную запятыми строку десятичных целых чисел как3,6
) вn
иm
.Создает упорядоченную одномерную
n*(n-1)
длинную «клумбу»,b
объединяя:- список, содержащий «цветок»
[1]
многократноm
; и- список, содержащий «пробел»,
[0]
повторенныйn*~-n-m
раз *.* Оператор головастика
~
(~x=-1-x
) сохраняет 2 байтаn*~-n-m
вместо более нормального видаn*(n-1)-m
.Shuffles ( с помощью
random
«Sshuffle
функцию ) эту клумбу, чтобы расположить цветы и места случайным образом средиn*(n-1)
позиций.Шаги по 0-индексированным строкам
r
иprints
каждая по очереди создает двухмерную клумбу из одномерной ...В последней двумерной (
n*n
) клумбе есть стебли, наs
один ряд ниже цветочных головокf
, если и только если нет цветочной головки для показа. Это достигается за счет (операцию XOR^
)f
с ,-s
гдеf
иs
являются1
s и0
s от до и с использованием результата в качестве индекса в строке длина 3' &|'
:Для того, чтобы получить
f
и функция используется с двумя копиями одного размерной клумбы, одна с конечными пробелами (цветочные головки) и один с ведущими пробелами (стебли). Все это создается для каждой строки (для сохранения байтов), и требуемая строка вырезается с помощью .s
zip
n
n
[r*n:r*n+n]
источник
Python 2 ,
184179 байтПопробуйте онлайн!
источник
Python 2 , 129 байт
Попробуйте онлайн!
Генерирует выходную строку по одному символу за раз. Случайно выбирает, является ли текущая ячейка цветком с вероятностью, равной числу
m
оставшихся цветов, деленному на количество оставшихся пробелов. Добавляет новую строку каждыеn
символы. Пустая ячейка заполняется стеблем,|
если символомn
конца является a&
.источник
PHP, 111 байт
Онлайн версия
-1 байт для физического Newline
решение 115 байт с использованием макс
Таким образом, с 137 байтами тасует первую часть строки
источник
JavaScript (ES6), 157 байт
Объяснение: Создает массив, представляющий сетку цветов плюс новые строки. Рекурсивно случайным образом ищет пустые квадраты, в которые можно поместить цветы, пока не будет достигнуто желаемое количество цветов. Наконец, стебли цветов образуются там, где для них есть место.
источник
Древесный уголь , 27 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Вход
n
.Измените направление печати по умолчанию на вниз.
Ввод
m
и цикл много раз.Перейти в случайное место на сетке.
Если цветок уже есть, продолжайте прыгать в случайные места, пока не найдете подходящее место.
Распечатать головку цветка.
Распечатайте стебель, если внизу цветка еще нет.
источник