inspirado por esta conversa de bate-papo
Um número satisfatório é um número cuja representação decimal é da forma abx
, com as seguintes propriedades:
x
é o sufixo de repetição mais longo, ou o último dígito, se não houver repetição no final (123333
->3333
,545656
->5656
,123
->3
)b
é o dígito anterior ax
(123333
->2
,55545656
->4
)a
é o prefixo restante (123333
->1
,55545656
->555
)a == c**b
(**
denota exponenciação), ondec
é o número de repetições da menor porção repetida dex
(1623333
->4
(3 3 3 3
, não33 33
))
Por exemplo, 8300
é um número que satisfaçam com a = 8
, b = 3
, c = 2
, e x = 00
. 24651
não é um número que satisfaça, porque x = 1
, b = 5
, a = 246
, e não há nenhum número inteiro c
que satisfaz c^5 = 246
. 1222
também não é um número satisfatório, porque com x = 222
e b = 1
não há dígitos restantes para a
.
Dado um número inteiro positivo n >= 100
, produza se é ou não n
um número satisfatório.
Exemplos
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)
8333
éx,c,b,a=33,2,3,8
e, portanto, satisfatório?x
é ganancioso.Respostas:
Geléia , 26 bytes
parece muito longo
Um link monádico que pega um número inteiro e retorna
1
se a entrada é satisfatória e0
se não.Experimente online! ou veja uma suíte de testes
Como?
fonte
Python 3 , 141 bytes
Experimente online!
Python 3 , 144 bytes
Experimente online!
saída é via código de saída
fonte
while
condição para salvar um byte: TIOPerl 6 , 66 bytes
Experimente online!
fonte
Python 3 , 101 bytes
Python 3 , 107 bytes
A saída é por código de saída.
Este código não é executado corretamente no Tio devido a um erro de intervalo. Funciona perfeitamente em Ocioso.
fonte
JavaScript (ES6),
282268 bytesfonte
Python 2, 286 bytes
yeesh.
N
é uma função recursiva que encontra o número de vezes que uma substring de sufixo é repetida em uma sequência. Isso basicamente percorre todos os sufixos possíveis, encontrando o número de vezes que cada um é repetido usandoN
; isso exclui todos os valores onde,N==1
porque eles se referem a não repetições; se a lista acabar vazia, o sufixo do último caractere será anexado à lista.Em seguida, o sufixo mais longo é obtido, (
q
), o número de caracteres que ele ocupa é encontrado (i
) ea==c**b
verificado (print ...
).Se ocorrer um erro ao longo do caminho (o que geralmente ocorre), ele será capturado no
except
bloco.Todas as sugestões são bem-vindas!
fonte