Avec une chaîne d'entrée S, renvoie truthy
si toutes les lettres de S sont ordonnées lexicalement: leurs valeurs ASCII doivent être dans un ordre croissant ou décroissant. Retour falsy
dans les autres cas.
Contribution
- La saisie se fera dans le même cas (majuscules ou minuscules). Votre soumission devrait pouvoir gérer les deux.
- L'entrée consistera en ASCII dans la plage
[A-Za-z]
seulement - La longueur d’entrée sera d’au moins 1, jusqu’à concurrence de votre langue.
- L'entrée est une chaîne - pas une liste de caractères, pas un tableau de points de codage ASCII.
Sortie
- Le résultat devrait être
true
oufalse
, ou0/1
, ou tout autretrue / false
style de sortie que votre langage peut fournir. - Tous les vrais cas doivent avoir la même sortie, ainsi que tous les faux cas. Non "False est 0, true est 1, 2 ou 3".
Règles supplémentaires
- Les échappatoires standard sont interdites
- La réponse doit être un programme complet ou une fonction, pas un extrait de code ni une entrée REPL.
- code-golf , la réponse la plus courte en octets l'emporte.
Cas de test
Vérité
"ABCDEF"
"ZYX"
"no"
"tree" --> the multiple 'e's don't break the order
"q"
Fausseté
"ABCDC"
"yes"
"deed"
Invalide
"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
. Cela implique que toutes les valeurs évaluéestrue
oufalse
autorisées.Réponses:
05AB1E , 5 octets
Essayez-le en ligne!
Explication
la source
{¹å
pour 4, supprimé ma réponse. Je n'ai pas remarqué l'utilisation de bifurcate, le mien était trop similaire.aba => ['aab', 'baa'] => is in? => 0
|aab => same => 1
Python 2 ,
53444039 octetsEssayez-le en ligne!
la source
Haskell , 33 octets
Essayez-le en ligne!
Merci à Ørjan Johansen pour 1 octet avec
scanl1
infixe de repliement .Haskell est un langage intéressant pour les défis basés sur le tri du golf, car il n’a pas de tri intégré, à l’exception de long
import Data.List
. Cela encourage à trouver un moyen de faire la tâche à la main sans trier explicitement.Le code utilise
scanl1
, qui replie une opération sur la liste de gauche à droite, en gardant une trace des résultats intermédiaires. Ainsi,scanl1 max
a pour effet d’énumérer les maxima cumulés de la liste, c’est-à-dire les maxima de préfixes de plus en plus longs. Par exemple,scanl1 max [3,1,2,5,4] == [3,3,3,5,5]
.La même chose avec
min
vérifie si la liste diminue. Le code vérifie les deux cas et les combine avec||
.Comparez avec d'autres expressions:
la source
||
gagne si vous définissez(?)=scanl1
.Perl 6 , 25 octets
Comment ça marche:
.comb
divise l'entrée en une séquence de caractères.le
etge
sont les opérateurs de comparaison de chaînes "inférieur ou égal" et "supérieur ou égal à" .[ ]
autour d'un opérateur infixe, réduit ("plie") la liste d'arguments avec cet opérateur. (Il est assez intelligent pour renvoyer True si l'entrée n'a que zéro ou un caractère.)or
renvoie True si les expressions de chaque côté sont vraies.la source
JavaScript (ES6), 43 octets
la source
q
serait définie à la place..sort()
pour trier implicitement lereverse
chèqueMATL , 7 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
la source
Clojure, 47 octets
la source
<=
et l'>=
air infixe cependant, ce qui est vraiment bizarre.(let[+ *](+ 2 3))
=6
: D Cela fonctionne sur n'importe quelle fonction mais apparemment pas sur les macros: "Impossible de prendre la valeur d'une macro"C (gcc) , 70 octets
J'espérais trouver une solution plus courte basée sur une fonction récursive, mais cela n'a pas fonctionné en raison des exigences de sortie. Alors, voici une approche impérative. Au moins, la priorité de l'opérateur C fonctionne bien pour l'instruction de boucle interne.
Essayez-le en ligne!
la source
R, 48
5061octetsEn tant que fonction non nommée
Merci à @guiseppe pour quelques octets supplémentaires.
charToRaw
prends
et se divise en un vecteur brut. Ceci est converti en entiers etdiff
appliqué.sign
rend les diffs une seule unité.range
réduit le vecteur à son minimum et maximum. Ensuite, si l'écart typesd
est inférieur à 1, il est VRAIEssayez-le en ligne!
la source
function(s,d=utf8ToInt(s))all(d==sort(d))
orfunction(s,d=utf8ToInt(s))!is.unsorted(d)
!is.unsorted(utf8ToInt(scan(,'')))
cba
et le dernier nécessiterait uncat()
programme completfunction(s)all(!diff(order(utf8ToInt(s)),,2))
(fonctionne aussi avec le tri inversé!)tree
MATL, 8 octets
Essayez-le en ligne!
Explication
la source
'\n'
et'Hello'
: /[A-Za-z]
comme indiqué dans le post initial. Ils sont dans la section "invalid" car ils n'ont explicitement pas besoin d'être traités.Gelée ,
4 à5 octetsEssayez-le en ligne!
À l'origine était
Ṣm0w
à quatre octets.Explication
la source
ẇ
cependant, je crois. Edit: UghṢm0ẇ@
.Ṣẇm0$
. Si l'ordre des arguments n'était pas différent pourw
etẇ
...'\n'
et'Hello'
sont des valeurs parfaitement valables.Mathematica, 33 octets
Basé sur cette astuce . Malheureusement, je dois utiliser à la
ToCharacterCode
place deCharacters
, car<=
et>=
ne compare pas les chaînes.la source
PowerShell , 61 octets
Essayez-le en ligne!
Prend l'entrée
$a
, puis vérifie s'il s'agit d'-in
un tableau à deux éléments. Le tableau est formé en prenant$a
, en lechar
transformant en un tableau, en le stockant$b
pour plus tard, en le dirigeant vers un tri lexicalsort-object
. L'autre élément est$b
trié dans l'-des
ordre croissant.la source
Perl , 35 octets
Sauvegardé 4 octets grâce à @Xcali directement, et 4 autres indirectement.
31 octets de code +
-pF
drapeau.Essayez-le en ligne!
Le code trie l'entrée et vérifie si les entrées correspondent elles-mêmes triées (ou dans l'ordre inverse).
la source
$"=$,
et utiliser le/x
modificateur à la place pour sauvegarder 5 octets supplémentaires.Gelée , 5 octets
Essayez-le en ligne!
Comment?
la source
Bash + coreutils, 59 octets
La chaîne d'entrée est transmise en tant qu'argument.
La sortie est renvoyée dans le code de sortie (0 pour la vérité, 1 pour la fausseté, comme d'habitude), comme le permettent les méthodes d'E / S PPCG .
la source
PHP, 66 octets
prend en entrée l'argument de la ligne de commande. Courez avec
-r
.la source
Ruby , 44 octets
Essayez-le en ligne!
la source
Raquette , 93 octets
Essayez-le en ligne!
Ungolfed:
Utiliser le tri puis comparer à l'approche originale
la source
Brachylog , 5 octets
J'ai essayé de trouver une solution de 4 octets sans succès, donc pour l'instant voici la solution de 5 octets la plus intéressante que j'ai trouvée:
Essayez-le en ligne!
o
, la fonction de classement peut prendre un paramètre:0
signifie ordre croissant,1
signifie ordre décroissant. Nous définissons ce paramètre sur une variable non liéeN
. Brachylog essaiera différentes valeurs pourN
(seulement0
ou1
est possible), tentera d'unifier le résultat avec l'entrée et retournera si l'une de ces tentatives a réussi.la source
o?|o₁?
fonctionne pour un octet supplémentaire thoo{|↔}?
.MATLAB / Octave, 38 octets
Démo en ligne
la source
JavaScript (ES6)
7462504743 octetsAprès avoir joué au golf et corrigé des bugs, cette réponse s’est avérée être à peu près la même que celle d’ETHProduction. Veuillez donc consulter sa réponse et donner une réponse
+1
.la source
+1
sa réponse.Haskell,
54 à50 octetsExemple d'utilisation:
t "defggh"
->True
. Essayez-le en ligne! .Peut-être que l’utilisation de la
sort
même chose peut être plus courte, bien que cela exigeimport Data.List
. Voici une approche différente:Pour chaque fonction
f
de[(=<<),(<*>)]
, calculezand(zipWith(<=)`f`tail$a)
et demandez à l’un des résultats d’êtreTrue
. Les fonctions sontqui sont tous deux effectuer des comparaisons des éléments voisins de la liste d'entrée
a
avec<=
, mais avec les arguments retourné résultant en une>=
.and
vérifie si toutes les comparaisons sontTrue
.la source
Pushy , 7 octets
Essayez-le en ligne!
Explication:
la source
1
et2
sontTrue
dans Pushy, alors qu’il en0
estFalse
.Pyth, 5 octets
Un programme qui prend une entrée
"quoted string"
et imprimeTrue
ouFalse
selon le cas.Suite de tests
Comment ça marche
la source
}Q
par/
, qui utilise un impliciteQ
.Octave, 24 octets
Essayez-le en ligne!
la source
GNU sed, 97 + 1 (indicateur r) = 98 octets
Si les lettres sont ordonnées, le script revient
1
, sinon0
. Dans sed, il n'y a pas de types de données.Pour vérifier si toutes les lettres sont classées par ordre croissant, je fais une recherche sous forme de tableau de chaque paire de lettres consécutives dans un alphabet décroissant, c’est-à-dire que j’essaie de trouver un exemple de compteur. Notez que
//
répète en fait la dernière correspondance d'expression régulière! (voir lignes 2 et 3)Exemple d'exécution: le script peut tester plusieurs mots d'entrée, un par ligne.
la source
CJam ,
12 à11 octetsEssayez-le en ligne!
Explication
la source
8086 code machine,
686148464539 octetsAssemblé de:
la source
Scala, 47 octets
la source