Étant donné un entier n > 9
, pour chaque insertion possible entre les chiffres de cet entier, insérez une addition +
et évaluez. Ensuite, prenez le nombre original modulo ces résultats. Affiche le total de ces opérations.
Un exemple avec n = 47852
:
47852 % (4785+2) = 4769
47852 % (478+52) = 152
47852 % (47+852) = 205
47852 % (4+7852) = 716
-----
5842
Contribution
Un entier positif unique dans un format pratique , n > 9
.
Sortie
La sortie entière unique suivant la technique de construction ci-dessus.
Règles
- Vous n'avez pas à vous soucier d'une entrée plus grande que le type par défaut de votre langue.
- Un programme complet ou une fonction sont acceptables. Si une fonction est utilisée, vous pouvez renvoyer la sortie plutôt que de l’imprimer.
- Les échappatoires standard sont interdites.
- Il s’agit du code-golf, donc toutes les règles de golf habituelles s’appliquent et le code le plus court (en octets) gagne.
Exemples
47852 -> 5842
13 -> 1
111 -> 6
12345 -> 2097
54321 -> 8331
3729105472 -> 505598476
code-golf
math
number-theory
AdmBorkBork
la source
la source
D.s¨s.p¨R+¹s%O
sans voir ceci; PJavaScript,
4347 octetsPrend l'entrée sous forme de chaîne.
Modifier:
+4 octets : les zéros au début de JavaScript convertissent le nombre en octal):
la source
(+'$&$''+$`)
?$`
est vide, et il va jeter une erreur en essayant d’évaluer(13+)
(comme exemple).Brachylog , 20 octets
Essayez-le en ligne!
Explication
Ceci implémente la formule donnée. La seule chose à laquelle nous devons faire attention est quand a
0
est au milieu de l'entrée: dans ce cas, Brachylog devient assez bizarre, par exemple, il n'acceptera pas qu'une liste d'entiers commençant par un0
puisse être concaténée en un entier ( ce qui nécessiterait d'ignorer le début0
- ceci est principalement programmé de cette façon pour éviter des boucles infinies). Par conséquent, pour contourner ce problème, nous convertissons l'entrée en une chaîne, puis nous reconvertissons toutes les entrées fractionnées en entiers.la source
ES6 (Javascript),
42, 40 octetsEDITS:
Golfé
Tester
la source
m<2**31
vous pouvez commencer parx=1
sauvegarder un octet.Python 2, 45 octets
Utilise l'arithmétique plutôt que des chaînes pour diviser l'entrée
n
en partiesn/c
etn%c
quic
revient par des puissances de 10.la source
Gelée , 12 octets
TryItOnline!
Comment?
la source
Perl
35 3227 octetsComprend +3 pour
-p
Économisé 8 octets grâce à Dada
la source
C 77 + 4 = 81 octets
joué au golf
Ungolfed
la source
r=0
telle sorte que si la fonction est appelée à nouveau, le résultat est correct. C'est quelque part dans Meta, si vous utilisez des variables globales, vous devez faire face aux effets secondaires d'appeler une fonction plusieurs fois.r
global, mais à l'intérieur de la fonction, vous pouvez direr=0;
, voir ma réponse par exemple.Python 2,
686468 bytes-4 bytes thanks to atlasologist
*Input is a string
la source
lambda n:sum(int(n)%eval(n[:i]+'+'+n[i:])for i in range(len(n)))
8
or9
after it and gives wrong answers for others (like the last test case). Numbers starting with a zero are octal. repl.it/EmMmC, 59 bytes
t
is10,100,1000,...
and represents the cut in the big number.n/t
is the right part andn%t
the left part. Ift
is bigger than the number, it is finished.Ungolfed and usage:
la source
Retina, 38 bytes
Byte count assumes ISO 8859-1 encoding.
Not exactly efficient...
Try it online! (The first line enables a linefeed-separated test suite.)
Explanation
Between every pair of characters, we insert a comma, everything in front of the match, a semicolon, the entire input, a linefeed, and everything after the match. For input
12345
this gives us:I.e. every possible splitting of the input along with a pair of the input. We don't need that last line though so:
We discard it.
This replaces each number as well as the comma with its unary representation. Since the comma isn't a number, it's treated as zero and simply removed. This adds the two parts in each splitting.
This computes the modulo by removing all copies of the first number from the second number.
That's it, we simply count how many
1
s are left in the string and print that as the result.la source
Pyth, 14 bytes
A program that takes input of an integer and prints the result.
Test suite
How it works
la source
Haskell, 62 bytes
Defines a function
f
. See it pass all test cases.la source
Perl 6, 33 bytes
Expanded:
la source
Mathematica, 75 bytes
This uses pattern matching on the list of digits to extract all partitions of them into two parts. Each such partition into
a
andb
is then replaced withThe notable thing here is that sums of lists of unequal length remain unevaluated, so e.g. if
a
is1,2
andb
is3,4,5
then we first replace this with{1,2} + {3,4,5} + {}
. The last term is there to ensure that it still remains unevaluated when we evenly split an even number of digits. Now theMap
operation in Mathematica is sufficiently generalised that it works with any kind of expression, not just lists. So if we mapFromDigits
over this sum, it will turn each of those lists back into a number. At that point, the expression is a sum of integers, which now gets evaluated. This saves a byte over the more conventional solutionTr[FromDigits/@{{a},{b}}]
which converts the two lists first and then sums up the result.la source
Actually,
1615 bytesGolfing suggestions welcome! Try it online!
Edit: -1 byte thanks to Teal pelican.
Ungolfing
la source
╤╜d+╜%
MΣ)Ruby, 64 bytes
Takes the input as a string
la source
0
as octal, meaning this fails for the last test case. Here's a 78-byte solution addressing that.Befunge,
10196 bytesTry it online!
Explanation
la source
APL, 29 bytes
⎕IO
must be1
. Explanation (I'm not good at explaining, any imporvements to this are very welcome):la source
C#, 67 bytes
Full program with ungolfed, explained method and test cases:
la source
Attache, 48 bytes
Try it online!
Explanation
la source
Clojure,
9181 bytesEdit: this is shorter as it declares an anonymous function
(fn[v](->> ...))
and not using->>
macro although it was easier to read and call that way.Original:
Generates a sequence of 1, 10, 100, ... and takes first 10 items (assuming input values are less than 10^11), maps to modulos as specified in specs and calculates the sum. Long function names makes this solution quite long but at least even the golfed version should be quite easy to follow.
First I tried juggling strings around but it required tons of boilerplate.
la source
Racket 134 bytes
Ungolfed:
Testing:
Output:
la source
R, 50 bytes
Try it online!
la source
SNOBOL4 (CSNOBOL4), 92 bytes
Try it online!
la source
Ruby 45 Bytes
This is a really neat solution. It is technically correct, but it is super inefficient. It would be much more efficient to write q.to_s.size.times{...}. We use q.times because it saves characters, and the extra number of times it goes through the proc the expression just evaluates to zero.
la source
->q{(0..q).reduce{|s,x|p=10**x;s+q%(q/p+q%p)}}
PHP, 60 bytes
Try it online!
la source
Java 8,
12766 bytes-61 bytes by creating a port of @adrianmp's C# answer.
Try it here.
la source
Pari/GP, 42 bytes
Try it online!
la source
Japt,
1110 bytesTry it
Explanation
la source