Ma source est en ordre, la vôtre?

14

Votre défi est d'écrire un programme, une fonction, etc. qui calcule si la chaîne passée est "en ordre". Cela signifie que les caractères de la chaîne ont des codes de caractères du plus petit au plus grand. Le plus petit code de caractère doit être le premier. J'entends par là les points de code unicode les plus bas aux plus élevés. Peu importe la page de codes que votre langue utilise.

Vous devez renvoyer une valeur si l'entrée est "en ordre" et une autre si elle ne l'est pas. Les valeurs doivent être distinctes, mais il n'y a aucune autre restriction sur les valeurs de sortie. Par exemple, vous pouvez imprimer / retourner / imprimer truepour !1AQaq¡±(dans l'ordre) et falsepour aq!QA. Les deux valeurs distinctes n'ont pas besoin d'être véridiques ou fausses ou quelque chose comme ça, juste deux valeurs distinctes. Les chaînes répétées (par exemple aa) sont en ordre.

Il vous suffit de prendre en charge jusqu'à unicode U+007E( ~) (ascii 126)

Cependant, les caractères de votre programme doivent eux-mêmes être en ordre. Bonne chance et bon !

programmer5000
la source
Vous n'avez pas besoin d'avoir des valeurs véridiques / fausses? deux vérités fonctionneraient?
Rɪᴋᴇʀ
De plus, le plus petit code de caractère est-il toujours au premier caractère? Ou peut-il être inversé?
Rɪᴋᴇʀ
12
Le code-golf semble honnêtement être une mauvaise condition de victoire pour cette forme de source restreinte. Le bowling de code pour la plupart des personnages uniques serait plus intéressant.
fəˈnɛtɪk
1
Les inconvénients de @Pavel Pop ne fonctionnent pas bien pour réaliser une tâche particulière d'une manière particulière.
Dennis
2
est la chaîne répétée dans l'ordre? par exemple, est "aa"en règle?
tsh

Réponses:

14

Brachylog , 2 octets

.o

Essayez-le en ligne!

Explication

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

En tant que programme complet, un échec d'assertion donne false., toute exécution réussie qui ne viole aucune assertion donnetrue.


la source
9

Gelée , 2 octets

Ṣ⁼

Essayez-le en ligne!

Explication

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ a également la bonne fonctionnalité ("comparer l'entrée à l'entrée triée"), il s'agissait donc simplement d'exécuter les deux programmes sur eux-mêmes pour déterminer lequel était en ordre (je n'ai certainement pas les points de code Unicode de cette partie). du jeu de caractères étrange de Jelly mémorisé).


la source
Votre soumission est incorrecte dans le codage Jelly, elle doit l'être à la ⁼Ṣplace. Vous pouvez voir la page de codes de Jelly ici .
Erik the Outgolfer
@EriktheOutgolfer C'est facile à corriger; ⁼Ṣfait exactement la même chose que Ṣ⁼.
steenbergh
@steenbergh Cette soumission, telle qu'elle est actuellement, n'est pas valide. Même si le correctif est facile, il n'a pas encore été appliqué et il est déconseillé aux autres de modifier le code.
Erik the Outgolfer
1
@EriktheOutgolfer La discussion sur cette réponse concerne principalement la page de code à utiliser: le défi fait référence à Unicode (bien qu'il ne nous dise pas explicitement de l'utiliser) et Jelly a sa propre page de code. Quel que soit le résultat, la fixation de cette réponse est triviale. Pour cette raison, je n'irais pas jusqu'à qualifier cette réponse de «non valide» - je ne la noterais même pas dans son état actuel.
steenbergh
@steenbergh Je n'ai pas non plus voté, j'informais justement ais523 :)
Erik l'Outgolfer
9

MATL , 5 octets

GGS\a

Sorties 0si l'entrée est en ordre, 1sinon.

Essayez-le en ligne!

Explication

Ceci calcule le module de (les points de code de) chaque caractère à partir de l'entrée avec celui du même index dans l'entrée triée. L'entrée est en ordre si et seulement si tous les résultats le sont 0.

Par exemple, considérez la chaîne d'entrée BCD!. Le tri donne '!BCD. Les tableaux de points de code sont respectivement [66 67 68 33]et [33 66 67 68]. Le calcul des modules donne [0 1 1 33], donc l'entrée n'est pas en ordre. Notez comment certains résultats peuvent être 0même si les valeurs n'étaient pas les mêmes (ici cela se produit à la première position), mais cela ne peut pas se produire dans toutes les entrées sauf si l'entrée est en ordre.

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display
Luis Mendo
la source
8

05AB1E , 3 2 octets

Merci à Kevin d'avoir supprimé 33% de mon code source!

Essayez-le en ligne!

Explication:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.
steenbergh
la source
D{Qfonctionne aussi ...
Neil A.
1
@ NeilA. Cela pourrait faire la même chose, mais les personnages ne sont pas dans l'ordre. La condition est que votre code source passe le même test que les données. Cela devrait donner 1 .
steenbergh
1
Le Dpeut être supprimé pour -1 en utilisant simplement une entrée implicite deux fois.
Kevin Cruijssen
5

2sable , 2 octets

Essayez-le en ligne!

Explication

{    # sorted input
 Ê   # not equals (implicit input)

Sort 0 si c'est la commande, sinon 1 .

Emigna
la source
1
@steenbergh: Ah, j'ai raté cette partie du défi.
Emigna
1
@steenbergh: Fixé! Heureusement, nous avons pu générer des valeurs distinctes :)
Emigna
2

Pyth, 2 octets

<S

Falsesignifie trié, Truesignifie non trié.

Suite de tests

C'était assez simple à trouver. La solution la plus évidente à ce problème, sans la source restreinte, est l' SIinvariant sous tri. Mais ce n'est pas trié. Puis j'ai pensé à qS, qui utilise implicitement la variable d'entrée deux fois, vérifiant si elle est égale à son auto trié. Mais alors q < s, q > Scela n'a pas fonctionné non plus. Mais <vient avant S, et la seule façon dont la version triée ne peut pas être inférieure à l'original est si l'original a été trié, puisque la version triée est la permutation lexicographiquement minimale des éléments.

isaacg
la source
1

CGL (CGL Golfing Language) , 4 octets (hors compétition)

-:Sc

Explication:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

Non concurrentiel parce que :, Set cont été mis en œuvre après la création de ce défi.

programmer5000
la source
Y a-t-il une preuve que ce langage a été créé avant ce défi?
user41805
@KritixiLithos oui, et c'est techniquement un langage valide, mais je vais le rendre non compétitif car les fonctions nécessaires pour le faire ont été faites après ce challenge. CGL est toujours en cours d'élaboration et j'utilise des défis pour me montrer quelles nouvelles fonctions devraient être ajoutées.
programmer5000