Fügen Sie n > 9
für jede mögliche Einfügung zwischen Ziffern in dieser Ganzzahl eine Addition ein +
und bewerten Sie sie mit einer Ganzzahl . Nehmen Sie dann die ursprüngliche Zahl, um diese Ergebnisse zu modulieren. Die Gesamtsumme dieser Operationen ausgeben.
Ein Beispiel mit n = 47852
:
47852 % (4785+2) = 4769
47852 % (478+52) = 152
47852 % (47+852) = 205
47852 % (4+7852) = 716
-----
5842
Eingang
Eine einzelne positive ganze Zahl in jedem geeigneten Format , n > 9
.
Ausgabe
Die Ausgabe einer einzelnen Ganzzahl gemäß der obigen Konstruktionstechnik.
Regeln
- Sie müssen sich keine Gedanken über Eingaben machen, die größer sind als der Standardtyp Ihrer Sprache.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
47852 -> 5842
13 -> 1
111 -> 6
12345 -> 2097
54321 -> 8331
3729105472 -> 505598476
code-golf
math
number-theory
AdmBorkBork
quelle
quelle
D.s¨s.p¨R+¹s%O
ohne dies zu sehen gepostet ; PJavaScript,
4347 BytesÜbernimmt die Eingabe als String.
Bearbeiten:
+4 Bytes : Führende Nullen in JavaScript konvertieren die Zahl in Oktal):
quelle
(+'$&$''+$`)
?$`
ist leer und es wird ein Fehler ausgegeben, der versucht zu evaluieren(13+)
(als Beispiel).Brachylog , 20 Bytes
Probieren Sie es online!
Erläuterung
Dies implementiert die angegebene Formel. Das Einzige, worauf wir achten müssen, ist, wenn sich a
0
in der Mitte der Eingabe befindet: In diesem Fall wird Brachylog ziemlich schrullig. Beispielsweise wird nicht akzeptiert, dass eine Liste von Ganzzahlen, die mit a beginnen0
, zu einer Ganzzahl verkettet werden kann ( die die führende ignorieren würde erfordern0
- das so programmiert ist , in erster Linie auf diese Weise Endlosschleifen zu vermeiden). Um dieses Problem zu umgehen, konvertieren wir die Eingabe in eine Zeichenfolge und konvertieren dann alle geteilten Eingaben in Ganzzahlen zurück.quelle
ES6 (Javascript),
4240 BytesEDITS:
Golf gespielt
Prüfung
quelle
m<2**31
Sie mitx=1
dem Speichern eines Bytes beginnen.Python 2, 45 Bytes
Verwendet Arithmetik anstelle von Zeichenfolgen, um die Eingabe
n
in Teilen/c
und zu teilenn%c
, diec
durch Potenzen von 10 rekursiv sind.quelle
Gelee , 12 Bytes
TryItOnline!
Wie?
quelle
Perl
35 3227 BytesBeinhaltet +3 für
-p
8 Bytes dank Dada gespart
quelle
C 77 + 4 = 81 Bytes
Golf gespielt
Ungolfed
quelle
r=0
, dass bei einem erneuten Aufruf der Funktion das Ergebnis korrekt ist. Es ist irgendwo in Meta, wenn Sie globale Variablen verwenden, dann müssen Sie mit den Nebenwirkungen des mehrmaligen Aufrufs einer Funktion umgehen.r
global deklarieren, aber innerhalb der Funktion als Anweisung, die Sie sagen könnenr=0;
, siehe meine Antwort zum Beispiel.Python 2,
686468 Bytes-4 Bytes dank Atlasologe
* Die Eingabe ist eine Zeichenfolge
quelle
lambda n:sum(int(n)%eval(n[:i]+'+'+n[i:])for i in range(len(n)))
8
oder9
danach enthalten, und gibt falsche Antworten für andere (wie im letzten Testfall). Zahlen, die mit einer Null beginnen, sind oktal. repl.it/EmMmC 59 Bytes
t
ist10,100,1000,...
und repräsentiert den Schnitt in der großen Zahl.n/t
ist der rechte Teil undn%t
der linke Teil. Wennt
größer als die Zahl ist, ist es fertig.Ungolfed und Nutzung:
quelle
Retina , 38 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Nicht gerade effizient ...
Probieren Sie es online! (Die erste Zeile aktiviert eine durch Zeilenvorschub getrennte Testsuite.)
Erläuterung
Zwischen jedem Zeichenpaar wird ein Komma eingefügt, alles vor dem Match, ein Semikolon, die gesamte Eingabe, ein Zeilenvorschub und alles nach dem Match. Für die Eingabe
12345
gibt uns dies:Dh jede mögliche Aufteilung der Eingabe zusammen mit einem Paar der Eingabe. Diese letzte Zeile brauchen wir aber nicht:
Wir werfen es weg.
Dies ersetzt jede Zahl sowie das Komma durch ihre unäre Darstellung. Da das Komma keine Zahl ist, wird es als Null behandelt und einfach entfernt. Dies addiert die beiden Teile in jeder Aufteilung.
Dies berechnet das Modulo, indem alle Kopien der ersten Nummer von der zweiten Nummer entfernt werden.
Das war's, wir zählen einfach, wie viele
1
s in der Zeichenkette übrig sind und geben das als Ergebnis aus.quelle
Pyth, 14 Bytes
Ein Programm, das die Eingabe einer Ganzzahl akzeptiert und das Ergebnis ausgibt.
Testsuite
Wie es funktioniert
quelle
Haskell, 62 Bytes
Definiert eine Funktion
f
. Sehen Sie, wie alle Testfälle bestanden werden.quelle
Perl 6 , 33 Bytes
Erweitert:
quelle
Mathematica, 75 Bytes
Hierbei wird der Mustervergleich in der Ziffernliste verwendet, um alle Partitionen in zwei Teile zu extrahieren. Jede solche Partition in
a
undb
wird dann durch ersetztDas Bemerkenswerte dabei ist, dass Summen von Listen mit ungleicher Länge unbewertet bleiben. Wenn also z. B.
a
ist1,2
undb
ist,3,4,5
ersetzen wir dies zuerst durch{1,2} + {3,4,5} + {}
. Der letzte Term soll sicherstellen, dass er immer noch unbewertet bleibt, wenn wir eine gerade Anzahl von Ziffern gleichmäßig aufteilen. Jetzt ist dieMap
Operation in Mathematica so verallgemeinert, dass sie mit jeder Art von Ausdruck funktioniert, nicht nur mit Listen. Wenn wir alsoFromDigits
diese Summe addieren, wird jede dieser Listen wieder zu einer Zahl. Zu diesem Zeitpunkt ist der Ausdruck eine Summe von ganzen Zahlen, die nun ausgewertet werden. Dies spart ein Byte gegenüber der herkömmlicheren LösungTr[FromDigits/@{{a},{b}}]
, bei der zuerst die beiden Listen konvertiert und dann das Ergebnis summiert werden.quelle
Eigentlich ,
1615 BytesGolfvorschläge willkommen! Probieren Sie es online!
Bearbeiten: -1 Byte dank Teal Pelican.
Ungolfing
quelle
╤╜d+╜%
MΣ)Ruby, 64 Bytes
Nimmt die Eingabe als String
quelle
0
oktal beginnen, was bedeutet, dass dies für den letzten Testfall fehlschlägt. Hier ist eine 78-Byte-Lösung, die das angeht.Befunge,
10196 BytesProbieren Sie es online!
Erläuterung
quelle
APL, 29 Bytes
⎕IO
muss sein1
. Erklärung (Ich bin nicht gut darin zu erklären, irgendwelche Verbesserungen sind sehr willkommen):quelle
C #, 67 Bytes
Volles Programm mit ungolfederten, erklärten Methoden und Testfällen:
quelle
Attache , 48 Bytes
Probieren Sie es online!
Erläuterung
quelle
Clojure,
9181 BytesBearbeiten: Dies ist kürzer, da es eine anonyme Funktion deklariert
(fn[v](->> ...))
und kein->>
Makro verwendet, obwohl es einfacher zu lesen und so aufzurufen war.Original:
Erzeugt eine Sequenz von 1, 10, 100, ... und nimmt die ersten 10 Elemente (unter der Annahme, dass die Eingabewerte kleiner als 10 ^ 11 sind), ordnet sie Modulos zu, wie in den Spezifikationen angegeben, und berechnet die Summe. Lange Funktionsnamen machen diese Lösung ziemlich lang, aber zumindest sollte auch die Golfversion leicht zu befolgen sein.
Zuerst habe ich versucht, Saiten zu jonglieren, aber dafür war eine Menge Kochplatte erforderlich.
quelle
Schläger 134 Bytes
Ungolfed:
Testen:
Ausgabe:
quelle
R , 50 Bytes
Probieren Sie es online!
quelle
SNOBOL4 (CSNOBOL4) , 92 Bytes
Probieren Sie es online!
quelle
Ruby 45 Bytes
Dies ist eine wirklich saubere Lösung. Es ist technisch korrekt, aber es ist super ineffizient. Es wäre viel effizienter, q.to_s.size.times {...} zu schreiben. Wir verwenden q.times, weil es Zeichen speichert und der Ausdruck für die zusätzliche Häufigkeit, mit der er den Prozess durchläuft, nur null ergibt.
quelle
->q{(0..q).reduce{|s,x|p=10**x;s+q%(q/p+q%p)}}
PHP , 60 Bytes
Probieren Sie es online!
quelle
Java 8,
12766 Bytes-61 Bytes durch Erstellen eines Ports der C # - Antwort von @adrianmp .
Probieren Sie es hier aus.
quelle
Pari / GP , 42 Bytes
Probieren Sie es online!
quelle
Japt ,
1110 BytesVersuch es
Erläuterung
quelle