Wyzwanie
Biorąc pod uwagę dwie liczby całkowite jako dane wejściowe ( x
i y
), dane wyjściowe x
jako ciąg znaków z tyloma zerami wiodącymi, że jest to y
długość znaków bez znaku.
Zasady
Jeśli
x
ma więcej niży
cyfry, wyprowadzane jestx
jako ciąg bez modyfikacji.Wyjście jako liczba całkowita nie jest akceptowane, nawet jeśli nie ma zer wiodących.
Kiedy wartość
x
jest ujemna, zachowaj „tak-
jak jest” i operuj na wartości bezwzględnej.Negatyw
y
powinien być traktowany jako 0, co oznacza, że wyprowadzasz danex
takie, jakie są (ale jako ciąg)
Przykłady:
IN: (1,1) OUT: "1"
IN: (1,2) OUT: "01"
IN: (10,1) OUT: "10"
IN: (-7,3) OUT: "-007"
IN: (-1,1) OUT: "-1"
IN: (10,-1) OUT: "10"
IN: (0,0) OUT: "0"
IN: (0,1) OUT: "0"
IN: (0,4) OUT: "0000"
Najkrótszy kod w bajtach wygrywa, obowiązują standardowe luki.
(-1,1)
daje+
znak wiodący jest dopuszczalny dla liczb dodatnich?Odpowiedzi:
Japt ,
138 bajtówPobiera pierwsze wejście (
x
) jako ciąg.Spróbuj
Zaoszczędź 5 bajtów dzięki produktom ETH.
Wyjaśnienie
Domniemane wprowadzanie ciągu
U=x
i liczby całkowitejV=y
.® }'-
dzieliU
się na tablicę na symbolu minus, mapuje nad nią i ponownie łączy ją z ciągiem z symbolem minus.©
jest logiczne AND (&&
), więc jeśli bieżący element jest prawdziwy (niepuste ciąg), następnie wstaw lewą (ù
) wartość 0 (T
) do długościV
.źródło
-
: ethproductions.github.io/japt/…q
, co oznaczałobyq-_©ùTV
zapisanie 1 bajtu :-)S.q()
(dający namS.q(s,f)
), toS
zostanie podzielonas
, uruchomionaf
i ponownie dołączonas
? Lubię to! :)N.s
,S/A.y
,N.ì
to zrobić już) z wieloma metodami? Rozmawiałem z kimś, po prostu nie pamiętam, kto teraz: sPyth , 12 bajtów
Wypróbuj tutaj!
źródło
Python 2 , 29 bajtów
Wypróbuj online!
Po prostu
str.zfill
jest tak blisko.źródło
05AB1E ,
1110 bajtówDane wejściowe podane jako
amount_of_digits, number
Wypróbuj online!
Wyjaśnienie
źródło
Python, 29 bajtów
Weź dane jako
f(x,y)
. Korzystanie z%
operatora Pythona .Wypróbuj online!
źródło
C #, 56 bajtów
Wypróbuj online!
źródło
Java (OpenJDK 8) , 47 bajtów
Wypróbuj online!
Na początku pomyślałem, łatwe, maksymalnie 30 znaków (co jest dość krótkie, gdy manipuluję łańcuchami w Javie). Potem zdarzyły się wyjątki.
źródło
JavaScript (ES6), 42
Rekurencyjne, parametry w odwrotnej kolejności, najpierw y, a następnie x. I curry
Test
źródło
f(y)(x)
zamiastf(x,y)
.y=>r=x=>x<0?'-'+r(-x):(x+='')[y-1]?x:r(0+x)
podchodzi tak blisko ...Python 3.6 ,
2837 bajtówWypróbuj online! (Przypadek testowy z odpowiedzi Colera Su)
Wykorzystanie nowego sposobu formatowania napisów w Pythonie 3.6
+9 bajtów do obsłużenia
y<0
źródło
y
jest ujemne: tio.run/##K6gsycjPM/…bash,
27, 25 bajtów-2 bajty dzięki Bruce Forte
spróbuj online
źródło
printf %\ 0$[1+$1]d $2|xargs
.printf %\ 0$[1+$2]d $1|xargs
, że nie pamiętałem tego formatu dla liczb podpisanych, a także xargs trick, aby usunąć wiodące miejsceŁuska , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R,
5648 bajtówWypróbuj online!
-8 bajtów dzięki djhurio
Wyjaśnienie
sprintf("%0zd",x)
zwracax
jako ciąg wypełniony zerami o długościz
paste0("%0",y+(x<0),"d")
konstruuje ciąg"%0zd"
, gdziez
jesty
, plus 1, jeślix
jest mniejszy od zeraz
jest mniejsze niż liczba cyfr wx
,x
jest drukowane jako ciąg znaków, jak jestźródło
function(x,y)sprintf(paste0("%0",y+(x<0),"d"),x)
Alice , 23 bajty
Wypróbuj online!
Dane wejściowe należy oddzielić od wiersza z liczbą w pierwszym wierszu i szerokością w drugim.
Wyjaśnienie
Jest to zwykła struktura programów liniowych w trybie porządkowym. Jedynym haczykiem w tym przypadku jest ten bit:
Powoduje to, że IP przechodzi w tryb kardynalny pionowo i wykonuje tylko
&
tryb kardynalny przed wznowieniem w trybie porządkowym.Rozłożenie zygzakowatego przepływu sterowania daje następnie:
Oto dwie alternatywy, również w 23 bajtach, które używają Cardinal
H
( abs ), aby pozbyć się-
:Zasadniczo są to polecenia krótsze, ale
&
nie pasują do pozycji, w której na stosie znajduje się łańcuch 1-znakowy, więc musimy pominąć go za pomocą#
.źródło
C, 33 bajty
Wypróbuj online!
źródło
Węgiel drzewny ,
1613 bajtówWypróbuj online!
Jest to najkrótszy czas, jaki mogę uzyskać przy użyciu węgla drzewnego bez drukowania wiodących lub końcowych białych znaków. Przynajmniej zaczynam rozumieć, jak używać
Modulo
funkcji do formatowania ciągów.Odebrany kod wygląda następująco:
źródło
-
lub nic nie jest naprawdę łatwe w Charcoal: Drukowanie 1 wydruków-
podczas drukowania 0 drukuje nic. Tak więc trójka jest zbędna, oszczędzając 3 bajty.InputNumber()
zCast(q)
, myślę, że można następnie przejść do porównania ciągów ratować kolejny bajt.Ternary
!Siatkówka , 39 bajtów
Wypróbuj online!
Dane wejściowe powinny być oddzielone przecinkami cyfrą jako pierwszą, a szerokość drugą.
źródło
PHP, 45 bajtów
lub
Uruchom je
-nr
lub wypróbuj online .źródło
Mathematica, 118 bajtów
Wypróbuj online!
źródło
Mathematica,
6362 bajtyWypróbuj online!
źródło
IntegerLength
zamiastIntegerDigits
. Możesz zapisać bajt, używającIntegerLength@#
zamiastIntegerLength[#]
.Excel, 29 bajtów
Korzystanie z
TEXT
funkcji programu Excel („Konwertuje wartość na tekst w określonym formacie liczbowym”).x
w A1,y
w B1źródło
)))
za -3 bajty, przechodząc na Arkusze GoogleOktawa , 44 bajty
Wypróbuj online!
źródło
Haskell , 54 bajty
Wypróbuj online!
źródło
Rubin ,
3128 bajtówDzięki Carl za zapisanie 3 bajtów przy użyciu interpolacji.
Wypróbuj online!
źródło
Japt ,
1412 bajtówZaoszczędź 2 bajty dzięki @ETHproductions
Wypróbuj online
źródło
x
jako ciąg znaków dla 10 bajtów .U
ciągiem, który pozwala nam zagrać w golfa z pierwszymi 2 znakami.PowerShell ,
2540 bajtówWypróbuj online!
Wyjaśnienie
To wywołuje
.ToString()
liczbę z wygenerowanym łańcuchem formatu, ale mnoży ją przez -1, 0 lub 1 na podstawie tego, czy$b
(y
) jest odpowiednio ujemne, 0 lub dodatnie; służy to do obsługiy
wartości ujemnych , których ciągi formatujące same w sobie nie są.Wydaje się, że wymaga to zawijania liczb ujemnych w podstacji
()
, aby działało, co jest jedynie dziwactwem wywołania przy użyciu literałów; jeśli przekazane zmienne typu liczba całkowita nie będą tego potrzebować.źródło
y
są ujemne.C # 6.0, 35 bajtów
Alternatywne rozwiązanie (51 bajtów)
źródło
Czysty ,
908683 bajtówWypróbuj online!
źródło
C (gcc) , 45 bajtów
Wypróbuj online!
Wyjaśnienie
printf
formatuje trzy argumenty:%s
formatuje ciąg"-"+(x>=0)
."-"
to tak naprawdę tylko adres, coś w rodzaju41961441
. W pamięci wygląda to mniej więcej tak:Po sformatowaniu w łańcuch C pobiera adres (powiedzmy 41961441) i kontynuuje pozyskiwanie znaków, dopóki nie zostanie spełniony bajt zerowy (0x00). Gdy x jest mniejsze od zera, wartość
"-"+(x>=0)
ma wartość oryginalnego adresu (41961441). W przeciwnym raziex>=0
wynosi 1, więc wyrażenie staje się"-"+1
, co wskazuje na pusty bajt po"-"
, który nic nie wypisuje.%0*i
wypisuje liczbę całkowitą wypełnioną określoną liczbą0
s.y
oznacza ten numer. Padamy,abs(x)
aby uniknąć negatywnych argumentów.źródło
Perl, 25 +
-n
flag = 26 bajtówWypróbuj online!
źródło
Perl 5, 22 + 1 (-
n
) = 23 bajtyWypróbuj online
źródło
10,-1
+5 bytes
-5 bytes