Desafio:
Verifique se o número fornecido forma number staircase
ou não
Entrada :
Um número inteiro (maior que 0 e não decimal). NOTA: Você pode receber a entrada como sequência, matriz de dígitos.
Resultado :
um valor de verdade / falsidade, dependendo se o número forma uma escada ou não
Escada numérica:
Uma escada numérica é um número inteiro que, quando lido da esquerda para a direita:
- Começa com 1
- que pode ser seguido por 2
- que pode ser seguido por 3
- e assim por diante até
n
- então o número desce começando em n - 1
- então n - 2
- então n - 3
- e assim por diante até atingir 1
Nota :
A parte pode ser usada para indicar que, se length> for maior que 1. Se for, a ordem deverá ser seguida como está. ou seja: 12321
Exemplo:
12321 ---> true
12345654321 ---> true
9 ---> false
1 ---> true
2 ---> false
123421 ---> false
112312318901323 ---> false
123456789101110987654321 ---> true
Nota :
A entrada fornecida sempre será um número inteiro maior que 0 e não será um decimal. Sua saída deve ser um truthy or falsy
valor, dependendo da entrada
Restrições:
Este é o código-golfe, pelo que o código mais curto em bytes (para cada linguagem de programação) vence.
code-golf
math
number
decision-problem
Muhammad Salman
fonte
fonte
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,0,9,8,7,6,5,4,3,2,1]
de123456789101110987654321
?Respostas:
R , 97 bytes
Experimente online!
Toma
n
como umcharacter
ou uminteger
; O usocharacter
fornecerá resultados corretos para números inteiros que não podem ser mantidos com precisão como 64 bitsdouble
.Gera números de escadas até encontrar um pelo menos enquanto
n
é, depois testa a igualdade.Equivalente a:
fonte
function(n)
comn=scan();
ser mais curto? (para números inteiros, é claro)Gelatina , 5 bytes
Experimente online!
Aviso: muito lento (rápido para
1
e121
)! Anexe antesDL
para torná-lo mais rápido.fonte
JavaScript (ES6),
6257 bytesGuardado 2 bytes graças a @ l4m2
Retorna um booleano.
Experimente online!
Quão?
Começando com k = 1 , procuramos k no início e no final da sequência e iteramos recursivamente o processo na sub-sequência do meio restante com k + 1 . A recursão pára assim que não há mais correspondência. A entrada é um número de escada se a última sub-corda for igual a k .
Exemplo para s = "1234321":
fonte
m[0]==s&
faria com que passasse em todos os casos de teste (mas ainda falharia em outros como"123217"
).f=(s,k=1)=>(m=s.match(`^${k}(.*)${k}$`))?f(m[1],k+1):s==k
?Haskell ,
5554 bytes-1 byte graças a Laikoni !
Experimente online!
fonte
Pitão,
1312 bytesGuardou um byte graças a RK.
Experimente aqui
Explicação
Se você realmente deseja a entrada como um número inteiro, pode usar
}Qmsjk+Sd_Std
, mas isso é terrivelmente lento.fonte
/
vez de concluir}Q
automaticamenteQ
no finalPython 2 , 69 bytes
Experimente online!
fonte
C # (Compilador interativo do Visual C #) ,
138107102 bytesExperimente online!
Explicação:
fonte
Zip...Skip
método no meu comentário anterior falha[1,1]
, o que deve retornartrue
se eu entender as especificações. Eu o apaguei.05AB1E ,
98 bytesAviso: EXTREMAMENTE LENTO! Adicione
g
ao início para acelerar.Experimente online!
Explicação:
Explicação antiga:
Experimente online!
fonte
gLη€ûJså
é outro, onde você pode ver a vetorização da palindromização usando€û
cada palindromização.gLη€ûJså
por um byte de 8 bytes que não explode o TIO.Python 2 , 77 bytes
Experimente online!
fonte
Stax , 14 bytes
Execute e depure
Muito lento para números maiores.
fonte
Anexo ,
575546 bytesExperimente online! Ah, isso é muito mais elegante.
Com
Generate
(49 bytes):Explicação
A função de geração simplesmente cria o
N
número da escada. Então, essa pesquisa termina assim que`>=:`#&_
for satisfeita. Expandido, é o seguinte:Portanto, isso termina quando o comprimento da saída da função de geração é pelo menos o das entradas. Assim, isso gera o menor número de escada pelo menos enquanto o número de entrada. Portanto, se a entrada for um número de escada, o resultado será o mesmo número de escada e, caso contrário, o próximo número de escada mais longo. Assim, uma verificação simples com igualdade da entrada original é suficiente para determinar se era ou não um número de escada.
Anexo, 55 bytes
Experimente online! Com plano de recursão.
fonte
J , 40 bytes
Experimente online!
Eu não estou muito feliz com este soldado - muito
@
e boxe<
.fonte
SNOBOL4 (CSNOBOL4) , 109 bytes
Experimente online!
Curiosamente, substituir
'1'
na segunda linha por1
faz com que o programa falhe na entrada de1
.fonte
K , 36 bytes
Leva uma string como "12321" como parâmetro.
Essa função é escrita como uma longa cadeia de aplicativos funcionais, como em
f g h x
, portanto, leia as versões comentadas de baixo para cima.{x+1}
élambda x: x+1
, x é um nome de parâmetro padrão. Consulte https://pastebin.com/cRwXJn7Z ou a ajuda do intérprete para obter os significados dos operadores.Geramos o número da escada com
n
no meio{,/$(1+!x),1+1_|!x}
:Toda a função
{|/($x)~/:{,/$(1+!x),1+1_|!x}'1+!#x}
:fonte
Haskell ,
646058 bytes-6 graças a @BMO!
Experimente online!
fonte
12345678910987654321
, se você for capaz de construir uma lista com tantos elementos.Perl 5
-lp
, 49 bytesExperimente online!
0
= verdade, qualquer outra coisa = falsyfonte
Java 10, 142 bytes
Experimente online.
Explicação:
fonte
Japonês, 11 bytes
Recebe a entrada como uma sequência.
Tente
Explicação
Alternativa,
109 bytesEssa solução, que pode receber a entrada como uma string ou um número inteiro, retornará uma matriz de números para a verdade ou, eventualmente, lançará um erro para o falsey, se não danificar seu navegador antes disso. Use com cuidado.
Tente
fonte
Retina ,
4543 bytesExperimente online! O link inclui casos de teste. Editar: salvou 2 bytes graças ao @Leo. Explicação:
Inicialize
n
para1
.Enquanto
s
começa e termina comn
:Excluir
n
das extremidadess
e incrementarn
.Teste se
n
resta.fonte
\d
s podem tornar-se.
e poupar dois bytesRegex (PCRE) , 92 bytes
Experimente online!
Estou aberto a sugestões para melhorar isso.
fonte
Graças aos seguintes usuários:
Python 2 , 147 bytes
Experimente online!
fonte
true
efalse
sim os valores de verdade e falsey.1
e0
iria funcionar por exemplos[0]
vez destartswith
? Erros são permitidos e você pode dizer 'saídas 1 para escada, qualquer outra coisa (incluindo nada) [desde que stderrr é ignorado] para não escada'.g
não é 1. Você provavelmente deve testar estas soluções antes de publicá-las ...