Biorąc pod uwagę listę N
liczb całkowitych nieujemnych, wypisz te liczby z każdą dopełnioną lewą spacją na długość N
. (Alternatywnie, zwróć listę znaków / ciągów.) Możesz założyć, że N
jest ona większa lub równa liczbie cyfr największej liczby na liście. Końcowe spacje są dozwolone w danych wyjściowych.
Możesz również wziąć ciąg zawierający te liczby, ale N
nie jest to długość ciągu, ale raczej liczba elementów na liście; możesz także wziąć listę ciągów znaków np ["1", "2", "3"]
.
To jest golf golfowy, więc wygrywa najkrótszy program w bajtach.
Przypadki testowe
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'
Odpowiedzi:
05AB1E , 3 bajty
Kod:
Wyjaśnienie:
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe .
źródło
Python, 32 bajty
Anonimowa funkcja, która pobiera krotkę jako dane wejściowe. Liczby lub ciągi działają.
Przykład:
źródło
JavaScript (ES7), 37 bajtów
Dane wejściowe: tablica ciągów Dane
wyjściowe: tablica ciągów
Pokaż fragment kodu
źródło
PowerShell v2 +, 36 bajtów
Pobiera dane wejściowe
$a
jako tablicęint
egerów. Pętle przez nie za pomocą$a|%{...}
. Każda iteracja używa-f
operatora ormat z opcjonalnymAlignment Component
(na podstawie$a.count
), aby wstawić lewą odpowiednią liczbę spacji. Ten wynikowy ciąg zostaje pozostawiony w potoku. Po zakończeniu wykonywania programu wszystkie powstałe ciągi są pozostawione w potoku jako tablica.Przykłady
Dane wyjściowe są oddzielane znakiem nowej linii przy każdym uruchomieniu, ponieważ jest to ustawienie domyślne
Write-Output
po zakończeniu programu dla tablicy.źródło
JavaScript, 49 bajtów
Traktuje argumenty jako listę ciągów, a także zwraca listę ciągów.
Wyjaśnienie:
źródło
.join("")
nie jest potrzebna.a=>a.map(n=>(" ".repeat(l=a.length)+n).slice(-l))
ma tę samą długość, ale działa zarówno na liczbach całkowitych, jak i na ciągach znaków.Perl, 26 bajtów
-4 bajty dzięki @Ton Hospel
25 bajtów kodu +
-a
flaga.Biegnij z :
(W niektórych starszych wersjach Perla może być konieczne dodanie
-n
)źródło
-a
opcji spowoduje, że Twój kod będzie krótszy ...Bash, 14
Lista danych wejściowych podana w wierszu poleceń.
Nie wiele tu do wyjaśnienia. Po prostu korzysta z wbudowanych
printf
urządzeń, aby wykonać niezbędne wypełnienie w oparciu o liczbę przekazanych argumentów:$#
to liczba przekazanych argumentów%<n>d
jest specyfikatorem formatu printf, który wypisuje liczbę całkowitą z maksymalnie n wiodącymi spacjami$@
jest listą wszystkich przekazanych argumentów$@
.Ideone .
źródło
Vim, 19 bajtów
YPPG!{<C-F>|R%ri<CR>djVGgJ
Pobiera listę liczb jeden na linię. Polega na
:set expandtab
, który jest popularny, ale nie uniwersalny.Wyraźnie chcesz użyć
:right
. Pytanie brzmi, jak uzyskać liczbę wierszy w wierszu polecenia. Tradycyjny sposób jest taki:%ri<C-R>=line('$')
, ale cały ten tekst jest długi.Krótsze, bardziej przedsiębiorcze podejście polega na utworzeniu wiersza poleceń za pomocą
!
polecenia trybu normalnego . Wymaga to dziwnych obejść, rozszerzenia pliku o 2 linie, a następnie usunięcia go ponownie, ale wychodzi o 2 bajty krócej. Jestem trochę zszokowany zniekształconym wierszem poleceń, który (jak:%ri+4!
) faktycznie działa, ale działa.źródło
expandtab
dodaje 7 pociągnięć do tego rozwiązania. Powodem tego problemu jest to, że muszę sprawdzić inne metody unikania / usuwania kart, które mogą teraz wygrać. To dużo czasu, wcale nie jest zabawne, pogarsza jakość mojego rozwiązania i nawet nie wpływa na żaden z podanych przypadków testowych (żaden nie ma 8+ liczb). Jeśli taka jest reguła, taka jest reguła, ale wolałbym zaznaczyć zakaz konkurowania, niż zrobić to bez niejexpandtab
.Ypp!{
. To jest rzeczywiście krótsze. To też nie działa. Zawsze przenosi cyfrę 1 do wiersza poleceń, niezależnie od długości pliku.Rubinowy,
403634 bajtówMożna pracować nad więcej.
Zadzwoń jako lambda.
Wyjaśnienie:
źródło
Galaretka ,
76 bajtówDane wejściowe to tablica ciągów. Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Mathematica, 25 bajtów
Zarówno dane wejściowe, jak i wyjściowe są listami ciągów.
Wyjaśnienie
Uzyskaj długość wejścia (liczbę elementów).
Pad pozostawił każdy element na wejściu, aby ich długości pasowały do długości wejścia.
źródło
JavaScript (ES6), 47
Funkcja anonimowa, wejście: tablica ciągów, wyjście: tablica ciągów
Korzystanie z rekurencyjnej funkcji wypełniania
Dla wejściowej tablicy liczb całkowitych / łańcuchów 49 bajtów:
Test
źródło
PHP, 55 bajtów
Pevious Version 59 Bytes
źródło
foreach($a=$_GET[a]as$i)printf("%".count($a)."s",$i);
J, 4 bajty
Wypróbuj online!
Unary funkcja przyjmująca listę liczb po prawej jako tablicę i zwracająca dopełniony ciąg.
Tutaj jest używany w REPL. Zauważ, że linie wejściowe są wcięte o trzy spacje.
źródło
CJam , 11 bajtów
Wypróbuj online!(Jako zestaw testowy.)
Wyjaśnienie
źródło
Kotlin, 90 bajtów
Gra w golfa:
Nie golfowany:
źródło
Haskell, 47 bajtów
Jest to funkcja od listy ciągów do listy ciągów, takich jak odpowiedzi JavaScript.
replicate
pozwala uzyskać listę (ciągi Haskella są listami znaków) o danym rozmiarze, więc używam jej - i pogrubionego założenia w problemie - do generowania wypełnienia (jego długość toN
<długość elementu>, dla każdego elementu listy wejść). Wolałbym używaćprintf
rozwiązania opartego na tymreplicate
( z jednym byłoby krótsze), ale instrukcja importu zabija wszelkie oszczędności na samej funkcji.źródło
Java,
8382 bajtyKonstruuje ciąg formatu zaprojektowany do wypełniania podanych argumentów liczbą spacji równych długości tablicy. Ciąg formatu służy jako argument
String.format
, a wynik jest następnie zwracany. Interfejs funkcjonalny może akceptować albo aString[]
,Integer[]
albo podobny.Pełna klasa:
Wypróbuj na Ideone.
-1 bajt dzięki @KevinCruijssen.
źródło
int ...
s+=...
if
for(int i=a.length,j=i;i-->0;s+="%"+j+"s");
Groovy, 36 bajtów
Pobiera tylko szereg ciągów, wyświetla tablicę wypełnionych ciągów.
źródło
MATL, 14 bajtów
Wypróbuj to w MATL Online
Używa to sformatowanego ciągu znaków, najpierw konstruując ciąg formatu:
%(NUM)d
a następnie stosuje ponownie formatowanie ciągu przy użyciu tego ciągu formatu i danych wejściowych.źródło
JavaScript 33 bajty
podobny do @Hedi - ale domyślnym dopełnieniem jest '', więc jego 4 znaki mniej
źródło
K (oK) , 11 bajtów
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
Interpretowane od prawej do lewej. Konwertuj na ciąg i lewy pad o długości listy, a następnie spłaszcz:
źródło
Pyth - 7 bajtów
Prosta odpowiedź za pomocą wbudowanego paddingu.
Pakiet testowy .
źródło
C #, 39 bajtów
Bierze a
List<string>
i wyprowadza aList<string>
.Wyjaśnienie:
Byłoby kilka bajtów krótszych, aby użyć LINQ, jeśli import nie jest liczony, a następnie zwraca
IEnumerable<string>
zamiast pełnej listy:C #, 35 + 18 = 53 bajty
źródło
R, 47 bajtów
Odczytuje dane wejściowe ze standardowego wejścia i używa C-style formatowania z
sprintf
. Powinien być jakiś sposób, abycat
funkcja nie była potrzebna, ale bez niej nie mogłaby znaleźć sposobu na ukrycie cudzysłowów. Jeśli chcemy tylko cytatów początkowych i końcowych, moglibyśmy użyć nieco dłuższej opcji:źródło