inspirado en esta conversación de chat
Un número satisfactorio es un número cuya representación decimal es de la formaabx , con las siguientes propiedades:
xes el sufijo de repetición final más largo, o el último dígito si no hay repetición al final (123333->3333,545656->5656,123->3)bes el único dígito anterior ax(123333->2,55545656->4)aes el prefijo restante (123333->1,55545656->555)a == c**b(**denota exponenciación), dondeces el número de repeticiones de la porción repetitiva más pequeña dex(1623333->4(3 3 3 3, not33 33))
Por ejemplo, 8300es un número que satisface con a = 8, b = 3, c = 2, y x = 00. 24651no es un número que satisface, porque x = 1, b = 5, a = 246, y no hay ningún número entero cque satisface c^5 = 246. 1222tampoco es un número satisfactorio, porque con x = 222y b = 1, no quedan dígitos restantes a.
Dado un número entero positivo n >= 100, la salida es o no nun número satisfactorio.
Ejemplos
8300: True (a=8, b=3, c=2, x=00)
24651: False
1222: False
92555: True (a=9, b=2, c=3, x=555)
64633: True (a=64, b=6, c=2, x=33)
512944: True (a=512, b=9, c=2, x=44)
123: True (a=1, b=2, c=1, x=3)
822809: False
376664: False
723799: False
1234: False
34330000000: True (a=343, b=3, c=7, x=0000000)
92313131: True (a=9, b=2, c=3, x=313131)
16424442444: True (a=16, b=4, c=2, x=24442444)

8333esx,c,b,a=33,2,3,8y por lo tanto satisfactorio?xes codicioso.Respuestas:
Jalea , 26 bytes
se siente demasiado tiempo
Un enlace monádico que toma un número entero y regresa
1si la entrada es satisfactoria y0si no.Pruébalo en línea! o ver un conjunto de pruebas
¿Cómo?
fuente
Python 3 , 141 bytes
Pruébalo en línea!
Python 3 , 144 bytes
Pruébalo en línea!
la salida es a través del código de salida
fuente
whilecondición para guardar un byte: TIOPerl 6 , 66 bytes
Pruébalo en línea!
fuente
Python 3 , 101 bytes
Python 3 , 107 bytes
La salida es por código de salida.
Este código no se ejecuta correctamente en Tio debido a un error de rango. Funciona perfectamente en IDLE.
fuente
JavaScript (ES6),
282268 bytesfuente
Python 2, 286 bytes
yeesh
Nes una función recursiva que encuentra el número de veces que se repite una subcadena de sufijo en una cadena. Esto básicamente recorre todos los sufijos posibles, encontrando el número de veces que cada uno se repite usandoN; esto excluye todos los valores dondeN==1porque no se refieren a repeticiones; Si la lista termina vacía, el sufijo del último carácter se agrega a la lista.Luego, se toma el sufijo más largo, (
q), se encuentra el número de caracteres que ocupa (i) ya==c**bse marca (print ...).Si se produce un error en el camino (lo que suele ocurrir), queda atrapado en el
exceptbloque.Cualquier sugerencia es más que bienvenida!
fuente