Einführung
Lassen Sie uns nach dem Fallout des npm-Pakets mit dem linken Pad einen Code für die Implementierung des linken Pads erstellen.
Die Funktion für das linke Feld besteht aus 2 Standardargumenten und 1 zusätzlichen Argument in der Form Zeichenfolge , Länge ( padchar ). Wenn das Padchar nicht angegeben ist, wird dies auf ein Leerzeichen standardisiert . Nehmen wir ein Beispiel mit zwei Argumenten:
left_pad("abc", 6)
Zuerst beobachten wir die Länge der Zeichenkette, die 3 ist . Danach müssen wir diese Zeichenfolge links auffüllen, bis die Länge der vollständigen Zeichenfolge die in der Funktion angegebene Länge erreicht hat. In diesem Fall 6 . Da das Padchar nicht angegeben ist , müssen wir dieses mit Leerzeichen auffüllen :
abc
Dies ist eine Zeichenfolge mit 3 Leerzeichen und der Anfangszeichenfolge, die zu einer Zeichenfolge mit der Länge 6 führt. Hier ist ein Beispiel mit dem angegebenen Padchar:
left_pad("abc", 6, "-")
Wir machen einfach dasselbe wie im obigen Beispiel, ersetzen jedoch die Leerzeichen durch das Padchar. In diesem Fall lautet der Bindestrich:
---abc
Die Aufgabe
Geben Sie unter Berücksichtigung der Zeichenfolge , der Länge und möglicherweise des zusätzlichen Argumentes padchar die links aufgefüllte Zeichenfolge aus. Sie können davon ausgehen, dass die Länge gleich oder größer als die Länge der Zeichenfolge ist. Das Padchar besteht immer aus 1 Zeichen.
Testfälle
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"
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Antworten:
Pyth,
1311 BytesProbieren Sie es hier aus .
Übernimmt die Eingabe von STDIN als Zeichenfolge in der ersten Zeile, die Länge in der zweiten Zeile und optional das Füllzeichen in einer dritten Zeile.
quelle
JavaScript (ES6), 43 Byte
quelle
p+=s
können Sie 2 Bytes hinzufügen, damit esp+=[s]
funktioniert.JavaScript (ES6),
374344 BytesPrüfung:
Ich bin mir nicht sicher, ob Sie die Funktionsdeklaration zählen möchten.
quelle
slice
ist kürzer alssubstr
.console.log(f("whatever",10, "*"))
, aberconsole.log(("*".repeat(10)+"whatever").substr(-10))
Javascript ES6, 35 Bytes
Versuch es. Ich glaube, dies ist die kürzestmögliche Implementierung, die derzeit in Javascript möglich ist.
quelle
Python 3,
333129 BytesZiemliech direkt.Danke an @xnor , dass du michstr.rjust
daran erinnert hast . : PBei gleicher Länge (auch dank xnor):
Vorherige Lösung:
quelle
(x*b+a)[-b:]
odera.rjust(b,x)
. Eigentlichstr.rjust
funktioniert es wohl für die ganze Sache.rjust
war ein eingebautes, danke!f(1, 2, 0) === '01';
05AB1E ,
119 BytesCode:
Erläuterung:
Verwendet die CP-1252- Codierung. Probieren Sie es online aus .
quelle
JavaScript (ES5), 70 Byte
Rekursion verwenden ...
Mein erster Versuch war nur 57 Bytes:
Hat aber erst die ersten 2 Tests bestanden:
Ich mag immer noch die kürzere, weil ich in der Praxis keine Funktion benötige, um Zahlen an eine Zeichenfolgenmanipulationsfunktion zu übergeben.
quelle
Mathematica, 13 Bytes
Eingebaute Antwort # 3 (erste war
Range
, zweite warSurd
) oder weniger eingebaut: (35 Bytes)quelle
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Appell an die Behörde: Martin) (aber auch gesunden Menschenverstand)Julia, 4 Bytes
Besteht alle Testfälle:
quelle
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
Javascript (ES6), 55 Byte
Erstellen Sie ein leeres Array von Werten und verbinden Sie die Version.
Ist besser lesbar,
return
fügt aber noch ein paar Zeichen hinzu.quelle
`
fürinline code blocks.
.+=
Gibt den Wert des linken Operanden zurück, sodass die zweite Version kürzer(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
wird. Sie wird jedoch länger, wenn Sie Zeichenfolgen mit mehreren Zeichen zum Auffüllen hinzufügen.Bash, 57 Bytes
Parameter: Stringbreite padchar
Bilden Sie eine Schnur der Breite .
Wandle jedes Leerzeichen in padchar um .
Schreibe padding und dann string .
quelle
Python, 41 Bytes
Ohne das eingebaute Recht, 43 Bytes:
(nicht das, was man erwartet, aber es besteht die Testsuite)
quelle
s=str
und ersetzens
mitstr
für gleiche Byte - Zählung.Gelee , 12 Bytes
So viele variable Referenzen. Sollte Jelly nicht eine stillschweigende Sprache sein?
Probieren Sie es online!
Wie es funktioniert
quelle
padchar (⁵, defaults to 10)
sollte es nicht standardmäßig20
oder32
??
prüft, ob sie den Standardwert 10 hat, und gibt in diesem Fall ein Leerzeichen zurück.JavaScript ES7, 16 Byte
eingebaute ftw! Funktioniert nur mit Firefox 48 und höher. Gültig, da diese Funktion am 12. März hinzugefügt wurde.
Dies erfordert Eingaben wie:
quelle
Hecht , 67 Bytes
Seufzer . Die leere Zeichenfolge
""
ergibttrue
. Warum!?gemischt gemischt gemischt gemischt gemischt Hechtsuppe ...
quelle
Pyke , 12 Bytes (nicht konkurrierend)
Input Node hinzugefügt, Bugfix auf Len Node, Standardergebnisse auf Assign Node ändern nachdem die Challenge gepostet wurde.
Erläuterung:
quelle
JavaScript ES6, 38 Byte
Eine alternative Lösung.
quelle
JavaScript (ES6), 34 Byte
Ich habe eine rekursive Lösung verwendet.
quelle
Ruby, 42 Bytes
Parameter: string, size, padchar.
Testsuite unten; sollten alle "true" s drucken, stecke einfach alles in die selbe datei.
quelle
Java 8,
8688 BytesDies ist eine Funktion. Das dritte Argument ist a
varargs
, um das optionale Pad-Zeichen zuzulassen (Standardeinstellung ist' '
).Rekursion! +2 Bytes (Klammern wegen inkompatiblem Typfehler hinzugefügt)
quelle
PHP,
5448 BytesVerwendet die Windows-1252-Codierung.
Laufen Sie wie folgt (
-d
folgt (nur für Easthetics hinzugefügt):Alte Version (ohne das eingebaute):
Optimierungen
str_pad
anstelle einer Schleife gespeichert . Lassen Sie die alte als Referenz, da Builtins verpönt sindquelle
R, 50 Bytes
Wieder zu spät zur Party, aber hier ist es:
Dies druckt einfach die Ausgabe auf stdout, gibt aber nicht die aufgefüllte Zeichenfolge zurück (war nicht sicher, ob dies eine Anforderung für die Herausforderung ist). In diesem Fall ist die Lösung mit 61 Byte etwas länger:
quelle
C 64 Bytes
Probieren Sie es hier aus .
quelle
gcc
lassenundefined reference to function printf
Pass und schließenprintf
sich, aber kein solches Glück fürmemset
,asprintf
, undstrlen
. Sie müssen die#include<string.h>
... etc-Definitionen hinzufügen , um dies gültig zu machen.gcc-5.1
. Ich bin nicht sicher, ob sie Compiler-Flags oder What-Have-You hinter den Kulissen verwenden, die mir nicht bekannt sind. Ich war mit anfangs dies als meine Rechtfertigung für sie nicht in Ihrer Umgebung ausgeführt wird , aber jetzt bin ich nicht sicher ...gcc 5.2.1
unter Linux, also können Sie vielleicht mit dem Sprichwort davonkommen,Ideone C, 64 bytes
aber wenn Sie behaupten, dass es C ist, lassen Sie es kompilieren. : pf
man vier Parameter, nicht 3? Benötigen Sie die Adresse des Strings oder ...? In beiden Fällenf
sollten höchstens 3 Argumente verwendet werden.