Dada una cadena de entrada S, regrese truthy
si todas las letras en S están ordenadas léxicamente: sus valores ASCII deben estar en orden ascendente o descendente. Regreso falsy
en otros casos.
Entrada
- La entrada será en el mismo caso (todo en mayúsculas o minúsculas). Su presentación debe ser capaz de manejar ambos.
- La entrada consistirá en ASCII en el rango
[A-Za-z]
solamente - La longitud de entrada será al menos 1, hasta el máximo que admita su idioma.
- La entrada es una cadena, no una lista de caracteres, no una matriz de puntos de código ASCII.
Salida
- La salida debe ser
true
ofalse
, o0/1
, o cualquier otratrue / false
salida de estilo distinto que pueda proporcionar su idioma. - Todos los casos verdaderos deben tener la misma salida, así como todos los casos falsos. No "Falso es 0, verdadero es 1, 2 o 3".
Reglas adicionales
- Las lagunas estándar están prohibidas
- La respuesta debe ser un programa completo o una función, no un fragmento o una entrada REPL.
- code-golf , la respuesta más corta en bytes gana.
Casos de prueba
Verdad
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Falsa
"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
ofalsy
. Esto implica que cualquier valor que evalúetrue
ofalse
esté permitido.Respuestas:
05AB1E , 5 bytes
Pruébalo en línea!
Explicación
fuente
{¹å
para 4, borró mi respuesta. No noté el uso de bifurcado, el mío era demasiado similar.aba => ['aab', 'baa'] => is in? => 0
El |aab => same => 1
Python 2 ,
53444039 bytesPruébalo en línea!
fuente
Haskell , 33 bytes
Pruébalo en línea!
Gracias a Ørjan Johansen por 1 byte con
scanl1
infijo de alias .Haskell es un lenguaje interesante para los desafíos basados en la clasificación del golf porque no tiene un tipo incorporado, salvo mucho tiempo
import Data.List
. Esto alienta a encontrar una manera de hacer la tarea a mano sin ordenarla explícitamente.El código utiliza
scanl1
, que pliega una operación sobre la lista de izquierda a derecha, haciendo un seguimiento de los resultados intermedios. Entonces,scanl1 max
tiene el efecto de enumerar los máximos acumulativos de la lista, es decir, los máximos de prefijos progresivamente más largos. Por ejemplo,scanl1 max [3,1,2,5,4] == [3,3,3,5,5]
.Lo mismo con los
min
controles si la lista está disminuyendo. El código verifica los dos casos y los combina con||
.Compare con otras expresiones:
fuente
||
victorias si define(?)=scanl1
.Perl 6 , 25 bytes
Cómo funciona:
.comb
divide la entrada en una secuencia de caracteres.le
yge
son los operadores de comparación de cadenas "menor o igual" y "mayor o igual" .[ ]
alrededor de un operador infijo, reduce ("pliega") la lista de argumentos con ese operador. (Es lo suficientemente inteligente como para devolver True si la entrada tiene solo cero o un carácter).or
devuelve True si las expresiones a cada lado son verdaderas.fuente
JavaScript (ES6), 43 bytes
fuente
q
se establecería en ese valor..sort()
para ordenar implícitamente elreverse
chequeMATL , 7 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
fuente
Clojure, 47 bytes
fuente
<=
y se>=
vea infijo, lo cual es realmente extraño.(let[+ *](+ 2 3))
=6
: D Funciona en cualquier función pero aparentemente no en macros: "No se puede tomar el valor de una macro"C (gcc) , 70 bytes
Esperaba encontrar una solución más corta basada en una función recursiva, pero no funcionó debido al requisito de salida. Así que aquí hay un enfoque imperativo. Al menos, la precedencia del operador de C funciona bien para la declaración del bucle interno.
Pruébalo en línea!
fuente
R, 48
5061bytesComo una función sin nombre
Gracias a @guiseppe por algunos bytes adicionales.
charToRaw
tomas
y divide en un vector sin procesar. Esto se convierte en enteros y sediff
aplica.sign
hace que el diffs sea una sola unidad.range
reduce el vector a su mínimo y máximo. Entonces, si la desviación estándarsd
es menor que 1, es VERDADEROPruébalo en línea!
fuente
function(s,d=utf8ToInt(s))all(d==sort(d))
ofunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
y el último requeriría unacat()
para que sea un programa completofunction(s)all(!diff(order(utf8ToInt(s)),,2))
(¡también funciona con el orden inverso!)tree
MATL, 8 bytes
Pruébalo en línea!
Explicación
fuente
'\n'
y'Hello'
: /[A-Za-z]
como se indica en la publicación inicial. Están en la sección "no válida" porque explícitamente no necesitan ser manejados.Jalea ,
45 bytesPruébalo en línea!
Originalmente estaba
Ṣm0w
en cuatro bytes.Explicación
fuente
ẇ
embargo, cuatro bytes aún son posibles , creo. Editar: ughṢm0ẇ@
.Ṣẇm0$
. Si el orden de los argumentos no fuera diferente paraw
yẇ
...'\n'
y'Hello'
son valores perfectamente válidos.Mathematica, 33 bytes
Basado en este consejo . Desafortunadamente, tengo que usar en
ToCharacterCode
lugar deCharacters
, porque<=
y>=
no comparar cadenas.fuente
PowerShell , 61 bytes
Pruébalo en línea!
Toma entrada
$a
, luego verifica si se trata de-in
una matriz de dos elementos. El conjunto se forma tomando$a
,char
convirtiéndolo en una matriz, almacenando eso$b
para más tarde, canalizándolo a losort-object
que se ordena léxicamente. El otro elemento se$b
ordena en-des
orden descendente.fuente
Perl , 35 bytes
Guardado 4 bytes gracias a @Xcali directamente, y 4 más indirectamente.
31 bytes de código +
-pF
bandera.Pruébalo en línea!
El código ordena la entrada y comprueba si las entradas coinciden ordenadas (o en orden inverso).
fuente
$"=$,
y usar el/x
modificador en su lugar para guardar 5 bytes más.Jalea , 5 bytes
Pruébalo en línea!
¿Cómo?
fuente
Bash + coreutils, 59 bytes
La cadena de entrada se pasa como argumento.
La salida se devuelve en el código de salida (0 para verdadero, 1 para falso, como de costumbre), según lo permitido por los métodos de E / S PPCG .
fuente
PHP, 66 bytes
toma datos del argumento de la línea de comando. Corre con
-r
.fuente
Ruby , 44 bytes
Pruébalo en línea!
fuente
Raqueta , 93 bytes
Pruébalo en línea!
Sin golf:
Usando el ordenamiento luego compara con el enfoque original
fuente
Brachylog , 5 bytes
Intenté encontrar una solución de 4 bytes sin éxito, así que por ahora esta es la solución de 5 bytes más interesante que he encontrado:
Pruébalo en línea!
o
, la función de ordenamiento, puede tomar un parámetro:0
significa orden ascendente,1
significa orden descendente. Establecemos ese parámetro en una variable independienteN
. Brachylog intentará diferentes valores paraN
(solo0
o1
son posibles), intentará unificar el resultado con la entrada y devolverá si alguno de esos intentos tuvo éxito.fuente
o?|o₁?
funciona para un byte adicional aunqueo{|↔}?
.MATLAB / Octave, 38 bytes
Demostración en línea
fuente
JavaScript (ES6)
7462504743 bytesDespués de jugar al golf y corregir errores, esta respuesta terminó siendo más o menos la misma que la de ETHProduction, así que por favor revise su respuesta y dele un
+1
.fuente
+1
su respuesta.Haskell,
5450 bytesEjemplo de uso:
t "defggh"
->True
. Pruébalo en línea! .Tal vez usar
sort
como muchas otras respuestas es más corto, aunque requiereimport Data.List
. Aquí hay un enfoque diferente:Para cada función
f
de[(=<<),(<*>)]
, calcularand(zipWith(<=)`f`tail$a)
y requerir cualquiera de los resultados para serTrue
. Las funciones sonambos realizan comparaciones de elementos vecinos de la lista de entrada
a
con<=
, pero uno con los argumentos volteados dando como resultado a>=
.and
comprueba si todas las comparaciones sonTrue
.fuente
Pushy , 7 bytes
Pruébalo en línea!
Explicación:
fuente
1
y2
estánTrue
en Pushy, mientras que lo0
esFalse
.Pyth, 5 bytes
Un programa que toma la entrada de
"quoted string"
ay imprimeTrue
oFalse
según corresponda.Banco de pruebas
Cómo funciona
fuente
}Q
con/
, que usa un implícitoQ
.Octava, 24 bytes
¡Pruébelo en línea!
fuente
GNU sed, 97 + 1 (r flag) = 98 bytes
Si las letras están ordenadas, el guión regresa
1
, de lo contrario0
. En sed no hay tipos de datos.Para verificar si todas las letras están ordenadas en orden ascendente, hago una búsqueda en la tabla de cada par de letras consecutivas en un alfabeto descendente, es decir, trato de encontrar un contraejemplo. Tenga en cuenta que en
//
realidad repite la última coincidencia de expresión regular.(ver líneas 2 y 3)Ejemplo de ejecución: el script puede probar múltiples palabras de entrada, una por línea
fuente
CJam ,
1211 bytesPruébalo en línea!
Explicación
fuente
Código de máquina 8086,
686148464539 bytesEnsamblado de:
fuente
Scala, 47 bytes
fuente