Нарисуйте программу или функцию, которая будет записывать в STDOUT
n
раз (каждый за один шаг) строку, содержащую точку .
в месте нахождения ходунка. Программа также должна записывать строку каждые s
секунды (или ждать s
секунды после каждой строки).
Случайное блуждание - это математическая формализация пути, который состоит из последовательности случайных шагов ( вики ), так что каждый новый шаг будет последним шагом плюс новое значение, поэтому любое t
значение шага является просто суммой всех случайных значений перед ИК плюс начальное значение.
Программа должна принимать 2 входа и использовать только пробелы " "
и точки "."
на выходе. Начальное значение ходунка будет 20
таким, что на выходе должно быть точка после 19 пробелов.
. #19 spaces then a dot
На каждом новом шаге значение будет последним значением ходунка плюс одно из них [-2-1,0,1,2]
(шанс 20% каждый). После того, как новая позиция напечатана, программа должна подождать s
несколько секунд и перейти к следующему шагу. Если шаг выводит ходунка за пределы диапазона, 1 to 40
его следует просто проигнорировать, и положение ходунка остается прежним. Количество пробелов всегда будет числом от 0 до 39.
пример
#input
Mywalk(s = 0.1, n = 30)
#output
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Соображения
Вы можете принять вход как любой разумный формат
Самый короткий код выигрывает
Это нормально, если ваша программа принимает только секунды как целые числа
n
это количество шагов?1 to 40
, потому что количество пробелов всегдаposition-1
.Ответы:
Пиф, 39
Принимает
s
в качестве первой строки ввода иn
в качестве второй. Работает в командной строке, но не с онлайн-переводчиком. Моя первая программа Pyth! Гольф советы приветствуются.источник
Q
иE
для двух входов вместо fohQ
иeQ
, если вы переводите строки, разделять входы.Матлаб, 112
Основная идея состоит в том, чтобы создать список возможных следующих позиций и затем равномерно нарисовать одну из них. Если мы, например, находимся в позиции $ l = 1 $, возможные шаги были бы,
[-1,0,1,2,3]
конечно, если бы мы выбрали,-1
это было бы неверно, и мы должны были бы остаться в той же позиции. Вот почему мы заменяем недопустимые позиции текущей позицией[1,0,1,2,3]
, а затем случайным образом выбираем элемент из этого обновленного списка.ОП попросил нас нарисовать программу, и вот мы здесь:
Транскрипция:
источник
Perl,
1361281161061019086Требуется, чтобы секунды были целым числом.
Беги с
perl <filename> <second delay> <number of steps>
.Здесь может быть больше возможностей для игры в гольф, хотя, честно говоря, я удивлен, что зашел так далеко. (Давай, только 6 байт, чтобы побить ответ bash ...)
изменения
$s
и$n
и просто используя простые$ARGV[0]
и$ARGV[1]
$"
и не нужно специально определять$u
как$undef
.$x
используется и используяmap
вместоfor
.say
вместоprint
.источник
Питон 2,
124119 байт@janrn и @Steve Eckert: У меня недостаточно репутации, чтобы комментировать ваш ответ, но по сути ваша версия сокращена. Задача состоит в том, чтобы нарисовать программу или функцию , поэтому, используя ее,
f(s,x)
вы можете сохранить довольно много битов, а также можетеmax(0,min(x,39))
избежать лишнихif
предложений. Получил это до:источник
Баш, 81
Изменить: если шаг выводит ходунка за пределы диапазона от 1 до 40, его следует просто проигнорировать, и положение ходунка остается прежним обрабатывается правильно.
Ввод из параметров командной строки. Например:
источник
Руби, 84
источник
Python 2.7,
198162143133При вызове скрипта с
python script.py
помощью первого ввода указывается количество шагов, а второго - время между шагами (принимает float или int). Есть предложения по улучшению?Правки
print ' '*p+'.'
, благодаря @corsiKlause Ho Ho Ho;
где это возможноp=max(1,min(p+r.randint(-2,2),40))
(я не могу также прокомментировать ваш ответ, но спасибо; не хочу копировать его полностью)источник
' '*p
повторить строку?Обработка,
150147Использование:
Примечание:
1000
не может быть изменено по1e3
типу.источник
Луа, 140 байт
Примечание. Для этой программы требуется пакет LuaSocket.
источник
Perl 6 , 92 байта
Использование:
источник
JavaScript (ES6), 125 байт
объяснение
Тест
Показать фрагмент кода
источник
к4, 61 знак
образец прогона:
источник
Математика,
122117 байтРекурсивная анонимная функция, принимает данные в указанном порядке. Возможно, будет дальше в гольф.
источник
Python 3, 154 байта
Сгенерируйте строку пробелов, превышающую максимальную требуемую длину, затем напечатайте ТОЛЬКО эту строку до символа с индексом «g», затем напечатайте «.». Завершите, увеличив g на случайное значение в диапазоне [-2: 2], и повторите.
Если бы кто-нибудь мог помочь мне сыграть в этот ужасный блок ввода, я был бы признателен.
источник
sys.argv
?while z:
, почему бы не использоватьfor i in range(1,z)
?sys.argv
и импорт, я не вижу, как я могу сохранить любые байты, делая это. И даже с дополнительными строками, чтобы объявитьc
тогда декремент,c
иz
, по моим подсчетам, все еще дешевле сделать это таким образом.С-функция, 114
Практически прямой перевод моего ответа Bash .
Полная тестовая программа:
источник