Geben Sie bei einer Liste N
nicht negativer Ganzzahlen diese Zahlen mit jeweils mit Leerzeichen auf einer Länge von links aufgefüllt aus N
. (Alternativ können Sie eine Zeichen- / Zeichenkettenliste zurückgeben.) Sie können davon ausgehen, dass diese N
größer oder gleich der Anzahl der Stellen der größten Zahl in der Liste ist. Nachgestellte Leerzeichen sind in der Ausgabe zulässig.
Sie können auch eine Zeichenfolge verwenden, die diese Zahlen enthält. Dabei handelt es sich jedoch N
nicht um die Länge der Zeichenfolge, sondern um die Anzahl der Elemente in der Liste. Sie können auch eine Liste von Zeichenfolgen verwenden, z ["1", "2", "3"]
.
Dies ist ein Code-Golf, also gewinnt das kürzeste Programm in Bytes.
Testfälle
input => 'output'
0 => '0'
1 => '1'
2 3 => ' 2 3'
2 10 => ' 210'
4 5 6 => ' 4 5 6'
17 19 20 => ' 17 19 20'
7 8 9 10 => ' 7 8 9 10'
100 200 300 0 => ' 100 200 300 0'
1000 400 30 7 => '1000 400 30 7'
1 33 333 7777 => ' 1 33 3337777'
0 0 0 0 0 0 => ' 0 0 0 0 0 0'
Antworten:
05AB1E , 3 Bytes
Code:
Erläuterung:
Probieren Sie es online! oder Überprüfen Sie alle Testfälle .
quelle
Python, 32 Bytes
Eine anonyme Funktion, die ein Tupel als Eingabe verwendet. Entweder funktionieren Zahlen oder Zeichenketten.
Beispiel:
quelle
JavaScript (ES7), 37 Byte
Eingabe: Array von Zeichenfolgen
Ausgabe: Array von Zeichenfolgen
Code-Snippet anzeigen
quelle
PowerShell v2 +, 36 Byte
Nimmt Eingaben
$a
als Array vonint
Egern auf. Durchschleift sie mit$a|%{...}
. Bei jeder Iteration wird der-f
ormat-Operator mit dem optionalenAlignment Component
(basierend auf$a.count
) verwendet, um die entsprechende Anzahl von Leerzeichen nach links zu füllen . Diese resultierende Zeichenfolge verbleibt in der Pipeline. Am Ende der Programmausführung verbleiben die resultierenden Zeichenfolgen als Array in der Pipeline.Beispiele
Die Ausgabe wird bei jedem Durchlauf durch Zeilenumbrüche getrennt, da dies der Standardwert
Write-Output
bei Programmabschluss für ein Array ist.quelle
JavaScript, 49 Bytes
Nimmt die Argumente als Liste von Zeichenfolgen und gibt auch eine Liste von Zeichenfolgen zurück.
Erläuterung:
quelle
.join("")
nicht benötigt.a=>a.map(n=>(" ".repeat(l=a.length)+n).slice(-l))
ist gleich lang, funktioniert aber sowohl mit ganzen Zahlen als auch mit Strings.Perl, 26 Bytes
-4 Bytes dank @Ton Hospel
25 Byte Code +
-a
Flag.Laufen mit:
(In einigen älteren Versionen von Perl müssen Sie möglicherweise hinzufügen
-n
)quelle
-a
Option verwenden, wird Ihr Code kürzer ...Bash, 14
Eingabeliste in der Befehlszeile.
Hier gibt es nicht viel zu erklären. Verwendet einfach integrierte Funktionen
printf
, um die erforderliche Polsterung basierend auf der Anzahl der übergebenen Argumente durchzuführen:$#
ist die Anzahl der übergebenen Argumente%<n>d
ist ein printf-Formatbezeichner, der eine Ganzzahl mit bis zu n führenden Leerzeichen ausgibt$@
ist die Liste aller übergebenen Argumente$@
.Ideone .
quelle
Vim, 19 Bytes
YPPG!{<C-F>|R%ri<CR>djVGgJ
Nimmt eine Liste von Zahlen pro Zeile auf. Verlässt sich auf
:set expandtab
, was beliebt ist, aber nicht universell.Sie möchten
:right
dies eindeutig verwenden . Die Frage ist, wie die Anzahl der Zeilen in die Befehlszeile eingegeben werden kann. Der traditionelle Weg ist:%ri<C-R>=line('$')
, aber der ganze Text ist lang.Der kürzere, unternehmerischere Ansatz besteht darin, die Befehlszeile mit dem
!
Befehl für den normalen Modus zu bilden . Es beinhaltet einige seltsame Problemumgehungen, die die Datei um 2 Zeilen erweitern und dann wieder entfernen, aber es kommt 2 Bytes kürzer heraus. Und ich bin ein bisschen schockiert, dass die verstümmelte Befehlszeile, die ich bekomme (wie:%ri+4!
), tatsächlich funktioniert, aber es funktioniert.quelle
expandtab
dieser Lösung 7 Striche hinzugefügt. Der Grund, warum das ein Problem ist, ist, dass ich nach anderen Ansätzen suchen muss, um Tabs zu vermeiden / zu entfernen, die möglicherweise jetzt gewinnen. Es ist eine Menge Zeit, die überhaupt keinen Spaß macht, die Qualität meiner Lösung verschlechtert und keinen der bereitgestellten Testfälle beeinträchtigt (keiner hat 8+ Nummern). Wenn das die Regel ist, ist das die Regel, aber ich möchte lieber als nicht konkurrierend markieren, als dies ohne zu tunexpandtab
.Ypp!{
. Es ist in der Tat kürzer. Es funktioniert auch nicht. Es würde immer die Nummer 1 in die Befehlszeile bringen, unabhängig von der Länge der Datei.Ruby,
403634 BytesKann weiter bearbeitet werden.
Rufen Sie als Lambda.
Erläuterung:
quelle
Gelee ,
76 BytesDie Eingabe ist ein Array von Zeichenfolgen. Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Mathematica, 25 Bytes
Sowohl Eingabe als auch Ausgabe sind Listen von Zeichenfolgen.
Erläuterung
Liefert die Länge der Eingabe (Anzahl der Elemente).
Pad beließ jedes Element in der Eingabe, sodass seine Länge mit der Länge der Eingabe übereinstimmt.
quelle
JavaScript (ES6), 47
Anonyme Funktion, Eingabe: Array von Zeichenfolgen, Ausgabe: Array von Zeichenfolgen
Verwenden einer rekursiven Auffüllfunktion
Für ein Integer / String-Array als Eingabe 49 Bytes:
Prüfung
quelle
PHP, 55 Bytes
Frühere Version 59 Bytes
quelle
foreach($a=$_GET[a]as$i)printf("%".count($a)."s",$i);
J, 4 Bytes
Probieren Sie es online!
Unäre Funktion, die die Liste der Zahlen rechts als Array verwendet und die aufgefüllte Zeichenfolge zurückgibt.
Hier wird es auf der REPL eingesetzt. Beachten Sie, dass die Eingabezeilen um drei Leerzeichen eingerückt sind.
quelle
CJam , 11 Bytes
Probieren Sie es online! (Als Testsuite.)
Erläuterung
quelle
Kotlin, 90 Bytes
Golf gespielt:
Ungolfed:
quelle
Haskell, 47 Bytes
Das ist eine Funktion von einer Liste von Zeichenfolgen zu einer Liste von Zeichenfolgen, wie die JavaScript-Antworten.
replicate
ermöglicht es einem, eine Liste (Haskell-Zeichenfolgen sind Listen von Zeichen) einer bestimmten Größe abzurufen, sodass ich sie - und die fettgedruckte Annahme im Problem - verwende, um die Auffüllung (ihre Länge istN
- <Länge des Elements>) für jedes Element zu generieren der Eingabeliste). Ich hätte es vorgezogen, eineprintf
basierte Lösung zu verwenden, anstatt diese zu verwendenreplicate
(zum einen wäre sie kürzer gewesen), aber die import-Anweisung macht alle Einsparungen zunichte, die an der Funktion selbst vorgenommen wurden.quelle
Java,
8382 BytesErstellt eine Formatzeichenfolge, mit der die angegebenen Argumente mit einer Anzahl von Leerzeichen aufgefüllt werden, die der Länge des Arrays entspricht. Die Formatzeichenfolge wird als Argument für verwendet
String.format
und das Ergebnis wird dann zurückgegeben. Die Funktionsschnittstelle kann entweder einString[]
oder einInteger[]
oder ähnliches annehmen .Volle Klasse:
Probieren Sie es auf Ideone.
-1 Byte dank @KevinCruijssen.
quelle
int ...
unds+=...
in dasif
for(int i=a.length,j=i;i-->0;s+="%"+j+"s");
Groovy, 36 Bytes
Nimmt nur ein Array von Strings auf, gibt ein Array von aufgefüllten Strings aus.
quelle
MATL, 14 Bytes
Probieren Sie es bei MATL Online aus
Bei dieser Methode wird eine formatierte Zeichenfolge erstellt, indem zunächst die Formatzeichenfolge erstellt wird.
%(NUM)d
Anschließend wird die Zeichenfolgenformatierung mithilfe dieser Formatzeichenfolge und der Eingabe erneut angewendet.quelle
JavaScript 33 Bytes
ähnlich wie @Hedi - aber die Standardauffüllung ist '', daher sind es 4 Zeichen weniger
quelle
K (oK) , 11 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
Von rechts nach links interpretiert. In Zeichenfolge konvertieren und mit der Länge der Liste links auffüllen und dann reduzieren:
quelle
Pyth - 7 Bytes
Unkomplizierte Antwort mit eingebauter Polsterung.
Test Suite .
quelle
C #, 39 Bytes
Nimmt ein
List<string>
und gibt ein ausList<string>
.Erläuterung:
Wäre die Verwendung von LINQ um einige Bytes kürzer gewesen, wenn der Import nicht gezählt worden wäre und dann
IEnumerable<string>
anstelle einer vollständigen Liste zurückgegeben worden wäre:C #, 35 + 18 = 53 Bytes
quelle
R, 47 Bytes
Liest Eingaben von stdin und verwendet C-Formatierung mit
sprintf
. Es sollte eine Möglichkeit geben, dass diecat
Funktion nicht benötigt wird, aber keine Möglichkeit finden kann, die Anführungszeichen für jedes Element ohne sie zu unterdrücken. Wenn wir nur Start- und Endanführungszeichen wünschen, können wir die etwas längere Option verwenden:quelle