Zadanie
Biorąc pod uwagę nieujemną liczbę całkowitą n
, wypisz 1
if n
is 0
i wypisz wartość n
else.
Wejście
Nieujemna liczba całkowita.
- Jeśli chcesz zaakceptować ciąg jako dane wejściowe, łańcuch będzie pasował do następującego wyrażenia regularnego:
/^(0|[1-9][0-9]*)$/
tzn. Nie może zawierać żadnych zer wiodących, z wyjątkiem sytuacji, gdy jest0
. - Jeśli akceptujesz rzeczywistą liczbę całkowitą jako dane wejściowe, możesz założyć, że liczba całkowita mieści się w zakresie możliwości obsługi danego języka.
Wydajność
Dodatnia liczba całkowita, określona powyżej. Zera wiodące są niedozwolone. Twój wynik powinien być zgodny z wyrażeniem regularnym /^[1-9][0-9]*$/
.
Przypadki testowe
input output
0 1
1 1
2 2
3 3
4 4
5 5
6 6
7 7
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Odpowiedzi:
C (gcc),
1413 bajtówDzięki @betseg za przypomnienie mi
n?:1
sztuczki w komentarzach drugiej odpowiedzi C.Wypróbuj online!
C, 17 bajtów
Wypróbuj online!
C, 16 bajtów
Wypróbuj online!
źródło
3*!n+n
co jest równe3*0+5
.main
z któregof
wywoływana jest funkcja / makro . Rozwiązaniem nie musi być domyślnie pełny program. Wersja specyficzna dla gcc może, ale nie musi, kompilować się na innym kompilatorze, i może, ale nie musi działać poprawnie, gdy zostanie skompilowana na innym kompilatorze.Japt , 2 bajty
Wypróbuj online!
Wyjaśnienie
ª
jest skrótem dla||
operatora JS . Japt ma niejawne dane wejściowe, więc ten program obliczainput||1
, a wynik jest domyślnie wysyłany do STDOUT.w1
działałby również, biorąc maksimum danych wejściowych i1
.źródło
Alice , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6), 7 bajtów
źródło
n=>n+!n
(przynajmniej tak mi się wydaje)n|!n
, chociaż ta jest ograniczona do 31-bitowej ilości.)n=>n||1
można to uprościćn||1
, to nie. Dopuszczalne odpowiedzi to pełne programy lub funkcje.n=>do_something_with(n)
to funkcja strzałki w składni ES6.n
jeśli nie jest to zero. Bitowe OR zmieniłoby sięn
za każdym razem, gdy nie zostanie ustawiony najmniej znaczący bit (np(4|1) === 5
.).Pyth, 2 bajty
Wypróbuj online
Wyjaśnienie
źródło
Siatkówka , 4 bajty
Wypróbuj online!
Jeśli dane wejściowe zaczynają się od zera, zamień je na 1. (Działa, ponieważ na wejściach nie ma zer wiodących dla wartości niezerowych).
źródło
V , 4 bajty
Wypróbuj online!
Nadużywa niepreferencyjnego, ale oczekiwanego zachowania , więc nie mogę nazwać go błędem. Wyjaśnienie:
W Vimie polecenia akceptują zliczanie. Na przykład
<C-a>
zwiększy liczbę, ale7<C-a>
zwiększy liczbę o 7. Jednak nie można użyć0
jako liczby, ponieważ0
jest już poleceniem (przejdź do pierwszej kolumny) iW kontekście edytora tekstowego rzadko ma sens żądanie wykonania polecenia 0 razy.
Jest to dobre w przypadku edytora tekstu, ale zwykle nieznośne dla języka golfowego, więc V zastępuje niektóre polecenia, więc
0
jest to prawidłowa liczba. Na przykładé
,ñ
,Ä
, i kilka innych. Ponieważ jednak<C-a>
jest to wbudowane polecenie vim, nie jest nadpisywane, więc uruchomienie go z dodatnim wejściem daje:Ale uruchomienie z 0 jako wejściem daje:
Pełne wyjaśnienie:
źródło
0
Przydaje się, że nie jest to liczba. Na początku nawet tego nie brałem pod uwagę, ponieważ unikałem tego wiele razyJ , 2 bajty
Wypróbuj online!
^
[argument] podniesiony do potęgi*
znak argumentu (0 jeśli 0 jeszcze 1)Ponieważ
1=0^0
w J.źródło
Haskell, 5 bajtów
Przykład użycia:
(max 1) 0
->1
.Nic wielkiego do wyjaśnienia.
źródło
dc, 7
Opiera się na fakcie, że
dc
ocenia 0 0 do 1, ale 0 n do 0 dla wszystkich innych n.Wypróbuj online .
źródło
R, 13 bajtów
czyta
n
ze standardowego. Za pomocąpmax
może odczytać listę i zwrócić odpowiednią wartość dla każdego elementu na liście dla bajtu +1.spróbuj online!
Należy zauważyć, że nie ma innego rozwiązania porządku R w 13 bajtów przez Sven Hohenstein , który pozwala na jeszcze innego rozwiązania 13 bajt
co mnie zastanawia, czy to dolna granica dla R.
źródło
pryr
:pryr::f(n+!n)
. Nie mogę znaleźć nic mniejszego ...Cubix , 6 bajtów
Jakoś udało się zmieścić go na kostce jednostkowej ... Przetestuj online!
Wyjaśnienie
Przed uruchomieniem kod jest ułożony jako sześcian:
IP (wskaźnik instrukcji) jest następnie umieszczany na skrajnie lewej twarzy (
I
), skierowanej w prawo. Instrukcje uruchamiane stamtąd to:IP następnie uderza
!
ponownie, pomijając@
dolną powierzchnię. Nie jest to pomocne, ponieważ musimy nacisnąć przycisk,@
aby zakończyć program. IP uderzaL
ponownie i przechodzi przez środkową linię w odwrotnej kolejności (L1!I
), zanim trafi jeszczeL
raz, co ostatecznie zmienia IP na@
.źródło
pieprzenie mózgu , 8 bajtów
Wypróbuj online!
źródło
V , 5 bajtów
Gdzie
<C-a>
jest0x01
.Wypróbuj online!
Wyjaśnienie
źródło
Galaretka, 2 bajty
Wypróbuj online!
Prawie dokładnie moja odpowiedź na Pythona, ale to mój pierwszy program Jelly.
źródło
Oaza , 2 bajty
Wykorzystuje następujący wzór: a (0) = 1 , a (n) = n
Wypróbuj online!
źródło
>V
.R
2016 bajtówźródło
Brachylog , 3 bajty
Wypróbuj online!
Wyjaśnienie
Jeśli dodamy niejawne
?
(Dane wejściowe) i.
(Dane wyjściowe), otrzymamy:źródło
MarioLANG , 12 bajtów
Wypróbuj online!
Jak to działa
Mario zaczyna w lewym górnym rogu, początkowo idąc w prawo. Odczytuje liczbę int z input (
;
) i zapisuje ją w bieżącej komórce pamięci. Następnie spada z ziemi (=
), uderzając[
, co powoduje, że ignoruje następne polecenie, jeśli bieżąca komórka ma wartość 0.Jeśli komórka nie jest równa 0, zacznie chodzić w lewo (
<
), wypisać bieżącą komórkę jako int (:
) i spaść na śmierć (koniec programu).Jeśli komórka ma wartość 0, ignoruje polecenie skrętu w lewo i idzie dalej w prawo. Przyrostuje bieżącą komórkę (
+
), wysyła ją i pada na śmierć.źródło
Brain-Flak ,
22, 10 bajtówWypróbuj online!
Wyjaśnienie:
Jeśli dane wejściowe są niezerowe,
{{}}
wyskakuje wszystko ze stosu i ocenia dane wejściowe. Jeśli wynosi zero, nic nie zostanie wyskakujące i będzie miało wartość zero. Więc bieganie({{}})
dajeNiezerowe:
Zero:
W tym momencie dodamy wysokość stosu (0 dla niezerowego, 1 dla zera) i usuniemy jeszcze jedną wartość ze stosu. (ponieważ stos jest wypełniony nieskończoną liczbą zer, spowoduje to wyświetlenie albo górnej 0, albo dodatkowej 0)
źródło
TI-BASIC, 7 bajtów
Alternatywnie,
TI-BASIC, 7 bajtów
źródło
Sześciokąt ,
76 bajtówRozszerzony:
Wypróbuj online!
Zapisano 1 bajt dzięki Martinowi!
Jeśli liczba jest niezerowa, wydrukuj ją, w przeciwnym razie dodaj jedną i wydrukuj ją.
źródło
APL (Dyalog) , 3 bajty
Wypróbuj online!
To bierze pułap argumentu i
1
.źródło
Python, 15 bajtów
źródło
n or 1
6 bajtów?The rules are not terribly clear. I think we have a consensus on meta that REPLs count, but as a separate language, which would allow snippets in many cases, but snippets are not permitted according to this meta post
-> codegolf.meta.stackexchange.com/questions/2419/…1or n
zawsze wracał1
, prawda?lambda n:n|1>>n
dc, 11 bajtów
[1]sf
zapisuje makro w rejestrze f, które wypycha 1 na górę stosu,?
odczytuje dane wejściowe,d0=f
uruchamia makro f, jeśli wejście miało wartość 0,p
drukuje górę stosu.Test:
źródło
Excel, 10 bajtów
Oszczędza to 4 bajty nad oczywistym rozwiązaniem oświadczenie „if”,
=IF(A1=0,1,A1)
.źródło
=A1+NOT(A1)
Java 8, 10 bajtów
źródło
i==0
można zastąpići<1
R, 13 bajtów
Tutaj
scan
służy do odczytu wartości wejściowejn
. Negacjan
(tj.!n
0 lub 1) jest dodawana don
.źródło
Mathematica,
98 bajtówPer Martin Ender:
Pierwszy pomysł:
Czysta funkcja z replaces
0
z1
. Przestrzeń jest niezbędna lub myśli, że się dzielimy.0
.źródło
Perl 5, 6 + 2 bajty dla flag -l i -p
Pobiera dane wejściowe w oddzielnych wierszach od standardowego wejścia. Działa z flagami
-lp
.źródło