Descripción
Consideramos un número entero con al menos 3 dígitos con triple equilibrio si, cuando se divide en tres partes, los dígitos en cada parte suman el mismo número. Dividimos los números de la siguiente manera:
abcdefghi - Standard case: the number of digits is divisable through 3:
abc def ghi
abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit
abc de fgh (the inner group will have one digit less than both outer groups)
abcdefghij - Number % 3 == 1: The inner group is assigned the extra digit
abc defg hij (the inner group will have one digit more than the outer groups)
Desafío
Su tarea es escribir un programa que, dado un número entero con al menos 3 dígitos, determine si el número dado es triplemente balanceado y genera un valor verdadero o falso basado en su resultado.
Casos de prueba
333 -> True
343 -> False
3123 -> True
34725 -> True
456456 -> False
123222321 -> True
Este es el código de golf , por lo que se aplican las lagunas estándar y ¡puede ganar la respuesta más corta en bytes!
code-golf
number
arithmetic
decision-problem
racer290
fuente
fuente
when split in three parts,
Respuestas:
Python 2 ,
938886 bytes-4 bytes gracias a @LeakyNun
-2 bytes gracias a @ Mr.Xcoder
Pruébalo en línea!
fuente
Jalea , 23 bytes
Pruébalo en línea!
Debe haber un camino más corto que de alguna manera voló sobre mi cabeza ...
fuente
Retina , 89 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Explicación: La primera etapa agrega nuevas líneas al comienzo y al final de la entrada. Luego, la segunda etapa intenta mover los dígitos a través de las nuevas líneas en pares, sin embargo, si no quedan suficientes dígitos en el medio, la tercera etapa puede moverlos hacia atrás, haciendo que el ciclo se detenga. Luego, la cuarta etapa convierte cada dígito por separado en unario, sumando así, mientras que la última etapa simplemente verifica que las sumas sean iguales.
fuente
Mathematica, 142 bytes
fuente
Jalea , 20 bytes
Pruébalo en línea!
Cómo funciona
fuente
MATL , 26 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
fuente
Javascript, 178 bytes
fuente
([...b],s=~b.length/3|0,f=(m,v)=>+m+ +v,y=b.splice(s).reduce(f))=>b.splice(-s).reduce(f)==y&y==b.reduce(f)
(tenga cuidado al copiar de los comentarios ya que Stack Exchange inserta caracteres invisibles).Java 8, 149 bytes
Toma la entrada como un
int[]
.Explicación:
Pruébalo aquí.
Aquí hay una descripción general de las partes indexadas 0 (exclusivas) para cada longitud:
a
bucle de0
a(length + 1) / 3)
(este valor ahora se almacena ens
);b
bucle des
alength / 3 * 2 +
(0
si la longitud del módulo-3 es 0;1
si la longitud del módulo-3 es 1 o 2) (este valor ahora se almacena ens
);c
bucle des
alength
.(los tres bucles son exclusivos indexados a 0)
fuente
Röda , 82 bytes
Pruébalo en línea!
Explicación:
fuente
JavaScript,
129, 104 bytesLa función r corta la cadena en función de los parámetros bye, y luego suma los dígitos y devuelve el valor.
Para cortar en los tamaños correctos, dividimos la longitud por 3 y redondeamos el resultado. Llamar a slice (0, resultado) nos da el primer bloque, slice (resultado, -resultado) nos da el segundo, y slice (resultado) nos da el último. Debido a la forma en que llamo rebanada, utilicé rebanada (resultado, resultado 4 *) en lugar de la última pero da el mismo resultado.
Finalmente, comparo los resultados muestran que los valores son iguales.
Editar: mismo principio, mejor golf
fuente
&&
a&
JavaScript? Las comprobaciones de segunda mano (&&z
y&&y[1]==y[2]
) no parecen modificar los valores, por lo que si es posible, no debería afectar el resultado de lo que puedo ver.