Wygrywa najkrótszy kod, który przejdzie wszystkie możliwości.
W matematyce trwałość liczby mierzy, ile razy dana operacja musi być zastosowana do jej cyfr, dopóki nie zostanie osiągnięty pewien ustalony warunek. Można ustalić addytywne utrzymywanie dodatniej liczby całkowitej, dodając cyfry liczby całkowitej i powtarzając. Dodawalibyśmy cyfry sumy, dopóki nie zostanie znaleziona liczba jednocyfrowa. Liczba powtórzeń potrzebnych do osiągnięcia tej liczby jednocyfrowej jest addytywnym utrzymywaniem się tej liczby.
Przykład z użyciem 84523:
84523
8 + 4 + 5 + 2 + 3 = 22
2 + 2 = 4
It took two repetitions to find the single digit number.
So the additive persistence of 84523 is 2.
Otrzymasz ciąg dodatnich liczb całkowitych, które musisz obliczyć addytywną trwałość. Każda linia będzie zawierać inną liczbę całkowitą do przetworzenia. Dane wejściowe mogą być dowolnymi standardowymi metodami We / Wy .
Dla każdej liczby całkowitej należy wypisać liczbę całkowitą, po której następuje pojedyncza spacja, a następnie jej trwałość addytywna. Każda przetwarzana liczba całkowita musi znajdować się w osobnym wierszu.
Przypadki testowe
Wejście wyjście
99999999999 3
10 1
8 0
19999999999999999999999 4
6234 2
74621 2
39 2
2677889 3
0 0
źródło
Odpowiedzi:
K - 29 znaków
Dane wejściowe to nazwa pliku przekazywana jako argument, 29 znaków bez nazwy pliku.
źródło
-1+#
=>#1_
Python 84 znaki
źródło
06234
.. wynik wyzwanie wyzwanie :-)Haskell, 100 znaków
źródło
read.pure
zamiast tego(-48+).fromEnum
, spróbuj online!Python (93 bajty)
źródło
9
i err ...and
input()
zamiastint(raw_input())
....06234
.Łuska ,
1015 bajtów+5 bajtów za okropne wymagania We / Wy
Wypróbuj online!
Wyjaśnienie
Aby obsłużyć wiele danych wejściowych, musimy użyć
m(₁r)¶
(gdzie₁
funkcja wykonuje interesujące obliczenia):Funkcja
₁
wykonuje następujące czynności:źródło
bash, 105 znaków
Prawie nie gra w golfa, ale nie widzę, jak to poprawić.
źródło
Haskell - 114
źródło
pure
ponad(:[])
i definiując operatora zamiasts
, spróbuj online!Ruby, 85 znaków
Musiałem pożyczyć od Alexa pomysł „suma wielkości * 48”, ponieważ jest zbyt fajny, by go przegapić (przynajmniej w Ruby).
źródło
Golfscript, 40 znaków
źródło
J - 45 znaków
Czyta ze standardowego
źródło
^:a:
ale nie mogłem znaleźć odpowiedniej dokumentacji ... żadnych wskazówek?a:
przez^:a:
podstęp w J karta referencyjna [PDF]^:a:
, jakie znałem: D^:(<'')
początkowo jako pewnej odmiany (prawdopodobnie dla Kaprekara), dopóki nie zauważyłem jej na karcie i nie dowiedziałem się oa:
tej okazji.c - 519
(lub 137, jeśli uznają mnie za ramy ...)
Zamiast rozwiązać tylko tę jedną operację, postanowiłem stworzyć ramy dla rozwiązania wszystkich problemów związanych z trwałością .
Tylko dwie linie zaczynające się od
char*b
są unikalne dla tego problemu.Traktuje dane wejściowe jako ciągi, co oznacza, że wiodące „0” nie są usuwane przed etapem wyjściowym.
Powyższe zawierało komentarze, sprawdzanie błędów i raportowanie oraz odczyt plików (dane wejściowe muszą pochodzić ze standardowego wejścia) z następujących elementów:
Trochę więcej można by zaoszczędzić, gdybyśmy chcieli wyciec pamięć jak sito. Podobnie poprzez
#define
powrót i tym podobne, ale w tym momencie nie dbam o to, aby było brzydsze.źródło
J, 74 znaki
Edycje
[:
na ataki@
0".
do".
upraszcza rzeczyNa przykład
źródło
Myślę, że jest to najlepsze, co mogę wymyślić.
Ruby 101 znaków
źródło
PARI / GP 101 znaków
Niestety, nie ma funkcji wprowadzania danych dla GP, więc myślę, że brakuje w niej części IO. :(Naprawiono: Dzięki Eelvex! :)źródło
input()
:)JavaScript - 95
EDYCJA: Whoops nie robi wielu linii
źródło
J, 78
Rozwiązanie rekurencyjne. Czyta ze standardowego. Zapisuje na standardowe wyjście , więc zmniejsz mi trochę luzu - zajmuje to dodatkowe 18 znaków.
źródło
Perl - 77 znaków
źródło
JavaScript ,
5747 bajtów-10 bajtów dzięki @ l4m2!
Wypróbuj online!
źródło
f=(s,c=0)=>s>9?f([...s+""].reduce((x,y)=>x*1+y*1),++c):c
f=(s,c=0)=>s>9?f([...s+""].reduce((x,y)=>x- -y),++c):c
f=(s,c=0)=>s>9?f(eval([...s+""].join`+`)),++c):c
s>9
ieval
były świetne pomysły. Myślę, że miałeś tam dodatkowy paren, dzięki czemu zaoszczędziłeś w sumie 10 bajtów :-)05AB1E , 13 bajtów
Wprowadź jako listę liczb całkowitych.
Wypróbuj online.
Wyjaśnienie:
źródło
MathGolf , 11 bajtów
Wypróbuj online!
Niesamowicie nieefektywny, ale nie dbamy o to. Zasadniczo, wykorzystując fakt, że addytywna trwałość liczby jest mniejsza lub równa samej liczbie.Wykorzystuje fakt, że trwałość addytywna jest mniejsza lub równa liczbie cyfr liczby. Teraz z łatwością przechodzi wszystkie przypadki testowe.
Format wejściowy, choć nieoptymalny dla niektórych języków, jest w rzeczywistości standardową metodą przyjmowania wielu przypadków testowych jako danych wejściowych w MathGolf. Każdy wiersz danych wejściowych jest przetwarzany jako wykonanie własnego programu, a dane wyjściowe są oddzielone pojedynczym nowym wierszem dla każdego wykonania.
Objaśnienie (za pomocą
n = 6234
)źródło
K (ngn / k) , 16 bajtów
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
źródło
Stax ,
811 bajtówUruchom i debuguj
+3 bajty dzięki @Khuldraeseth (pierwsza odpowiedź nie miała zgodnego wyniku)
źródło
i
zamiastu
. Zgodnie z drakońskimi specyfikacjami We / Wy staje się 11 bajtów .scala 173:
źródło
Perl 5 , 65 bajtów
Wypróbuj online!
źródło
Java (OpenJDK 8) , 79 bajtów
Wypróbuj online!
Istnieje duży potencjał, aby pograć w golfa dalej, ale przyjrzę się temu w przyszłości, ale na razie jestem bardzo zadowolony z tego małego wyniku.
źródło
Python 3 , 82 bajty
źródło
Tcl , 95 bajtów
Wypróbuj online!
źródło
Japt , 28 bajtów
Wypróbuj online!
źródło
PHP, 72 + 1 bajtów
+1 za
-R
flagę.Uruchom jako potok z
-R
.$i
musi zostać zainicjowany.(Ponadto nie wydrukowałby niczego zamiast
0
pojedynczych cyfr bez inicjalizacji).źródło
Bash + coreutils, 83 bajty
Wypróbuj online!
Powinny być zapisane w skrypcie wywoływanym
a
i umieszczanym w systemiePATH
, ponieważ wywołuje się rekurencyjnie. Pobiera dane wejściowe z wiersza poleceń, npa 1999
. Zwraca kod zakończenia.TIO ma pewne ograniczenia co do tego, co można zrobić ze skryptem, dlatego w nagłówku znajduje się kod, który może go uruchomić.
Wyświetla błąd
stderr
dla wejścia większego niż liczby całkowite, które może obsłużyć bash, ale ponieważ faktyczne obliczenia są wykonywane za pomocą łańcuchów, i tak daje właściwy wynik.źródło