Wyzwanie
Oblicz dziwną sumę dwóch liczb naturalnych (znanych również jako dodanie Księżyca):
Biorąc pod uwagę A=... a2 a1 a0
i B=... b2 b1 b0
dwie liczby naturalne zapisane w bazie dziesiętnej, dziwna suma jest definiowana, na podstawie maksymalnej operacji, jako:
A+B=... max(a2,b2) max(a1,b1) max(a0,b0)
... a2 a1 a0
+ ... b2 b1 b0
----------------------------------------
... max(a2,b2) max(a1,b1) max(a0,b0)
Wejście
Dwie liczby naturalne
Dozwolone są wszystkie następujące czynności:
- Sznurki zerowane (ta sama długość)
- Wyściełane struny po lewej stronie
- Sznurki wyściełane spacją po prawej stronie
- Zestaw dwóch wyściełanych sznurków
- Dwuwymiarowa tablica znaków wypełniona przestrzenią
Wynik
Liczby naturalne
Przykład
1999+2018-->2999
17210+701-->17711
32+17-->37
308+250-->358
308+25-->328
Zasady
- Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie (wybierz najbardziej odpowiedni format dla swojego języka / rozwiązania).
- Nie trzeba obsługiwać wartości ujemnych ani nieprawidłowych danych wejściowych
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
code-golf
math
arithmetic
mdahmoune
źródło
źródło
Odpowiedzi:
Python 2 , 20 bajtów
Wypróbuj online!
I / O jako wstępnie wypełnione 0 cyfr listy.
źródło
Galaretka , 1 bajt
Wypróbuj online!
I / O jako wstępnie wypełnione 0 cyfr listy.
źródło
R ,
6865 bajtówWypróbuj online!
Wprowadź jako liczby całkowite, wyślij jako listę cyfr.
Gdyby dozwolone było wypełnianie zer cyframi, wystarczyłoby po prostu
pmax
.źródło
MATL , 2 bajty
Format wejściowy to: tablica znaków 2D z dwoma wierszami, każdy odpowiadający linii, z krótszą liczbą wypełnioną lewą spacją. Na przykład
który w MATL jest zdefiniowany jako
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 ,
736056 bajtówWypróbuj online!
Pobiera dane wejściowe jako dwa ciągi znaków i zwraca listę cyfr
Alternatywny:
Pobiera dane wejściowe jako dwie liczby całkowite; ta sama wydajność
Python 2 ,
6059 bajtówWypróbuj online!
źródło
Java 10,
7857 bajtówWprowadź jako dwie tablice znaków wypełnione spacjami.
Zmienia pierwszą tablicę wejściową zamiast zwracać nową, aby zaoszczędzić 21 bajtów (dzięki @ OlivierGrégoire ).
Wypróbuj online.
Wyjaśnienie:
źródło
a->b->{for(int i=a.length;i-->0;)if(a[i]<b[i])a[i]=b[i];}
( 57 bajtów ). Wykorzystaj ponowniea
jako dane wyjściowe, aby uzyskać dużo, dużo bajtów.J ,
1412 bajtów-2 bajty dzięki Jonaszowi
Wypróbuj online!
Wprowadzanie i wyprowadzanie jako lista (-y) cyfr
źródło
(>./@,:)&.|.
. Wypróbuj online!Japt,
987 bajtówPobiera dane wejściowe jako tablicę tablic cyfrowych.
Spróbuj
Jeśli przyjmowanie tablic wypełnionych zerami jako danych wejściowych jest dozwolone (obecnie mieści się w „wygodnym formacie”, ale podejrzewam, że nie jest to intencja osoby rzucającej wyzwanie), może to być 3 bajty.
Spróbuj
źródło
y
teraz skrót ? Nie wiedziałem tego. Oto inny sposób , również 8 bajtów.'
. Nie wiem, czy to by kiedykolwiek zaoszczędziło bajtów, ale jest zdecydowanie fajne.Perl 6 , 37 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako listę list cyfr.
źródło
05AB1E ,
9 65 bajtów-3 dzięki Emigna
-1 dzięki Kudłaty
Pobiera dane wejściowe jako listę list cyfr
Wypróbuj online! lub Wypróbuj wszystkie przypadki testowe
źródło
€R
może byćí
. Również nie sądzę, trzeba€þ
jaknumber > space
€þ
i nie zadziałało, ale teraz działa ...J
na końcu?Perl 6 , 15 bajtów
Wypróbuj online!
Traktuje dane wejściowe jako listę wypełnionych spacjami tablic znaków, choć w przypadku tego wyzwania luźny format wprowadzania sprawia, że jest to raczej nudne. Alternatywnie, oto program, który zamiast tego pobiera listę dwóch liczb całkowitych:
Perl 6 , 41 bajtów
Wypróbuj online!
Jeśli nie przeszkadza ci duża ilość białych znaków, możesz również usunąć
+
przód.Wyjaśnienie:
źródło
Haskell , 40 bajtów
Wejście / wyjście jako ciągi, spróbuj online!
Wyjaśnienie
Funkcja
p
zastępuje każdy znak spacją, używając,p b++a
ap a++b
zatem ma tę samą długość. W ten sposób możemy korzystaćzipWith
bez utraty elementów, używaniemax
z nim działa, ponieważ(spacja) ma niższy punkt kodowy niż dowolny ze znaków
['0'..'9']
.źródło
JavaScript (ES6),
5149 bajtówUwaga: Ta odpowiedź została opublikowana, zanim luźne formaty We / Wy zostały wyraźnie dozwolone. Przy zerowanych tablicach cyfr można to zrobić w 33 bajtach (ale jest o wiele mniej interesujące, IMHO).
Pobiera dane wejściowe jako dwie liczby całkowite. Zwraca liczbę całkowitą.
Wypróbuj online!
Skomentował
Alternatywna wersja
Ten sam format we / wy.
Wypróbuj online!
źródło
Tcl , 156 bajtów
Wypróbuj online!
Niezbyt golfowy, ale musiałem spróbować. Gra w golfa później!
źródło
Partia, 120 bajtów
Pobiera dane wejściowe jako parametry wiersza polecenia. Wersja 188 bajtów działa na liczbach całkowitych o dowolnej długości:
Pobiera dane wejściowe na STDIN.
źródło
Gałązka , 125 bajtów
Kiedy zobaczyłem to wyzwanie, pomyślałem: „pozwól mi użyć języka szablonów! Na pewno dobrze pasuje”
Myliłem się ... tak źle .... ... Ale było fajnie!
Wymaga to ustawienia „strict_variables” na
false
(wartość domyślna).Aby użyć tego makra, możesz wykonać następujące czynności:
Powinien wyświetlać 167.
Możesz tego spróbować w https://twigfiddle.com/rg0biy
(„strict_variables” jest wyłączone, domyślnie jest włączone na stronie)
źródło
Łuska , 5 bajtów
Dogodnie przyjmuje dane wejściowe / wyjściowe jako listę cyfr, spróbuj online lub sprawdź wszystko!
Wyjaśnienie
źródło
Stax , 5 bajtów
Uruchom i debuguj
Ten program pobiera dane wejściowe jako tablicę ciągów.
Uruchom ten
Po raz pierwszy widziałem zastosowanie instrukcji nakładki „na wolności”.
źródło
SNOBOL4 (CSNOBOL4) , 153 bajty
Wypróbuj online!
źródło
Pyth, 5 bajtów
Pobiera dane wejściowe jako tablicę dwóch łańcuchów wypełnionych spacją.
Wypróbuj tutaj .
źródło
Japt , 4 bajty
Dane wejściowe są traktowane jako tablica dwóch tablic liczb wypełnionych zerami.
Wypróbuj online!
źródło
Ceylon, 55/99
Z ciągami 0 lub znakami spacji o tej samej długości (zwracanie iterowalnych znaków):
W przypadku łańcuchów 0 lub spacji (zwracanie ciągu):
Z ciągami o możliwie różnej długości (zwracanie ciągu):
źródło
C # (.NET Core) , 57 bajtów
-1 bajty poprzez dodanie curry
Wypróbuj online
źródło
Rubin , 25 bajtów
Wypróbuj online!
Lista wstępnie wypełniona bla bla. (Chociaż to trochę przypomina oszustwo).
źródło
Retina 0.8.2 , 39 bajtów
Wypróbuj online! Link zawiera pakiet testowy. Poprzednia 45-bajtowa wersja Retina 1 akceptuje niepasowane ciągi:
Wypróbuj online! Link zawiera pakiet testowy. Wyjaśnienie:
Wypełnij obie wartości do tej samej długości. (Tylko Retina 1. Istnieją sposoby naśladowania tego w Retina 0.8.2, ale nie są bardzo golfowe.)
Transponuj wartości.
Posortuj każdą parę w kolejności.
Usuń wszystkie niskie cyfry i nadmiarowe znaki nowej linii.
źródło
Węgiel , 8 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wersja 10-bajtowa „dodaje” dowolną liczbę dopełnionych ciągów:
Wypróbuj online! Link jest do pełnej wersji kodu. Poprzednia 14-bajtowa wersja akceptuje niepasowane ciągi:
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wersja 17-bajtowa „dodaje” dowolną liczbę ciągów:
Wypróbuj online! Link jest do pełnej wersji kodu.
źródło
Mathematica 50 bajtów
a = 543; b = 791;
(* 793 *)
źródło