Dado un entero n > 9
, para cada posible inserción entre dígitos en ese entero, inserte una suma +
y evalúe. Luego, tome el número original módulo esos resultados. Salida de la suma total de estas operaciones.
Un ejemplo con n = 47852
:
47852 % (4785+2) = 4769
47852 % (478+52) = 152
47852 % (47+852) = 205
47852 % (4+7852) = 716
-----
5842
Entrada
Un número entero positivo solo en cualquier formato conveniente , n > 9
.
Salida
La salida de entero único siguiendo la técnica de construcción anterior.
Reglas
- No necesita preocuparse por una entrada mayor que el tipo predeterminado de su idioma.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
47852 -> 5842
13 -> 1
111 -> 6
12345 -> 2097
54321 -> 8331
3729105472 -> 505598476
code-golf
math
number-theory
AdmBorkBork
fuente
fuente
D.s¨s.p¨R+¹s%O
sin ver esto; PJavaScript,
4347 bytesToma la entrada como cadena.
Editar:
+4 bytes : los ceros a la izquierda en JavaScript convierten el número a octal):
fuente
(+'$&$''+$`)
?$`
está vacía, y arrojará un error al intentar evaluar(13+)
(como ejemplo).Brachylog , 20 bytes
Pruébalo en línea!
Explicación
Esto implementa la fórmula dada. De lo único que debemos tener cuidado es cuando a
0
está en el medio de la entrada: en ese caso, Brachylog se vuelve bastante peculiar, por ejemplo, no aceptará que una lista de enteros que comienzan con a0
se pueda concatenar en un entero ( lo que requeriría ignorar el inicio0
, esto se programa principalmente de esa manera para evitar bucles infinitos). Por lo tanto, para evitar ese problema, convertimos la entrada en una cadena y luego convertimos todas las entradas divididas en enteros.fuente
ES6 (Javascript),
42, 40 bytesEDICIONES:
Golfed
Prueba
fuente
m<2**31
entonces, puede comenzar con elx=1
ahorro de un byte.Python 2, 45 bytes
Utiliza aritmética en lugar de cadenas para dividir la entrada
n
en partesn/c
yn%c
, quec
recurre a través de potencias de 10.fuente
Jalea , 12 bytes
TryItOnline!
¿Cómo?
fuente
Perl
35 3227 BytesIncluye +3 para
-p
Guardado 8 bytes gracias a Dada
fuente
C 77 + 4 = 81 bytes
golf
Sin golf
fuente
r=0
tal manera que si se llama nuevamente a la función, el resultado sea correcto. Está en algún lugar de Meta, si usa variables globales, entonces tiene que lidiar con los efectos secundarios de llamar a una función más de una vez.r
global pero dentro de la función como una declaración que puede decirr=0;
, vea mi respuesta, por ejemplo.Python 2,
686468 bytes-4 bytes gracias al atlasólogo
* La entrada es una cadena
fuente
lambda n:sum(int(n)%eval(n[:i]+'+'+n[i:])for i in range(len(n)))
8
o9
después y da respuestas incorrectas para otros (como el último caso de prueba). Los números que comienzan con un cero son octales. repl.it/EmMmC, 59 bytes
t
es10,100,1000,...
y representa el corte en el gran número.n/t
es la parte derecha yn%t
la parte izquierda. Sit
es mayor que el número, está terminado.Sin golf y uso:
fuente
Retina , 38 bytes
El recuento de bytes asume la codificación ISO 8859-1.
No exactamente eficiente ...
Pruébalo en línea! (La primera línea habilita un conjunto de pruebas separado por salto de línea).
Explicación
Entre cada par de caracteres, insertamos una coma, todo delante del partido, un punto y coma, toda la entrada, un salto de línea y todo después del partido. Para la entrada
12345
esto nos da:Es decir, cada posible división de la entrada junto con un par de la entrada. Sin embargo, no necesitamos esa última línea:
Lo descartamos.
Esto reemplaza cada número, así como la coma, con su representación unaria. Como la coma no es un número, se trata como cero y simplemente se elimina. Esto agrega las dos partes en cada división.
Esto calcula el módulo eliminando todas las copias del primer número del segundo número.
Eso es todo, simplemente contamos cuántos
1
s quedan en la cadena e imprimimos eso como resultado.fuente
Pyth, 14 bytes
Un programa que toma la entrada de un número entero e imprime el resultado.
Banco de pruebas
Cómo funciona
fuente
Haskell, 62 bytes
Define una función
f
. Véalo pasar todos los casos de prueba.fuente
Perl 6 , 33 bytes
Expandido:
fuente
Mathematica, 75 bytes
Esto utiliza la coincidencia de patrones en la lista de dígitos para extraer todas sus particiones en dos partes. Cada una de estas particiones
a
yb
luego se reemplaza conLo notable aquí es que las sumas de listas de longitud desigual permanecen sin evaluar, por lo que, por ejemplo, si
a
es1,2
yb
es3,4,5
, primero reemplazamos esto con{1,2} + {3,4,5} + {}
. El último término está ahí para garantizar que aún no se haya evaluado cuando dividimos equitativamente un número par de dígitos. Ahora laMap
operación en Mathematica está suficientemente generalizada para que funcione con cualquier tipo de expresión, no solo con listas. Entonces, si asignamosFromDigits
esta suma, convertirá cada una de esas listas en un número. En ese punto, la expresión es una suma de enteros, que ahora se evalúa. Esto ahorra un byte sobre la solución más convencionalTr[FromDigits/@{{a},{b}}]
que convierte las dos listas primero y luego resume el resultado.fuente
En realidad ,
1615 bytesSugerencias de golf bienvenidas! Pruébalo en línea!
Editar: -1 byte gracias a Teal pelican.
Ungolfing
fuente
╤╜d+╜%
MΣ)Ruby, 64 bytes
Toma la entrada como una cadena
fuente
0
octal, lo que significa que esto falla en el último caso de prueba. Aquí hay una solución de 78 bytes que aborda eso.Befunge,
10196 bytesPruébalo en línea!
Explicación
fuente
APL, 29 bytes
⎕IO
debe ser1
. Explicación (no soy bueno para explicar, cualquier mejora a esto es muy bienvenida):fuente
C #, 67 bytes
Programa completo con método explicado y sin fundamentos y casos de prueba:
fuente
Adjunto , 48 bytes
Pruébalo en línea!
Explicación
fuente
Clojure,
9181 bytesEditar: esto es más corto ya que declara una función anónima
(fn[v](->> ...))
y no usa->>
macro, aunque fue más fácil de leer y llamar de esa manera.Original:
Genera una secuencia de 1, 10, 100, ... y toma los primeros 10 elementos (suponiendo que los valores de entrada son menores que 10 ^ 11), se asigna a los módulos como se especifica en las especificaciones y calcula la suma. Los nombres largos de funciones hacen que esta solución sea bastante larga, pero al menos incluso la versión de golf debería ser bastante fácil de seguir.
Primero intenté hacer malabarismos con las cuerdas pero requería toneladas de repeticiones.
fuente
Raqueta 134 bytes
Sin golf:
Pruebas:
Salida:
fuente
R , 50 bytes
Pruébalo en línea!
fuente
SNOBOL4 (CSNOBOL4) , 92 bytes
Pruébalo en línea!
fuente
Ruby 45 Bytes
Esta es una solución realmente ordenada. Es técnicamente correcto, pero es super ineficiente. Sería mucho más eficiente escribir q.to_s.size.times {...}. Usamos q.times porque guarda caracteres, y la cantidad adicional de veces que pasa por el proceso la expresión solo se evalúa a cero.
fuente
->q{(0..q).reduce{|s,x|p=10**x;s+q%(q/p+q%p)}}
PHP , 60 bytes
Pruébalo en línea!
fuente
Java 8,
12766 bytes-61 bytes creando un puerto de respuesta C # @adrianmp .
Pruébalo aquí
fuente
Pari / GP , 42 bytes
Pruébalo en línea!
fuente
Japt ,
1110 bytesIntentalo
Explicación
fuente