Wprowadzenie
W ślad za lewy pad pakietu npm opadu , zjedzmy golf kodu dla wdrożenia lewy-pad.
Funkcja lewego pada składa się z 2 domyślnych argumentów i 1 dodatkowego argumentu w postaci ciągu znaków , długości ( padchar ). Jeśli padchar nie zostanie podany, jest to standaryzowane do znaku spacji . Weźmy przykład z dwoma argumentami:
left_pad("abc", 6)
Najpierw obserwujemy długość łańcucha, która wynosi 3 . Następnie musimy wstawić ten ciąg po lewej stronie, aż długość pełnego ciągu osiągnie długość podaną w funkcji. W tym przypadku 6 . Ponieważ padchar nie jest podany , musimy wypełnić to spacjami:
abc
Jest to ciąg z 3 spacjami i ciągiem początkowym, w wyniku czego powstaje ciąg o długości 6. Oto przykład z podanym padchar:
left_pad("abc", 6, "-")
Po prostu robimy to samo co w powyższym przykładzie, ale zastępujemy spacje przez padchar. W tym przypadku łącznik:
---abc
Zadanie
Biorąc pod uwagę ciąg , długość i być może dodatkowy argument padchar , wypisuje lewy ciąg znaków. Możesz założyć, że liczba długości jest równa lub większa niż długość łańcucha. Padchar zawsze będzie składał się z 1 postaci.
Przypadki testowe
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"
To jest golf golfowy , więc wygrywanie z najmniejszą liczbą bajtów wygrywa!
Odpowiedzi:
Pyth,
1311 bajtówWypróbuj tutaj .
Pobiera dane wejściowe ze STDIN jako ciąg znaków w pierwszym wierszu, długość w drugim wierszu i znak wypełniający opcjonalnie w trzecim wierszu.
źródło
JavaScript (ES6), 43 bajty
źródło
p+=s
możesz dodać 2 bajty, aby to zrobićp+=[s]
, i będzie działać.JavaScript (ES6),
374344 bajtówTest:
Nie jestem pewien, czy chcesz policzyć deklarację funkcji, wstawiłbym to.
źródło
slice
jest krótszy niżsubstr
.console.log(f("whatever",10, "*"))
, aleconsole.log(("*".repeat(10)+"whatever").substr(-10))
JavaScript ES6, 35 bajtów
Spróbuj. Uważam, że jest to najkrótsza możliwa implementacja obecnie możliwa w JavaScript.
źródło
Python 3,
333129 bajtówDość bezpośredni.Dzięki @xnor za przypomnienie mistr.rjust
to rzecz. : PDla tej samej długości (także dzięki xnor):
Poprzednie rozwiązanie:
źródło
(x*b+a)[-b:]
luba.rjust(b,x)
. Właściwiestr.rjust
sama prawdopodobnie działa na całość.rjust
był wbudowany, dziękuję!f(1, 2, 0) === '01';
05AB1E ,
119 bajtówKod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online .
źródło
JavaScript (ES5), 70 bajtów
Korzystanie z rekurencji ...
Moje początkowe przejście zajęło tylko 57 bajtów:
Ale zdał tylko pierwsze 2 testy:
Wciąż podoba mi się ten krótszy, ponieważ w praktyce przekazywanie liczb do funkcji manipulacji ciągiem nie jest funkcją, której potrzebowałbym.
źródło
Mathematica, 13 bajtów
Tylko wbudowana odpowiedź nr 3 (pierwsza była
Range
, druga byłaSurd
) Lub mniej wbudowana: (35 bajtów)źródło
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Apel do władzy: Martin) (ale także zdrowy rozsądek)Julia, 4 bajty
Przechodzi wszystkie przypadki testowe:
źródło
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
JavaScript (ES6), 55 bajtów
Utwórz pustą tablicę wartości i dołącz wersję.
Jest bardziej czytelny, ale
return
dodaje kilka dodatkowych znaków.źródło
`
dlainline code blocks.
.+=
zwraca wartość swojego lewego operandu, więc druga wersja staje się krótsza:(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
Ale staje się dłuższa, gdy dodasz łańcuchy wypełniające wielu znaków.Bash, 57 bajtów
Parametry: padchar szerokość struny
Zrób ciąg spacji szerokości .
Przekształć każdy znak spacji w padchar .
Napisz padding, a następnie string .
źródło
Python, 41 bajtów
Bez wbudowanego rjust 43 bajty:
(nie to, czego się oczekuje, ale przejdzie pakiet testowy)
źródło
s=str
i zastąpićs
zstr
do tej samej liczby bajtów.Galaretka , 12 bajtów
Tyle odniesień do zmiennych. Czyż Jelly nie miał być językiem milczącym ?
Wypróbuj online!
Jak to działa
źródło
padchar (⁵, defaults to 10)
czy nie powinien to być domyślnie20
lub32
??
sprawdza, czy ma wartość domyślną 10 i w tym przypadku zwraca spację.JavaScript ES7, 16 bajtów
wbudowane ftw! Działa tylko w przeglądarce Firefox 48 i nowszych. Ważne, ponieważ ta funkcja została dodana 12 marca.
Wymaga to danych wejściowych takich jak:
źródło
Szczupak , 67 bajtów
westchnienie . Pusty ciąg zwraca
""
wartośćtrue
. Czemu!?mieszana mieszana mieszana mieszana Zupa Szczupakowa ...
źródło
Pyke , 12 bajtów (niekonkurencyjny)
dodany węzeł wejściowy, poprawka błędu w węźle Len, zmiana domyślnych wyników w węźle przypisania po wysłaniu wyzwania.
Wyjaśnienie:
źródło
JavaScript ES6, 38 bajtów
Alternatywne rozwiązanie.
źródło
JavaScript (ES6), 34 bajty
Użyłem rozwiązania rekurencyjnego.
źródło
Rubin, 42 bajty
Parametry: ciąg, rozmiar, padchar.
Zestaw testowy poniżej; powinien wypisać wszystkie „prawdziwe”, po prostu umieścić wszystko w tym samym pliku.
źródło
Java 8,
8688 bajtówTo jest funkcja. Trzecim argumentem jest
varargs
dopuszczenie opcjonalnego znaku pada (domyślnie to' '
)Rekurencja! +2 bajty (dodane nawiasy kwadratowe z powodu błędu niezgodnego typu)
źródło
PHP,
5448 bajtówUżywa kodowania Windows-1252.
Działaj w ten sposób (
-d
dodany tylko do Easthetics):Stara wersja (bez wbudowanego):
Poprawki
str_pad
zamiast pętli. Pozostawienie starego w celach informacyjnych, ponieważ wbudowane elementy są niezadowoloneźródło
R, 50 bajtów
Znowu spóźniam się na przyjęcie, ale oto:
To po prostu wypisuje wyjście na standardowe wyjście, ale tak naprawdę nie zwraca wyściełanego łańcucha (nie byłem pewien, czy jest to wymaganie dla wyzwania). Jeśli jest to potrzebne, rozwiązanie jest nieco dłuższe i ma 61 bajtów:
źródło
C, 64 bajty
Wypróbuj tutaj .
źródło
gcc
pozwoliundefined reference to function printf
przepustkę i obejmująprintf
się, ale nie ma takiego szczęścia domemset
,asprintf
istrlen
. Aby dodać#include<string.h>
poprawność, musisz dodać definicje ... itd.gcc-5.1
. Nie jestem pewien, czy używają flag kompilatora lub tego, co masz za kulisami, których nie jestem świadomy. Początkowo używałem tego jako uzasadnienia dla tego, że nie działa w twoim środowisku, ale teraz nie jestem pewien ...gcc 5.2.1
na Linuksie, więc możesz uciec od powiedzenia,Ideone C, 64 bytes
ale jeśli chcesz twierdzić, że to C, zmuś go do kompilacji. : pf
bierze cztery parametry, a nie 3? Czy potrzebujesz adresu ciągu, czy ...? w obu przypadkachf
powinno przyjąć maksymalnie 3 argumenty.