Biorąc pod uwagę liczbę całkowitą n > 9
, dla każdego możliwego wstawienia między cyframi w tej liczbie całkowitej wstaw wstawkę +
i oceń. Następnie weź oryginalny numer modulo te wyniki. Podaj sumę tych operacji.
Przykład z n = 47852
:
47852 % (4785+2) = 4769
47852 % (478+52) = 152
47852 % (47+852) = 205
47852 % (4+7852) = 716
-----
5842
Wkład
Pojedyncza dodatnia w dowolnym, wygodnym formacie , n > 9
.
Wydajność
Wyjście pojedynczej liczby całkowitej zgodnie z powyższą techniką konstrukcyjną.
Zasady
- Nie musisz się martwić, że dane wejściowe są większe niż domyślny typ Twojego języka.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- 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).
Przykłady
47852 -> 5842
13 -> 1
111 -> 6
12345 -> 2097
54321 -> 8331
3729105472 -> 505598476
code-golf
math
number-theory
AdmBorkBork
źródło
źródło
D.s¨s.p¨R+¹s%O
nie opublikowałem tego, nie widząc tego; PJavaScript,
4347 bajtówPobiera dane wejściowe jako ciąg.
Edytować:
+4 bajty : wiodące zera w JavaScript konwertują liczbę na ósemkową):
źródło
(+'$&$''+$`)
?$`
jest pusta i zgłasza błąd przy próbie ewaluacji(13+)
(jako przykład).Brachylog , 20 bajtów
Wypróbuj online!
Wyjaśnienie
To implementuje podaną formułę. Jedyną rzeczą, na którą musimy uważać, jest to, gdy a
0
znajduje się w środku danych wejściowych: w tym przypadku Brachylog robi się dość dziwaczny, na przykład nie akceptuje, że lista liczb całkowitych rozpoczynających się od a0
może być konkatenowana w liczbę całkowitą ( co wymagałoby zignorowania wiodącego0
- jest to głównie zaprogramowane w ten sposób, aby uniknąć nieskończonych pętli). Dlatego w celu obejścia tego problemu przekształcamy dane wejściowe na ciąg znaków, a następnie przekształcamy z powrotem wszystkie podzielone dane wejściowe na liczby całkowite.źródło
ES6 (JavaScript),
42, 40 bajtówEDYCJE:
Grał w golfa
Test
źródło
m<2**31
, możesz zacząć odx=1
zapisania bajtu.Python 2, 45 bajtów
Wykorzystuje arytmetykę zamiast ciągów do dzielenia danych wejściowych
n
na częścin/c
in%c
, którac
powraca przez potęgi 10.źródło
Galaretka , 12 bajtów
TryItOnline!
W jaki sposób?
źródło
Perl
35 3227 bajtówObejmuje +3 za
-p
Zaoszczędzono 8 bajtów dzięki Dadzie
źródło
C 77 + 4 = 81 bajtów
grał w golfa
Bez golfa
źródło
r=0
tak, aby po ponownym wywołaniu funkcji wynik był poprawny. Jest to gdzieś w Meta, jeśli używasz zmiennych globalnych, musisz poradzić sobie z efektami ubocznymi wywołania funkcji więcej niż raz.r
globalny, ale wewnątrz funkcji jako wypowiedź, którą możesz powiedziećr=0;
, zobacz na przykład moją odpowiedź.Python 2,
686468 bajtów-4 bajty dzięki atlasologowi
* Dane wejściowe to ciąg znaków
źródło
lambda n:sum(int(n)%eval(n[:i]+'+'+n[i:])for i in range(len(n)))
8
lub9
po nim i daje błędne odpowiedzi dla innych (jak ostatni przypadek testowy). Liczby zaczynające się od zera są ósemkowe. repl.it/EmMmC, 59 bajtów
t
jest10,100,1000,...
i reprezentuje cięcie dużej liczby.n/t
jest prawą częścią in%t
lewą częścią. Jeślit
jest większy niż liczba, jest zakończony.Niegolfowane i użytkowanie:
źródło
Siatkówka , 38 bajtów
Liczba bajtów zakłada kodowanie ISO 8859-1.
Niezupełnie wydajny ...
Wypróbuj online! (Pierwszy wiersz włącza pakiet testowy oddzielony od linii).
Wyjaśnienie
Pomiędzy każdą parą znaków wstawiamy przecinek, wszystko przed dopasowaniem, średnik, całe wejście, wysuw linii i wszystko po meczu. W przypadku danych wejściowych
12345
daje to nam:Tj. Każdy możliwy podział wejścia wraz z parą wejścia. Nie potrzebujemy tej ostatniej linii, więc:
Odrzucamy to.
Zastępuje to każdą liczbę, a także przecinek, jego jednoznaczną reprezentacją. Ponieważ przecinek nie jest liczbą, jest traktowany jako zero i po prostu usuwany. Dodaje to dwie części w każdym podziale.
To oblicza moduł, usuwając wszystkie kopie pierwszego numeru z drugiego numeru.
To wszystko, po prostu liczymy, ile
1
s pozostało w ciągu i wypisujemy to jako wynik.źródło
Pyth, 14 bajtów
Program, który pobiera liczbę całkowitą i wypisuje wynik.
Zestaw testowy
Jak to działa
źródło
Haskell, 62 bajty
Definiuje funkcję
f
. Zobacz, jak przejdzie wszystkie testy.źródło
Perl 6 , 33 bajtów
Rozszerzony:
źródło
Mathematica, 75 bajtów
Używa dopasowania wzorca na liście cyfr, aby wyodrębnić wszystkie ich partycje na dwie części. Każda taka partycja na
a
ib
jest następnie zastępowana przezGodne uwagi jest tutaj to, że sumy list o nierównej długości pozostają nieocenione, więc np. Jeśli
a
jest1,2
ib
jest,3,4,5
to najpierw zastępujemy to{1,2} + {3,4,5} + {}
. Ostatni termin ma na celu zapewnienie, że nadal będzie nieoceniony, gdy równomiernie podzielimy parzystą liczbę cyfr. TerazMap
działanie w Mathematica jest wystarczająco uogólnione, że działa z każdym rodzajem wyrażenia, nie tylko listami. Więc jeśli odwzorujemyFromDigits
tę sumę, zamieni każdą z tych list z powrotem w liczbę. W tym momencie wyrażenie jest sumą liczb całkowitych, które teraz są oceniane. Oszczędza to bajt w stosunku do bardziej konwencjonalnego rozwiązania,Tr[FromDigits/@{{a},{b}}]
które najpierw przekształca dwie listy, a następnie podsumowuje wynik.źródło
Faktycznie ,
1615 bajtówZapraszamy do gry w golfa! Wypróbuj online!
Edycja: -1 bajt dzięki pelikanowi Teal.
Ungolfing
źródło
╤╜d+╜%
MΣ)Rubinowy, 64 bajty
Pobiera dane wejściowe jako ciąg
źródło
0
na ósemkowe, co oznacza, że nie powiedzie się to w ostatnim przypadku testowym. Oto 78-bajtowe rozwiązanie tego problemu.Befunge,
10196 bajtówWypróbuj online!
Wyjaśnienie
źródło
APL, 29 bajtów
⎕IO
musi być1
. Wyjaśnienie (nie jestem dobry w wyjaśnianiu, wszelkie ulepszenia tego są bardzo mile widziane):źródło
C #, 67 bajtów
Pełny program z nieoznakowanymi, objaśnionymi metodami i przypadkami testowymi:
źródło
Attache , 48 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Clojure,
9181 bajtówEdycja: jest krótsza, ponieważ deklaruje anonimową funkcję
(fn[v](->> ...))
i nie używa->>
makra, chociaż łatwiej było to odczytać i wywołać w ten sposób.Oryginalny:
Generuje sekwencję 1, 10, 100, ... i bierze pierwsze 10 pozycji (zakładając, że wartości wejściowe są mniejsze niż 10 ^ 11), mapuje na moduły zgodnie ze specyfikacją i oblicza sumę. Długie nazwy funkcji sprawiają, że to rozwiązanie jest dość długie, ale przynajmniej wersja golfowa powinna być dość łatwa do naśladowania.
Najpierw próbowałem żonglować strunami, ale wymagało to mnóstwa płyt kotłowych.
źródło
Rakieta 134 bajtów
Nie golfowany:
Testowanie:
Wydajność:
źródło
R , 50 bajtów
Wypróbuj online!
źródło
SNOBOL4 (CSNOBOL4) , 92 bajty
Wypróbuj online!
źródło
Ruby 45 bajtów
To naprawdę fajne rozwiązanie. Jest to technicznie poprawne, ale jest bardzo nieefektywne. O wiele bardziej wydajne byłoby pisanie q.to_s.size.times {...}. Używamy q.times, ponieważ zapisuje znaki, a dodatkowa liczba przejść przez proces powoduje, że wyrażenie po prostu ocenia na zero.
źródło
->q{(0..q).reduce{|s,x|p=10**x;s+q%(q/p+q%p)}}
PHP , 60 bajtów
Wypróbuj online!
źródło
Java 8,
12766 bajtów-61 bajtów poprzez utworzenie portu odpowiedzi C # @adrianmp .
Wypróbuj tutaj.
źródło
Pari / GP , 42 bajty
Wypróbuj online!
źródło
Japt ,
1110 bajtówSpróbuj
Wyjaśnienie
źródło