Dada una cadena de entrada S, regrese truthysi todas las letras en S están ordenadas léxicamente: sus valores ASCII deben estar en orden ascendente o descendente. Regreso falsyen 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
trueofalse, o0/1, o cualquier otratrue / falsesalida 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

truthyofalsy. Esto implica que cualquier valor que evalúetrueofalseesté 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? => 0El |aab => same => 1Python 2 ,
53444039 bytesPruébalo en línea!
fuente
Haskell , 33 bytes
Pruébalo en línea!
Gracias a Ørjan Johansen por 1 byte con
scanl1infijo 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 maxtiene 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
mincontroles 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:
.combdivide la entrada en una secuencia de caracteres.leygeson 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).ordevuelve True si las expresiones a cada lado son verdaderas.fuente
JavaScript (ES6), 43 bytes
fuente
qse establecería en ese valor..sort()para ordenar implícitamente elreversechequeMATL , 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.
charToRawtomasy divide en un vector sin procesar. Esto se convierte en enteros y sediffaplica.signhace que el diffs sea una sola unidad.rangereduce el vector a su mínimo y máximo. Entonces, si la desviación estándarsdes 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(,'')))cbay 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!)treeMATL, 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
Ṣm0wen 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 parawyẇ...'\n'y'Hello'son valores perfectamente válidos.Mathematica, 33 bytes
Basado en este consejo . Desafortunadamente, tengo que usar en
ToCharacterCodelugar deCharacters, porque<=y>=no comparar cadenas.fuente
PowerShell , 61 bytes
Pruébalo en línea!
Toma entrada
$a, luego verifica si se trata de-inuna matriz de dos elementos. El conjunto se forma tomando$a,charconvirtiéndolo en una matriz, almacenando eso$bpara más tarde, canalizándolo a losort-objectque se ordena léxicamente. El otro elemento se$bordena en-desorden descendente.fuente
Perl , 35 bytes
Guardado 4 bytes gracias a @Xcali directamente, y 4 más indirectamente.
31 bytes de código +
-pFbandera.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/xmodificador 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:0significa orden ascendente,1significa orden descendente. Establecemos ese parámetro en una variable independienteN. Brachylog intentará diferentes valores paraN(solo0o1son 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
+1su respuesta.Haskell,
5450 bytesEjemplo de uso:
t "defggh"->True. Pruébalo en línea! .Tal vez usar
sortcomo muchas otras respuestas es más corto, aunque requiereimport Data.List. Aquí hay un enfoque diferente:Para cada función
fde[(=<<),(<*>)], 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
acon<=, pero uno con los argumentos volteados dando como resultado a>=.andcomprueba si todas las comparaciones sonTrue.fuente
Pushy , 7 bytes
Pruébalo en línea!
Explicación:
fuente
1y2estánTrueen Pushy, mientras que lo0esFalse.Pyth, 5 bytes
Un programa que toma la entrada de
"quoted string"ay imprimeTrueoFalsesegún corresponda.Banco de pruebas
Cómo funciona
fuente
}Qcon/, 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