Вдохновленный этим чатом мини-вызов.
Если в качестве входных данных указана строка (только для печатных символов ASCII), выведите строку с буквами «дождь» вниз. Каждая буква должна быть случайным числом строк вниз (случайным образом между 0
и длиной строки, каждая из которых имеет ненулевую вероятность), и только один символ в столбце. Все возможные выходы должны снова иметь ненулевую вероятность появления.
Это может немного сбивать с толку, так что вот пример (взят из той CMC):
Hello World
d
H
o
llo
l
W
e
r
Обратите внимание, как на H
один пробел вниз, на d
ноль вниз, и llo
все они выстраиваются в линию. Это r
самый дальний спуск, 9
но он все равно меньше длины струны от вершины. Это только один пример, есть десятки других возможностей для ввода Hello World
.
Другие примеры могут быть:
test
t
e
s
t
PP&CG
& G
P
P C
- Вход и выход могут быть заданы любым удобным способом .
- Вход гарантированно не пустой (т. Е. Вы никогда не получите в
""
качестве ввода). - Вы можете распечатать его в STDOUT или вернуть как результат функции.
- Допустимы либо полная программа, либо функция.
- Допускается любое количество посторонних пробелов, при условии, что символы выстроены в линию соответствующим образом (например, не стесняйтесь использовать прямоугольник).
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
R 104 байта
Попробуйте онлайн!
Ввод в виде строки; пишет в стандартный вывод.
источник
scan(,'')
и вложив кучу вызовов, но, честно говоря, я очень предпочитаю функциональный подход, этот другой отвратителен для минимального усиления. Хотя, возможно, зажгут некоторые идеи. Попробуйте онлайн!sample(l,,T)
достаточно вместоsample(l,l,T)
(-1 байт).JavaScript (ES6), 72 байта
Вводит в виде списка символов. Возвращает матрицу символов.
Попробуйте онлайн!
источник
(0|'A') === (0|undefined)
что оставшиеся буквы больше не будут отображаться в последнем ряду. (Так что, по сути, это так же, как|!a[y+1]
был полностью удален.)Math.random()
возвращает число в [0, 1), поэтому не можетMath.random()<.5
статьMath.random()>0
?math.random()
реализацию, которая имеет внутреннее состояние и, следовательно, не может генерировать уникальный вывод.Pyth - 9 байт
Выводит список строк.
Попробуйте онлайн .
источник
J ,
3019 байтПопробуйте онлайн!
источник
0|:]{.~"+_1-#?#
за 15 байтов0|:]{.~"+_2-#?@##
для 17 байтов, не изменяя поведение вашего ответа.Japt , 8 байт
-1 байт от @Shaggy
Попробуйте онлайн!
источник
APL (Dyalog Unicode) , 16 байт SBCS
Функция анонимного молчаливого префикса
≢
длина строки1+
один добавил к этому≢⍴
"длина" копии этого∘?
случайные целые числа в диапазоне 1 ... те, а затем ...∘-
отрицать, а затем ...⊢↑¨⍨
возьмите несколько элементов из каждого символа, добавив слева пробелы∘↑
смешать список строк в матрицу, добавив пробелы справа⍉
транспонированияПопробуйте онлайн!
источник
Japt , 8 байт
Попытайся
источник
Желе , 10 байт
Попробуйте онлайн!
источник
0..(length - 1)
? Вопрос указывает между 0 и длиной строки. Или я что-то упустил?Рубин ,
595755 байтПопробуйте онлайн!
Входы 1D, выходы 2D массив символов.
источник
PHP , 88 байт
Попробуйте онлайн!
Или 94 байта, используя PHP функцию шифрования случайных целых .
Попробуйте онлайн!
Вход от
STDIN
, выход наSTDOUT
. Беги как:-1 байт (пустая строка вместо пробела) и +1 байт (ошибка на стороне правил), спасибо только @ ASCII!
источник
<?php
что?>
закрывается. также кажется, что это нормально, если$o
пустая строкаrand
функции PHP , так как вы можете иметь входной текст, который требует больше случайного, чем размер внутреннего seed rand использует, так что технически ваш ответ не может удовлетворить это условие во всех ситуацияхrand
для многих бесполезен, однако все поддерживаемые / производственные версии PHP (7.1+) используют Mersenne Twister RND (mt_rand
) внутри для генерации случайных чисел. Вы обеспокоены тем, что это не является достаточно случайным для этой задачи?mt_rand
также использует внутреннюю систему псевдослучайных чисел, а также имеет ограничения. Предполагая, что PHP скомпилирован с 64-битными числами (и что начальное число, используемоеrand
илиmt_rand
принимающее этот полный диапазон) будет генерировать уникальные выходные данные для слов длиной до 13 символов или короче. Довольно ограниченно, если вы спросите меняДревесный уголь ,
109 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: 1 байт сохранен благодаря @ ASCII-only. Объяснение:
Как указывает только ASCII, вы можете перемещать буквы случайным образом вверх, а не вниз для того же эффекта (за исключением того, что может быть дополнительный пробел внизу, а не вверху). Печать массива символов вверх эквивалентна обычной печати строки, поэтому заполнение затем просто смещает каждый символ по вертикали на случайную величину.
источник
05AB1E (legacy) , 9 байтов
Ввод в виде строки или списка символов (либо в порядке).
Попробуйте онлайн.
Гораздо медленнее 9-байтовая альтернатива:
Ввод в виде списка символов.
Попробуйте онлайн.
Оба используют устаревшую версию 05AB1E, так как новая версия требует явного
€S
доζ
..Объяснение:
источник
gD¸s∍ÝδΩ
но это дольше ... и ооо ... это даже не работает в новом 05AB1E;).C (gcc) , 131 байт
Попробуйте онлайн!
источник
R[j=i%l]?32:s[j]));
вместоR[j]?32:s[j]))j=i%l;
Юлия, 69 байт
Это определяет функцию,
f
которая принимаетString
илиVector{Char}
возвращает aMatrix{Char}
.Ungolfed:
Пример:
Это, безусловно, может быть лучше; мои навыки игры в гольф довольно ржавые.
Попробуйте онлайн!
источник
Perl 5
-F
,5049 байтов-1 от @DomHastings
Попробуйте онлайн!
источник
map$_||$",@$_
!PowerShell ,
10810298 байт-4 байта благодаря маззи
Попробуйте онлайн!
В основном, итерации
1..length
строки дважды, один раз, чтобы получить случайное расположение строк для каждого символа, и второй раз, чтобы фактически построить каждую строку, используя эти индексы. Выяснение того, как сделать это за один раз, - это большая экономия байтов.источник
SmileBASIC 3, 62 байта
источник
Красный , 84 байта
Попробуйте онлайн!
источник
Python - 92 байта
источник
import random
from random import*
вместо этого.map(None,...
что не работает в Python 3, поэтому вы должны указать Python 2 в заголовке.K (ок) , 20 байтов
Решение:
Попробуйте онлайн!
Объяснение:
источник
Python 3 ,
140131 байтПопробуйте онлайн!
источник
Python 3, 208 байт
Создает список случайных выборов, затем создает список столбцов с пустым пространством везде, кроме индекса, указанного каждым случайным выбором. Столбцы транспонируются в строки и выводятся с новой строкой между ними.
Попробуйте онлайн!
источник