Dada uma sequência de entrada S, retorne truthy
se todas as letras em S forem Lexically Ordered: seus valores ASCII precisam estar em ordem crescente ou decrescente. Retorno falsy
em outros casos.
Entrada
- A entrada será no mesmo caso (todas maiúsculas ou minúsculas). Seu envio deve ser capaz de lidar com ambos.
- A entrada consistirá em ASCII
[A-Za-z]
apenas no intervalo - O comprimento da entrada será de pelo menos 1, até o máximo que seu idioma suportar.
- A entrada é uma sequência - não uma lista de caracteres, nem uma matriz de pontos de código ASCII.
Resultado
- A saída deve ser
true
oufalse
, ou0/1
, ou qualquer outrotrue / false
estilo distinto que o seu idioma possa fornecer. - Todos os casos verdadeiros precisam ter a mesma saída, bem como todos os casos falsos. Não "Falso é 0, verdadeiro é 1, 2 ou 3".
Regras adicionais
- As brechas padrão são proibidas
- A resposta deve ser um programa ou uma função completa, não um trecho de texto ou uma entrada REPL.
- code-golf , a resposta mais curta em bytes vence.
Casos de teste
Truthy
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Falsy
"ABCDC"
"yes"
"deed"
Inválido
"Hello" --> invalid input - mixed case-, does not have to be handled
"" --> invalid input - length 0-, does not have to be handled
"\n
" --> invalid input - newline is not in range [A-Za-z]-, does not have to be handled
truthy
oufalsy
. Isso implica que qualquer valor que avalietrue
oufalse
seja permitido.Respostas:
05AB1E , 5 bytes
Experimente online!
Explicação
fonte
{¹å
para 4, excluí minha resposta. Não percebeu o uso de bifurcado, o meu era muito parecido.aba => ['aab', 'baa'] => is in? => 0
|aab => same => 1
Python 2 ,
53444039 bytesExperimente online!
fonte
Haskell , 33 bytes
Experimente online!
Agradecimentos a Ørjan Johansen por 1 byte com
scanl1
infixo de aliasing .Haskell é uma linguagem interessante para os desafios baseados na classificação de golfe, porque ela não tem uma classificação interna, exceto uma longa
import Data.List
. Isso incentiva a encontrar uma maneira de executar a tarefa manualmente, sem classificar explicitamente.O código usa
scanl1
, que dobra uma operação sobre a lista da esquerda para a direita, acompanhando os resultados intermediários. Portanto,scanl1 max
tem o efeito de listar os máximos cumulativos da lista, ou seja, os máximos de prefixos progressivamente mais longos. Por exemploscanl1 max [3,1,2,5,4] == [3,3,3,5,5]
,.O mesmo
min
ocorre com verificações se a lista está diminuindo. O código verifica os dois casos e os combina com||
.Compare com outras expressões:
fonte
||
vitórias se você definir(?)=scanl1
.Perl 6 , 25 bytes
Como funciona:
.comb
divide a entrada em uma sequência de caracteres.le
ege
são os operadores de comparação de cadeia "menor ou igual" e "maior ou igual" .[ ]
ao redor de um operador infix, reduz ("dobra") a lista de argumentos com esse operador. (É inteligente o suficiente retornar True se a entrada tiver apenas zero ou um caractere.)or
retorna True se as expressões de ambos os lados forem verdadeiras.fonte
JavaScript (ES6), 43 bytes
fonte
q
seria definido com esse valor..sort()
para implicitamente tipo nareverse
verificaçãoMATL , 7 bytes
Experimente online! Ou verifique todos os casos de teste .
fonte
Clojure, 47 bytes
fonte
<=
e>=
olhar infix porém, que é muito estranho.(let[+ *](+ 2 3))
=6
: D Ele funciona em qualquer função, mas, aparentemente, não em macros: "Não pode tomar valor de uma macro"C (gcc) , 70 bytes
Eu esperava encontrar uma solução mais curta com base em uma função recursiva, mas não funcionou devido ao requisito de saída. Então, aqui está uma abordagem imperativa. Pelo menos, a precedência do operador de C funciona bem para a instrução de loop interno.
Experimente online!
fonte
R, 48
5061bytesComo uma função sem nome
Obrigado a @guiseppe por alguns bytes extras.
charToRaw
levas
e se divide em um vetor bruto. Isso é convertido em números inteiros ediff
aplicado.sign
torna os diffs uma única unidade.range
reduz o vetor ao mínimo e ao máximo. Então, se o desvio padrãosd
for menor que 1, será TRUEExperimente online!
fonte
function(s,d=utf8ToInt(s))all(d==sort(d))
orfunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
eo último exigiria umcat()
para torná-lo um programa completofunction(s)all(!diff(order(utf8ToInt(s)),,2))
(trabalhos com o reverso tipo também!)tree
MATL, 8 bytes
Experimente Online!
Explicação
fonte
'\n'
e'Hello'
: /[A-Za-z]
conforme declarado no post inicial. Eles estão na seção "inválida" porque eles explicitamente não precisam ser manipulados.Gelatina ,
45 bytesExperimente online!
Originalmente tinha
Ṣm0w
quatro bytes.Explicação
fonte
ẇ
, acredito. Edit: ughṢm0ẇ@
.Ṣẇm0$
. Se a ordem dos argumentos não fosse diferente paraw
eẇ
...'\n'
e'Hello'
são valores perfeitamente válidos.Mathematica, 33 bytes
Com base nesta dica . Infelizmente, eu tenho que usar em
ToCharacterCode
vez deCharacters
, porque<=
e>=
não comparar as strings.fonte
PowerShell , 61 bytes
Experimente online!
Recebe entrada
$a
e verifica se é-in
uma matriz de dois elementos. A matriz é formada pegando$a
, moldando-a como umachar
matriz, armazenando-a$b
para mais tarde, canalizando-a parasort-object
que classifique lexicamente. O outro elemento é$b
classificado em-des
ordem pendente.fonte
Perl , 35 bytes
Economizou 4 bytes graças a @Xcali diretamente e 4 indiretamente.
31 bytes de código +
-pF
sinalizador.Experimente online!
O código classifica a entrada e verifica se as entradas correspondem a si mesmas classificadas (ou na ordem inversa).
fonte
$"=$,
e usar o/x
modificador para economizar mais 5 bytes.Geléia , 5 bytes
Experimente online!
Quão?
fonte
Bash + coreutils, 59 bytes
A sequência de entrada é passada como argumento.
A saída é retornada no código de saída (0 para verdade, 1 para falsidade, como de costume), conforme permitido pelos métodos de E / S do PPCG .
fonte
PHP, 66 bytes
recebe entrada do argumento da linha de comando. Corra com
-r
.fonte
Ruby , 44 bytes
Experimente online!
fonte
Raquete , 93 bytes
Experimente online!
Ungolfed:
Usando a classificação e compare com a abordagem original
fonte
Brachylog , 5 bytes
Eu tentei encontrar uma solução de 4 bytes sem sucesso, então, por enquanto, aqui está a solução mais interessante de 5 bytes que encontrei:
Experimente online!
o
, a função de pedido, pode usar um parâmetro:0
significa ordem crescente,1
significa ordem decrescente. Definimos esse parâmetro como uma variável não acopladaN
. O Brachylog tentará valores diferentes paraN
(somente0
ou1
são possíveis), tentará unificar o resultado com a entrada e retornará se alguma dessas tentativas foi bem-sucedida.fonte
o?|o₁?
trabalha para um byte extra thoo{|↔}?
.MATLAB / oitava, 38 bytes
Demonstração online
fonte
JavaScript (ES6)
7462504743 bytesDepois de jogar golfe e corrigir bugs, essa resposta acabou sendo praticamente a mesma da ETHProduction, portanto, verifique sua resposta e dê uma
+1
.fonte
+1
a resposta dele.Haskell,
5450 bytesExemplo de uso:
t "defggh"
->True
. Experimente online! .Talvez o uso de
sort
outras respostas seja mais curto, embora exijaimport Data.List
. Aqui está uma abordagem diferente:Para todas as funções
f
de[(=<<),(<*>)]
, calculeand(zipWith(<=)`f`tail$a)
e exija que qualquer um dos resultados sejaTrue
. As funções sãoque tanto realizar comparações de elementos vizinhos da lista de entrada
a
com<=
, mas um com os argumentos virado resultando em um>=
.and
verifica se todas as comparações sãoTrue
.fonte
Pushy , 7 bytes
Experimente online!
Explicação:
fonte
1
e2
estãoTrue
em Pushy, enquanto0
éFalse
.Pitão, 5 bytes
Um programa que recebe entrada de
"quoted string"
e imprimeTrue
ouFalse
conforme apropriado.Suíte de teste
Como funciona
fonte
}Q
por/
, que usa um implícitoQ
.Oitava, 24 bytes
Experimente Online!
fonte
GNU sed, 97 + 1 (sinalizador r) = 98 bytes
Se as letras forem ordenadas, o script retornará
1
, caso contrário0
. No sed, não há tipos de dados.Para verificar se todas as letras estão organizadas em ordem crescente, faço uma pesquisa de tabela de cada par de letras consecutivas em um alfabeto descendente, ou seja, tento encontrar um exemplo de contador. Observe que,
//
na verdade, repete a última correspondência de expressão regular! (ver linhas 2 e 3)Exemplo de execução: o script pode testar várias palavras de entrada, uma por linha
fonte
CJam ,
1211 bytesExperimente online!
Explicação
fonte
Código de máquina 8086,
686148464539 bytesMontado a partir de:
fonte
Scala, 47 bytes
fonte