Что касается практики игры в гольф, я выполнял задания на вступлении моей подруги в Python. Я обнаружил, что для этого задания было несколько стратегий, которые были очень близки по количеству персонажей, и я уверен, что люди здесь могут найти даже лучшие способы. Хотя меня больше всего интересуют способы сделать это в Python, я хотел бы знать, насколько эта программа может быть наиболее удачной, поэтому это кодовый гольф и выигрыш с кратчайшим ответом.
Правила:
Назначение изложено ниже. Пользователя нужно попросить ввести дважды, хотя подсказки не должны ничего говорить и могут быть в другом порядке.
Применяются стандартные лазейки.
Задание 3: Стрелки
Напишите программу, которая запрашивает у пользователя количество столбцов и печатает шаблон, как показано ниже. Вы можете предположить, что пользователь предоставит положительные числа. Ваша программа должна обрабатывать стрелки влево и вправо. Вот несколько примеров бегов:
How many columns? 3
Direction? (l)eft or (r)ight: r
*
*
*
*
*
How many columns? 5
Direction? (l)eft or (r)ight: l
*
*
*
*
*
*
*
*
*
Ответы:
Pyth, 23 байта
Может или не может быть действительным, основываясь на ответе на этот комментарий . Несмотря на это, я нашел это аккуратным, и, если оно неверно, ответы других Пиф также недействительны. ;)Ну, это действительно так , потому что я, видимо, пропустил явно очевидное. : /РЕДАКТИРОВАТЬ: Я выиграл !!!! YESSS !!!! Самый первый раз! : D
Живая демоверсия.
источник
m+*\ d\*Q
вместо того, чтобы перечислять чтоли. Сохраняет 2 байта.Пиф, 27
Попробуйте онлайн
Основная идея здесь состоит в том, чтобы создать одну строку, которая, скажем, 5, выглядит следующим образом:
А затем переверните его вверх дном, если мы получим в
l
качестве нашего вклада. Затем мы берем всеinput-1
строки, кроме последних, и распечатываем их.источник
Python 2,
8179 байтМожет быть, еще можно играть в гольф, но посмотрим :)
источник
l
иr
. Я не понял, что вводeval
вводится в той же среде, что и код.Pyth,
302827 байтовПопробуйте онлайн.
По-видимому, в настоящее время я связан с FryAmTheEggman совершенно другим подходом. (Я думаю, что один гениален.)
пример
объяснение
источник
PowerShell,
9185102 байт$c
. Мы вычитаем один, потому что в каждом столбце также есть,*
и нас интересует только количество пробелов.1
, напечатайте*
и выйдите - остальная часть сценария не имеет значения. +-eq
правильноl
, затем создает массив на основе индексации в массив динамически генерируемых массивов на основе значения$c
. Магия. По сути, это то, сколько пробелов в строке нам нужно.5 r
этой коллекции будет держать(0,1,2,3,4,3,2,1,0)
.%
цикл Foreach-Object , где мы выводим строку из числа пробелов X, а затем*
Пример использования:
Редактировать - удалить переменную
$e
, отправив коллекцию напрямую.Edit2 - теперь правильно составляет 1 столбец.
+ Если по-прежнему обязательно принимать ввод для направления для стрелок из 1 столбца (я утверждаю, что это не так), мы можем поменять местами расположение
Read-Host
и потерять еще пару байтов, повторно введя$d
переменную, для 106 :источник
TI-BASIC,
756557545047 байтСпасибо @ThomasKwa за правильное вычисление байтов и игру в гольф 10 байтов .
Проверено на моем TI-84 + Silver Edition.
Первое представление TI-BASIC, приветствуются предложения по игре в гольф (я пока не знаю много хитростей). Если имя играет фактор, показанный в памяти, это было 3 символа вместо 1 (я посмотрел счетчик байтов на моем калькуляторе). Эта программа ограничена ограничениями
output
функции (я думаю, что стрелками длиной 4), но я мог бы, вероятно, переключиться наtext
, который отображается графически, если это слишком мало длины.Обратите внимание, что это также не очищает экран и не приостанавливает его.
Я действительно чувствую, что уравнение, которое я использую, может быть больше в гольфе. Также кажется неправильным исключать заключительную кавычку.
источник
Ans
бесплатно, потому что вы не используете его для ввода иOutput(
не изменяетеAns
. Используйте его и избавьтесь от переменнойA
. Вы можете назначить с помощью-2(Str1="R
; нет необходимости в условном.-2
. Просто сделайтеStr1="R
для второй строки. Это делает четвертую строкуOutput(I,(1-2Ans)abs(I-L)+AL+1,"*
, которая дает вам еще 4 байта. Но ждать, есть идиома для(1-2Ans)
-Этоcos(πAns)
, что экономит один байт, плюс один больше , потому что мы получаем открывающую скобку бесплатно!Python 2, 89 байт
Работает почти так же, как мой ответ Pyth, просто вычисляя правильное количество пробелов на лету.
источник
PowerShell,
104 10297 байтNB. если вы хотите запустить его снова, откройте новый PowerShell или
rv o
сбросьте состояние переменной.По сравнению с тем, как лаконичны другие, это больно. [На 97 болит меньше, чем на 122]. Две части к этому, ни одна из них не очень удивительна; читает число столбцов, использует массив-индекс-троичный-оператор-заменитель для получения смещения и выполняет волновую функцию, начинающуюся со смещения (и настройку, чтобы она не падала при выполнении
mod 0
).(И я потратил целую вечность на эту волновую функцию, не в силах распознать свое недоразумение и набрав все честные паренсы, что это не LISP).
источник
Python 2,
9889 байтНемного длиннее.
использование
источник
NameError: name 'l' is not defined
,NameError: name 'd' is not defined
.i
иd
вовсе, просто используяrange(P())
иif P()=='l'
...)f=[...][::2*('r'>input())-1]
самом делеPerl, 85 байт
Использование:
источник
simplearrows2.pl
не кажется таким хорошим! : PPHP, 156 байт
Создает два массива, как это:
затем использует объединение массивов
$s+$t
или$t+$s
объединяет их иarray_splice
удаляет элемент посередине. Наконец вывод с использованием<?=join()
источник
Python 2,
111109104 байтаДовольно простое решение. Я уверен, что это может быть в гольф больше. Для тех, кто не знает, так
~x+n
же, какn-1-x
.Попробуйте онлайн
Редактировать : Это было в гольф в последней строке:
источник
Matlab,
10910596 байтСпасибо @beaker за то, что сэкономили мне 9 байт .
источник
x=x*10+32;
Рубин, 118 байт
2.times{
- дважды, конечно ...l,d=gets.split;
- получить входl=l.to_i;
- изменить длину на целое числоa=(d=="r"?(0..l-1):(l-1).downto(0)).to_a;
- создать массив от 0 до длины(a+a[0..-2].reverse).each{|x| puts "#{' '*x}*"}
- итерация, превращение в строки, чтобы сделать стрелкиНе самый лучший гольф когда-либо, но, эй.
источник
PowerShell,
9894 байтаЕсли бы я мог найти способ поместить Read-Host for direction в цикл foreach-object, но только запросить его, как только я смогу сохранить несколько байтов.
Изменить: 94 байта. Вместо того, чтобы проверять левое, проверяйте правое (упрощает цикл).
Оригинал 98 байт:
источник
$_
переменной - хитрый хоббит. Очень умно, и я кое-что узнал сегодня.> <> , 60 байт
2 потраченных впустую байта в нижней строке, как раздражает!
Из-за того, как ввод работает в> <>, невозможно «ждать» ввода -
i
команда проверяет, доступен ли вводимый символ в STDIN. Если он есть, он выталкивает значение ASCII этого символа, а если нет - 1.Это означает, что для использования этой программы номер и направление должны быть уже готовы на STDIN, например,
3r
для стрелки размера 3, указывающей вправо. Я не уверен, если это дисквалифицирует эту запись, дайте мне знать ваши мысли: о)Я также напишу описание, если кто-то хочет.
источник
:
10?)PHP, 154 байта
Это выглядит действительно повторяющимся, но это делает желаемое:
Запускается из командной строки, как:
источник
Python, 88 байт
Edited
источник