Znany również jako [analogowy root]
( Naprzeciw cyfrowego korzenia! );)
Cyfrowy pierwiastek z liczby jest ciągłym sumowaniem jego cyfr, dopóki nie będzie pojedynczą cyfrą, na przykład cyfrowy pierwiastek z 89456 jest obliczany w następujący sposób:
8 + 9 + 4 + 5 + 6 = 32
3 + 2 = 5
Cyfrowy pierwiastek 89456 to 5.
Biorąc pod uwagę cyfrę wprowadzaną przez STDIN , wydrukuj / zwróć wszystkie możliwe dwucyfrowe liczby, które mają ten cyfrowy pierwiastek. Jeśli zajdzie taka potrzeba, może zawierać siebie, np. 05
Są to wszystkie możliwe wejścia i wyjścia:
(Możesz wybrać, czy ma być wstawiane zero początkowe dla samej cyfry)
I / O
0 => 0 lub 00 lub nic
1 => 01 i / lub 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91 - Upewnij się, że 1 nie zwraca 100
2 => 02 i / lub 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 92
3 => 03 i / lub 3, 12, 21, 30, 39, 48, 57, 66, 75, 84, 93
4 => 04 i / lub 4, 13, 22, 31, 40, 49, 58, 67, 76, 85, 94
5 => 05 i / lub 5, 14, 23, 32, 41, 50, 59, 68, 77, 86, 95
6 => 06 i / lub 6, 15, 24, 33, 42, 51, 60, 69, 78, 87, 96
7 => 07 i / lub 7, 16, 25, 34, 43, 52, 61, 70, 79, 88, 97
8 => 08 i / lub 8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98
9 => 09 i / lub 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99
Brak standardowych luk i kod-golf , więc wygrywa najkrótsza odpowiedź w bajtach.
Gratulacje dla Heeby'ego Jeeby Mana za jego niesamowitą 46-bajtową odpowiedź na uderzenie mózgu!
Odpowiedzi:
Pyke, 6 bajtów
Wypróbuj tutaj!
źródło
JavaScript (ES6),
273130 bajtówPowraca
0
do0
lub szereg rozwiązań inaczej.Próbny
Pokaż fragment kodu
źródło
+
żeby zapisać kolejny bajt? Chociaż nie działałoby tak ze standardowym ciągiem w ten sposób.+
wzięło ... Zaktualizowano. Dzięki!05AB1E ,
13129 bajtów-3 bajty dzięki Adnanowi
Wypróbuj online!
Wyjaśnienie
źródło
SOSO
, ponieważ liczba nigdy nie będzie większa niż 99.тL<
nie jest tak naprawdę krótszy niż zwykły99Ý
. ;)Haskell , 21 bajtów
f
przyjmuje liczbę całkowitą i zwraca listę liczb całkowitych.Wypróbuj online!
d
i generuje zakres z każdą dziewiątą liczbą do granicy 99, z wyjątkiem trudnego przypadku0
.0
, używa mocy0^d==1
dla0
i==0
dla wszystkich innych cyfr. W ten sposób99^0^0^d
daje1
o0
ale99
na nic innego.źródło
Galaretka , 8 bajtów
Wypróbuj online!
Inny algorytm niż moja inna odpowiedź.
źródło
Brain-Flak , 46 bajtów
Wypróbuj online!
Wyjaśnienie
Ta odpowiedź wykorzystuje pomysł z odpowiedzi Megatom, a mianowicie wykorzystanie wysokości stosu jako różnicy między licznikiem pętli a przyrostem. Podobnie jak poprzednie odpowiedzi, ta odpowiedź ma dużą zewnętrzną pętlę do przechwytywania wszystkich zer. Wewnątrz pętli wciskamy 10, aby działać jak licznik, a następnie uruchamiamy kolejną zagnieżdżoną pętlę. W tej pętli zmniejszamy licznik o 1
Następnie wstawiamy dwa górne elementy, które są licznikiem i ostatnim elementem, który obliczyliśmy. Dodajemy je do wysokości stosu, aby zrównoważyć dekrementację, następnie wciskamy to dwa razy, raz dla wyjścia i raz, aby można go było wykorzystać do obliczenia następnego wyniku. Dwukrotne przesuwanie rzeczy oznacza, że przypadkowo wypychamy dodatkową wartość, którą należy usunąć pod koniec wykonywania.
Powodem, dla którego ledwo pokonuje Megatom, jest odpowiedź Megatom, która musi uzyskać wysokość stosu, podczas gdy ostatni wynik wciąż znajduje się na stosie. Oznacza to, że są zmuszeni użyć raczej drogiego,
[()]
aby zmniejszyć sumę o jeden. Przenosząc duplikat na koniec pętli, jestem w stanie uniknąć konieczności używania[()]
go kosztem dodatkowego{}
na samym końcu programu. Gdyby Megatom zastosował tę strategię, jego odpowiedź wyglądałaby następująco:także 46 bajtów.
Brain-Flak , 52 bajty
Wypróbuj online!
Wyjaśnienie
Główna pętla zewnętrzna stanowi specjalny przypadek dla wprowadzenia wartości zero. Jeśli wprowadzono zero, przeskakujemy przez całą pętlę, zerujemy zero, a następnie nic nie wypisujemy. W przeciwnym razie wchodzimy w pętlę. Tutaj wciskamy pętlę 10 razy za każdym razem dodając 9 na górze stosu, zachowując stare wartości. Ponieważ 9 zachowuje sumy cyfrowe, otrzymamy kolejną wartość. Po wygaśnięciu pętli używamy wygenerowanego przez nią zera do wyjścia z pętli, która jest następnie wyświetlana
{}
na końcu.Brain-Flak , 56 bajtów
Wypróbuj online!
Wyjaśnienie
Ta wersja działa bardzo podobnie do poprzedniej, tyle że zapętlamy 9 razy zamiast 10, pomijając pierwotną wartość. W tym celu musimy nieco zmienić sposób obsługi pamięci. Wszystkie bajty, które mogliśmy zapisać za pomocą tej metody, zostaną oczyszczone.
źródło
Python 2 , 29 bajtów
Wypróbuj online!
źródło
Brachylog , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Bash ,
3127 bajtówWypróbuj online!
poprzedni
źródło
brace expansion: (...) A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr, an optional increment, is an integer. (...) When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.
Dyalog APL, 15 bajtów
W jaki sposób?
⍵,10⍴9
- konkatenacja danych wejściowych z 109
s (⍵ 9 9 9 9 9 9 9 9 9 9
).+\
- suma skumulowana.(×⍵)/
- rozszerz czasy podpisania - gdzie podpis daje 1 dla 1-9 i 0 dla 0.Wypróbuj online!
Dyalog APL, 24 bajty
Wymaga
⎕IO←0
.W jaki sposób?
źródło
Brain-Flak , 48 bajtów
Wypróbuj online!
Mogę dodać wyjaśnienie później.
źródło
Mathematica, 25 bajtów
działa dla 0
źródło
0
. Nie obejmowałoby to również liczb, których cyfry sumują się do liczby większej niż 9. (np.9
Nie miałyby99
na wyjściu).Galaretka , 12 bajtów
Wypróbuj online!
Jak to działa
źródło
0
Właściwie 18 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
PHP, 41 bajtów
wyświetla wartości rozdzielone podkreśleniem
ERA
jest najkrótszą stałą w PHP o wartości131116
. Możesz go zastąpić nudną alternatywą100
lub zakończyć programdie
Wersja online
źródło
Brain-Flak ,
5452 bajtówWypróbuj online!
Mój pierwszy wypad z Brain-Flak i myślę, że całkiem nieźle sobie poradziłem. Ktoś z większym doświadczeniem ma porady?
Jak to działa:
źródło
Galaretka , 12 bajtów
Wypróbuj online!
źródło
PHP, 35
Tworzy zakres
[$argn, 100)
z krokiem9
jako tablica i drukuje go. Jeśli dane wejściowe0
to tworzy zakres[0,0]
=>array(0)
.źródło
Python,
4851 bajtów3 bajty zapisane dzięki @WheatWizard
źródło
~-x
zamiast(x-1)
if ~-x%9
~-n==~-x%9or x==n
aby zapisać bajtR , 23 bajty
Wypróbuj online!
Łącze TIO używa
function(x)
zamiast tegopryr::f
, ponieważ TIO nie mapryr
zainstalowanego pakietu.źródło
Pyke, 6 bajtów (stara wersja)
Zatwierdzenie robocze
Wyjaśnienie:
źródło
Rubin , 25 bajtów
Wypróbuj online!
źródło
C (gcc) , 55 bajtów
f()
nie muszą być wywoływane z żadnym argumentem;n
jest właśnie tam, a nie na zewnątrz funkcja zapisać bajt.Wypróbuj online!
źródło
printf
wewnątrz nagłówka pętli: Wypróbuj online!Węgiel drzewny ,
1411 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano
2 bajty, nie drukując niczego dla wejścia zerowego i 1 bajt, stosując operacje wektoryzacji3 bajty dzięki tylko @ ASCII. Wyjaśnienie:źródło
Julia 0.6 , 18 bajtów
Używam trójki, aby złapać
0
skrzynkę, i zakresu,n:9:99
aby utworzyć liczby. W Julii zakres jestAbstractVector
i może być użyty zamiast liczby rzeczywistejVector
w większości przypadków, ale po prostu zostanie wydrukowany, ponieważ1:9:91
nie spełnia wyzwania, więc zawijam go,[_;]
aby zebrać zawartość wVector
.Wypróbuj online!
źródło
Perl 5 , 25 + 1 (
-n
) = 26 bajtówWypróbuj online!
źródło
Clojure, 33 bajty
źródło
Clojure , 38 bajtów
lub jako funkcja anonimowa, która ma 29 bajtów
Wypróbuj online!
dzięki @steadybox
źródło
n=9
brakuje ostatniej cyfry99
. Wypróbuj online! Możesz także zapisać bajt, usuwając spację międzyf[n]
i(if(...
.Perl 5, 62 bajty
Musi być krótsza droga
źródło
Gol> <> , 12 bajtów
Wypróbuj online!
Jak to działa
źródło