Um número de colina é um número que tem o mesmo dígito no primeiro e no último , mas isso não é tudo. Em um número de colina, os primeiros dígitos estão aumentando estritamente e os últimos dígitos estão diminuindo estritamente. O dígito maior pode ser repetido .
Aqui está um exemplo de um número de colina:
12377731 | 1237... | ...731
^ same ^ | strictly increasing | strictly decreasing
---------+---------------------+---------------------
12377731
^^^ okay because largest digit can be repeated
Isto não é :
4588774 | ...8774
| ^^ not the largest digit
| so this has to be strictly decreasing
| but it's not, so not a hill number
Desafio
Dado um número inteiro positivo, escreva um programa completo ou uma função que retorne verdade para números de colinas, mas que seja falso em outros valores.
Notas:
- Entrada e saída podem estar em qualquer formato razoável .
- Este é o código-golfe, e a resposta mais curta em cada idioma vence!
Casos de teste
12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy
code-golf
decision-problem
number-theory
Indefinido
fonte
fonte
222222222
? É um número de colina plana?222222222
é um número colina, maior dígito é 2 e, portanto, pode ser repetido1230321
um número de colina?Respostas:
Geléia , 8 bytes
Experimente online!
Como funciona
fonte
JavaScript (ES6),
6254 bytesRecebe a entrada como uma sequência. Retorna um valor booleano.
Experimente online!
Comentado
JavaScript (ES6), 65 bytes
Experimente online!
Quão?
Exemplo:
Essa matriz é coagida a uma string, que fornece:
Aplicamos a seguinte expressão regular:
Por fim, também testamos se o último dígito
p
é igual ao primeiro dígitos[0]
.fonte
Pitão, 16 bytes
Experimente a suíte de testes .
fonte
Gelatina , 11 bytes
Explicação:
Experimente online!
fonte
Perl 6 , 39 bytes
Experimente online!
Explicação
fonte
Python 2 ,
114112 bytesExperimente online!
fonte
R , 65 bytes
Toma seqüências de caracteres. Tomou a idéia de verificar a invariância de classificação da resposta Pyth.
Experimente online!
fonte
05AB1E ,
19171312 bytes-5 bytes através da criação de uma porta de @lirtosiast resposta Pyth 's .
Experimente online ou verifique todos os casos de teste .
Explicação:
Â{RQ
Como alternativa, pode ser(Â{Q
para a mesma contagem de bytes, onde(
nega cada sinal: Experimente on-line .fonte
J, 23 bytes
Idéia roubada das respostas Jelly. Só queria ver o quão curto eu poderia fazer em J.
Experimente online!
fonte
MATL , 12 bytes
Experimente online!
Explicação
Entrada é uma sequência de dígitos. A saída é um
1
ou0
. O número222222
é um número de colina de acordo com este programa. Economizou 2 bytes copiando o método de Dennis para verificar a igualdade do primeiro e do último dígito.fonte
Python 2 , 53 bytes
Recebe a entrada como uma sequência. A saída é via presença ou ausência de uma exceção .
Experimente online!
Python 2 , 62 bytes
Pega a entrada como uma string e retorna um booleano.
Experimente online!
fonte
Linguagem Mathematica / Wolfram,
6964 bytesFunção pura. Recebe a entrada como um número inteiro, retorna
True
ouFalse
.Explicação:
A primeira cláusula verifica a "colina":
IntegerDigits
: Obtém dígitos do número inteiro. Armazenar emy
.-Differences
: Faça sucessivas diferenças e vire sinais.Sign
: Substitua cada entrada por +1 se positivo, 0 se zero e -1 se negativo. Armazenar emx
.Sort
: Classifique a lista de +1, 0, -1 do menor para o maior. Compare com a lista original emx
.A segunda cláusula verifica se o primeiro e o último dígito são iguais.
Uma dica do chapéu para @IanMiller para obter dicas sobre como refinar esse código.
fonte
IntegerDigits
eDifferences
são nomes de função bastante longos é um pouco irritante.Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
Japonês, 11 bytes
Recebe a entrada como uma matriz de dígitos.
Experimente ou execute todos os casos de teste
fonte
Retina 0.8.2 , 52 bytes
Experimente online! O link inclui casos de teste. Explicação:
Converta cada dígito em unário duas vezes, separados por se
;
terminados por,
s. No entanto, você pode pensar no resultado como o primeiro dígito, a;
, todos os pares de dígitos adjacentes, os dígitos de cada par separados por,
e os pares separados por;
s, depois outro;
, o último dígito e o final,
.Subtraia os pares de dígitos adjacentes. Isso deixa
;,;
dígitos iguais1
es no lado maior para dígitos desiguais. (Isso pode ser feito como parte da seguinte expressão regular, mas obviamente isso não seria tão positivo.)Combine o primeiro dígito, depois qualquer número de pares de dígitos ascendentes, qualquer número de pares de dígitos iguais, qualquer número de pares de dígitos descendentes e, em seguida, combine o primeiro dígito novamente no final.
fonte
Vermelho , 181 bytes
Experimente online!
Mais legível:
fonte
Powershell, 77 bytes
Script de teste com menos golfe:
Resultado:
fonte
C # (compilador interativo do Visual C #) , 161 bytes
Experimente online!
Aqui está uma visão geral de como isso funciona ...
string
fonte
Python 3 , 114 bytes
Experimente online!
Muito mais tempo do que algumas soluções Python 2, mas esta é baseada em def e eu gosto.
fonte
Ruby , 47 bytes
Experimente online!
Entrada como matriz de dígitos, a saída é booleana.
fonte