Um número agradável (de acordo com esta definição) é um número que pode ser passado pelo processo a seguir (vamos usar 41802000
como exemplo):
- Separe os números idênticos à direita (
41802000 => [41802, 000]
) - Classifique a primeira metade dos dígitos e leve o máximo (
[41802, 000] => [8, 000]
) - Pegue o comprimento do elemento final. Chame os elementos resultantes A e B (
[8, 000] => A=8, B=3
) - N B = A para qualquer número inteiro
N
? (True
neste exemplo; 2 3 = 8)
Se a entrada resultar True
do processo a seguir, ela será considerada agradável.
Sua tarefa é pegar um número inteiro x
e produzir se x
é um número agradável. Você pode gerar dois valores distintos para truthy e falsey, mas indique o que está usando em sua resposta. x
é garantido que tenha pelo menos dois dígitos distintos (por exemplo, 111
é uma entrada inválida). Como na maioria dos desafios, você pode usar x
uma string ou uma lista de dígitos.
Este é um código-golf, pelo que o código mais curto em bytes vence.
Casos de teste
Input Output
41802000 1
100 1
123456788 0
451111111 0
234543454545444 0
12 1
41902000 0
92599 1
code-golf
math
decision-problem
caird coinheringaahing
fonte
fonte
list of digits
- seria uma lista dos caracteres numéricos ASCII ou uma lista de números inteiros de 0 a 9Respostas:
APL (Dyalog) , 36 bytes
Experimente online!
Quão?
Quase um poema.
⌽⍵
- reverta a entrada uma vez,1,2=/
- obtenha a lista de diferenças.⌊\
- mantenha apenas o primeiro grupo de pessoas,⌽
- e vire para completar.o←
- atribuir ao
,~o
- trocar uns e zero (s),⍵/⍨
- filtrar a entrada com ele,⍎¨
- transforme o resultado na lista de cada dígito,⌈/
- e obtenha o máximo. (aquilo é um)⍵/⍨o
- filtrar a entrada como
unalt (ered),≢
- e levar o comprimento, isso seria B.÷
- divida uma por esse resultado,*
- e leve A a esse poder.⊢≡⌊
- inteiro?fonte
05AB1E , 11 bytes
Experimente online!
Explicação
Emigna salvou 1 byte.
Baseia-se no fato de que, se A é um número inteiro positivo N elevado à potência de B , então N = A 1 / B , portanto, ele deve ser um número inteiro.
fonte
UZX
deve funcionar em vez des{θs
41902000
(deve ser falso).418802000
Haskell ,
85757271 bytesEdite : -10 bytes, tomando uma lista de dígitos em vez de uma string. Obrigado ao WhatToDo por apontar que isso é permitido. -3 bytes graças à solução Ourous no Clean . -1 byte graças a user28667 .
Experimente online! Recebe a entrada como uma lista de dígitos. Exemplo de uso:
f [4,1,8,0,2,0,0,0]
rendimentosTrue
.Explicação:
Dada uma entrada
s=[4,1,8,0,2,0,0,0]
, nósreverse
da lista e separar os elementos que conduzem comspan(==last s)
:([0,0,0],[2,0,8,1,4])
. O padrão correspondente nos(b,a)
rendimentosb=[0,0,0]
ea=[2,0,8,1,4]
.As lista de compreensão
or[n^length b==maximum a|n<-[1..a]]
verifica se qualquer inteiron
no intervalo entre1
a9
satisfazn^length b==maximum a
, isto én^3=8
.fonte
a
falharia em casos como esse477
.b
, mas verifique todos os números inteirosn
de0
até9
(anteriormente de0
atéa
). Essa é exatamente a especificação, tanto quanto eu vejo.Haskell ,
10489 bytesA @Laikoni encontrou uma solução mais curta , mas é o melhor que posso fazer. Obrigado @Laikoni por me informar que também podemos aceitar listas de dígitos como entrada.
Explicação:
Experimente online!
fonte
any(==a)
quando você poderia usarelem a
?2888
?head.maximum
ainda é menor quemaximum.concat
2 bytes e mantém a funcionalidade.R , 80 bytes
Experimente online!
Usa
utf8ToInt - 48
para dividir o número em dígitos. Isso lança um aviso da conversão em uma string.Usando rle, obtenha a contagem dos dígitos finais e o valor máximo dos primeiros dígitos. Retorne true se qualquer um dos valores de 0 a max no poder da contagem à direita for igual a max value.
Penso que existem mais oportunidades de golfe, mas isso pode esperar até amanhã.
fonte
function(x,R=rle(rev(utf8ToInt(x)-48)))!max(R$v[-1])^(1/R$l[1])%%1
(66 bytes, tendox
como uma string)Gelatina , 11 bytes
Recebe a entrada como uma lista de dígitos.
Experimente online!
Como funciona
fonte
R, 66 bytes
Esta resposta é mais ou menos uma mistura das respostas de MickyT e NofP e, a pedido delas, aqui está:
Leva x como uma string.
fonte
JavaScript (ES7), 66 bytes
Recebe a entrada como uma sequência ou uma matriz de caracteres. Retorna um booleano.
Casos de teste
Mostrar snippet de código
fonte
Limpo ,
13012811893 bytesDefine a função
@
, obtendo uma lista de dígitos inteiros.Experimente online!
fonte
Python 2 ,
9578 bytesExperimente online!
fonte
i
pode diminuir olen
alcance de 78 bytes #R , 93 bytes
Experimente online!
O código usa um número inteiro como entrada e retorna FALSE se o número for agradável e TRUE caso contrário.
fonte
Python 3 ,
8885 bytesUngolfed:
True
ouFalse
.a ** (1 / b)
seja desligado em pelo menos 0,5 de b √a, que requer um valor acima de 2 53 (ou qualquer radix e mantissa de ponto flutuante passa a usar Python, vejasys.float_info
).fonte
int
erange
. (Em algum momento ele se tornaria mais viável para estimar o ont baseada intervalo de pesquisaa^(1/b)
do que para calcular grandes quantidades de poderes.)C (gcc) ,
144126117 bytesExperimente online!
fonte
Ruby , 64 bytes
Entrada como uma string, retorna true se:
Experimente online!
fonte
Perl 6 , 55 bytes
Experimente online!
Após a avaliação do regex inicial - que só pode ser bem-sucedido se a entrada for um número inteiro positivo -
$0
contém a parte inicial do número e$1
os dígitos repetidos à direita.O
comb
método sem argumentos, aplicado a uma seqüência de caracteres, retorna uma lista de caracteres que, em contexto numérico, é avaliada pelo comprimento da lista. Então,$0.comb.max
é o maior dos dígitos do prefixo e$1.comb
o comprimento do sufixo.Depois, verificamos se
any(^10)
(ou seja, a junção ou dos números de 0 a 9), quando aumentada para a potência do comprimento do sufixo, é igual ao maior dígito do prefixo. Aso
avaliação booleana da força da junção resultante, que de outra forma seria adequada por si só como um valor verdadeiro, mas o desafio exige que apenas dois valores distintos sejam retornados.fonte
.
vez de\d
.Kotlin , 106 bytes
Saída: verdadeiro / falso
Experimente online!
fonte
Adicionar ++ , 21 bytes
Experimente online!
Faz 3 meses e meio, espero não estar ninando ninguém.
fonte
C # (.NET Core) , 132 bytes
Experimente online!
Agradecimentos
-12 bytes graças a @KevinCruijssen
DeGolfed
fonte
i=n.Length-2;for(;i>=0;i--)
pode ser jogadoi=n.Length-1;for(;i-->0;)
e&&
jogado&
.using System;
e usandoSystem.Math.Pow
diretamente.-48
golfe pode ser alterado para -3 bytes.Japonês ,
2618 bytesExperimente online!
Pega a entrada como uma string e retorna
1
para números agradáveis,0
caso contrário.Breve explicação:
Pegue a primeira entrada e divida-a por valores onde
(x,y) => x===y
for verdadeira. Por exemplo'41802000'
para['4','1','8','0','2','000']
.Tome a matriz da primeira etapa, remover o último elemento e obter seu comprimento, produzindo B .
Encontre o maior elemento da matriz restante, produzindo A , leve-o à potência
1/B
e retorne se o resultado for divisível por um.Primeira vez que trabalhei com o Japt, muito aberto a quaisquer recomendações. Raspou
8 bytes graças a ETHproductions .
fonte
ó¶
. 2) Não sei por que você tem av
segunda linha, pois apenas converte a string para minúscula e não afeta o comprimento ;-) 3) Você pode evitar!(U
a última linha alterando%1
parav1
, que retorna1
se o assunto é divisível por 1 ou0
não.Clojure, 168 bytes
Experimente online!
fonte
Carvão , 33 bytes
Experimente online! Link é a versão detalhada do código. Emite a
-
para números agradáveis. Explicação:Divida a entrada
q
em caracteres.Remova o último caractere de
q
e empurre-o parau
(predefinido para uma lista vazia).Estale e empurre repetidamente enquanto o último caractere de
q
é o primeiro caractere deu
.Pegue o dígito máximo de
q
e aumente à potência do inverso do comprimento deu
, depois verifique se o resultado é um número inteiro.fonte
Python 2 ,
9185 bytesExperimente online!
fonte
Perl 5 , 73 + 1 (
-p
) = 74 bytesExperimente online!
fonte
Java 8, 125 bytes
Porta da resposta C # .NET de @ Ayb4btu .
Experimente online.
Explicação:
fonte
Pip ,
322221 bytesUsa
1
para falsey e0
para verdade , economizando um byte. Experimente online!fonte
Pitão, 29 bytes
Suíte de teste
Tradução Python 3:fonte