Введение
Вслед за выпадением пакета левой панели npm , давайте создадим код для реализации левой панели.
Левая колодка функция состоит из 2 -х аргументов по умолчанию и 1 дополнительного аргумента в виде строки , длины , ( padchar ). Если padchar не указан, он стандартизируется до пробела . Давайте рассмотрим пример с двумя аргументами:
left_pad("abc", 6)
Сначала мы наблюдаем длину строки, которая равна 3 . После этого нам нужно заполнить эту строку слева до тех пор, пока длина полной строки не достигнет длины, указанной в функции. В этом случае 6 . Поскольку padchar не задан , нам нужно заполнить это пробелами:
abc
Это строка с 3 пробелами и исходной строкой, в результате чего получается строка длиной 6. Вот пример с заданным padchar:
left_pad("abc", 6, "-")
Мы просто делаем то же самое, что и в примере выше, но заменяем пробелы на padchar. В этом случае дефис:
---abc
Задание
Учитывая строку , длину и, возможно, дополнительный аргумент padchar , выведите строку с левым отступом . Вы можете предположить, что число длины равно или больше, чем длина строки. Padchar всегда будет состоять из 1 символа.
Контрольные примеры
left_pad("string", length, ("padchar")) === "left-padded string"
left_pad("foo", 5) === " foo"
left_pad("foobar", 6) === "foobar"
left_pad("1", 2, "0") === "01"
left_pad("1", 2, "-") === "-1"
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
Ответы:
Pyth,
1311 байтПопробуй это здесь .
Принимает входные данные из STDIN в виде строки в первой строке, длины во второй строке и необязательного дополнения char в третьей строке.
источник
JavaScript (ES6), 43 байта
источник
p+=s
вы можете добавить 2 байтаp+=[s]
, и это сработает.JavaScript (ES6),
374344 байтаТест:
Не уверен, что если вы хотите посчитать объявление функции, я бы добавил это.
источник
slice
короче чемsubstr
.console.log(f("whatever",10, "*"))
, ноconsole.log(("*".repeat(10)+"whatever").substr(-10))
Javascript ES6, 35 байт
Попытайся. Я считаю, что это самое короткое возможное значение, которое в настоящее время возможно в Javascript.
источник
Python 3,
333129 байтДовольно просто.Спасибо @xnor за напоминание мне,str.rjust
вещь. :ПДля той же длины (также благодаря xnor):
Предыдущее решение:
источник
(x*b+a)[-b:]
илиa.rjust(b,x)
. На самом деле,str.rjust
само по себе, возможно, работает на все это.rjust
был встроенным, спасибо!f(1, 2, 0) === '01';
05AB1E ,
119 байтовКод:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн .
источник
JavaScript (ES5), 70 байт
Использование рекурсии ...
Мой начальный ход был только 57 байтов:
Но только прошли первые 2 теста:
Мне все еще нравится более короткий, потому что на практике передача чисел в функцию манипуляции со строками не является необходимой мне функцией.
источник
Mathematica, 13 байт
Только для встроенного ответа № 3 (первый был
Range
, второй былSurd
) Или менее встроенный: (35 байт)источник
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Обращение к власти: Мартин) (но тоже здравый смысл)Юлия, 4 байта
Проходит все тестовые случаи:
источник
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
Javascript (ES6), 55 байт
Создайте пустой массив значений и присоедините версию.
Это более читабельно, но
return
добавляет еще несколько символов.источник
`
дляinline code blocks.
.+=
возвращает значение своего левого операнда, поэтому вторая версия становится короче:(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
но она становится длиннее, когда вы добавляете многоэлементные строки заполнения.Баш, 57 байт
Параметры: ширина строки padchar
Сделайте строку из пробелов ширины .
Преобразуйте каждый пробел в padchar .
Напишите отступы затем строку .
источник
Python, 41 байт
Без встроенной настройки, 43 байта:
(не то, что от него ожидают, но он проходит тестовый набор)
источник
s=str
и заменитьs
сstr
на тот же счетчику байтов.Желе , 12 байт
Так много ссылок на переменные. Разве желе не должно было быть молчаливым языком?
Попробуйте онлайн!
Как это работает
источник
padchar (⁵, defaults to 10)
не должно по умолчанию20
или32
??
проверяет, имеет ли он значение по умолчанию 10 и в этом случае дает пробел.JavaScript ES7, 16 байт
встроенные модули ftw! Работает только на Firefox 48 и выше. Действительно, эта функция была добавлена 12 марта.
Это требует ввода, как:
источник
Щука , 67 байт
Вздох . Пустая строка
""
оценивается какtrue
. Зачем!?смешанный смешанный смешанный смешанный щучий суп ...
источник
Пайк , 12 байт (неконкурентный)
добавлен узел ввода, исправление ошибки на узле len, изменение результатов по умолчанию на узле назначения после публикации запроса.
Объяснение:
источник
JavaScript ES6, 38 байт
Альтернативное решение.
источник
JavaScript (ES6), 34 байта
Я использовал рекурсивное решение.
источник
Рубин, 42 байта
Параметры: строка, размер, падчар.
Тестовый набор ниже; следует напечатать все "true", просто поместите все в один файл.
источник
Java 8,
8688 байтЭто функция. Третий аргумент - это
varargs
разрешение необязательного pad char (по умолчанию' '
)Рекурсия! +2 байта (добавлены скобки из-за несовместимой ошибки типа)
источник
PHP,
5448 байтИспользует кодировку Windows-1252.
Запустите так (
-d
добавлено только для easthetics):Старая версия (без встроенной):
Tweaks
str_pad
вместо цикла. Оставляя старую для справки, так как встроенные не одобряютсяисточник
R, 50 байтов
Опоздал на вечеринку снова, но здесь идет:
Это просто печатает вывод в stdout, но фактически не возвращает заполненную строку (не был уверен, является ли это требованием для вызова). Если это необходимо, решение немного длиннее - 61 байт:
источник
C, 64 байта
Попробуй это здесь .
источник
gcc
не позволитundefined reference to function printf
пройти и включать вprintf
себя, но не тут -то дляmemset
,asprintf
иstrlen
. Вам нужно добавить определения#include<string.h>
... и т.д., чтобы сделать это действительным.gcc-5.1
. Я не уверен, используют ли они флаги компилятора или что-то еще за кулисами, о которых я не знаю. Сначала я использовал это в качестве оправдания тому, что он не работает в вашей среде, но теперь я не уверен ...gcc 5.2.1
на Linux, так что вы можете сойти с ума, говоря,Ideone C, 64 bytes
но если вы хотите утверждать, что это C, сделайте его компиляцией. : pf
беру четыре параметра, а не 3? Вам нужен адрес строки или ...? В любом случае,f
следует принять не более 3 аргументов.