Ce défi décrit déjà le dropsort. Cependant, je suis un peu paresseux et j'ai vraiment besoin que mon tableau soit un peu plus trié qu'auparavant, il n'a pas besoin d'être trié complètement .
Dans Drop Sort, nous supprimons chaque élément de moins que tout élément précédent. Dans Lazy Drop Sort, nous supprimons chaque élément de moins que celui qui le précède strictement .
Voici un exemple. Considérez le tableau suivant:
8 6 9 9 7 2 3 8 1 3
Marquons chaque élément de moins que celui qui le précède.
8 6 9 9 7 2 3 8 1 3
^ ^ ^ ^
Remarquez comment ni l'un ni l'autre n'a 3
été marqué, ni le dernier 8
. Ils sont tous plus grands que l'élément unique à gauche d'eux.
En complétant l'algorithme, en supprimant les éléments marqués, on obtient:
8 9 9 3 8 3
Cela semble fondamentalement plus trié. Un peu. Je suis fainéant.
Votre tâche, comme vous l'avez peut-être déjà déduit, est d'implémenter cet algorithme.
L'entrée est un tableau d'au moins 1 entier positif compris entre 1 et 9, vous pouvez donc également prendre une chaîne de chiffres.
C'est du code-golf , le moins d'octets gagne!
Cas de test supplémentaires:
1
1
1 2 3
1 2 3
5 3 1
5
1 2 3 2 1
1 2 3
1 1 1 9 9 9 1 1 1 9 9 9 1 1 1
1 1 1 9 9 9 1 1 9 9 9 1 1
9 9
9 9
5 2 4 2 3
5 4 3
Réponses:
Husk , 4 octets
Essayez-le en ligne!
Explication
la source
JavaScript (ES6),
2825 octetsEnregistré 3 octets grâce à @Shaggy
Essayez-le en ligne!
la source
n=>p<=n
aurait été génial ;-)(n=p)=>p<=(p=n)
fonctionne très bien;)p
pour la première fois, alors qu'il n'est pas encore défini?a
est initialement défini sur le tableau d'entrée eta-1
entraîneraitNaN
(sauf s'il contient un seul entier, auquel cas il est contraint à cet entier).R , 27 octets
Essayez-le en ligne!
la source
MATL ,
98 octetsUn octet enregistré grâce à Giuseppe.
Essayez-le en ligne!
Explication:
la source
Perl 5 .10.0 +
-nl
, 16 octetsEssayez-le en ligne!
la source
perl6 -ne '$/>$_||.say;$/=$_'
Haskell, 29 octets
juste une simple compréhension de liste.
la source
Japt ,
87 octets1 octet enregistré grâce à @Oliver
Testez-le en ligne!
Alternatives:
la source
Stax , 5 octets
Exécutez et déboguez ceci en ligne
Déballer, dé-golfer et commenter le code, nous obtenons ceci.
Exécutez celui-ci
L'ordre des instructions est maladroit, mais il y a une raison à cela. L'emballage du code source Stax ne donne pas toujours la même sortie de taille pour la même entrée de taille. Fondamentalement, vous avez la possibilité d'enregistrer un octet si le dernier caractère de la source a un code de caractère inférieur. Eh bien,
!
a l'un des codes les plus bas que vous pouvez obtenir pour un caractère imprimable. (33 spécifiquement) De nombreux programmes stax ASCII de 6 octets ne peuvent pas être plus petits. Mais s'ils se terminent par un!
, alors ils le peuvent. Donc, la raison de cet ordre particulier des instructions est de s'assurer que le non logique se termine à la fin du programme.la source
J, 12 octets
Explication:
Exemples:
Essayez-le en ligne!
la source
Gelée , 6 octets
Les E / S sont sur des chaînes.
Essayez-le en ligne!
la source
×
ne devrait pas fonctionner pour la répétition des caractères, mais c'est le cas.Java 8,
665548 octets-11 octets après un pourboire de @ OlivierGrégoire .
-7 octets de plus grâce à @ OlivierGrégoire .
Explication:
Essayez-le en ligne.
la source
~0
quand c'est fondamentalement-1
. Personnellement, je choisirais la solution la plus intuitive si le nombre d'octets est de la même longueur (sauf pourwhile(...)
vsfor(;...;)
, auquel cas je préfère lefor
. Merci pour encore -7 octets, cependant. :)Integer.MIN_VALUE
(ce qui est alors1<<31
, je suppose ...) ;-)Octave , 21 octets
Essayez-le en ligne!
Explication:
Prendre un vecteur
x
en entrée et créer un vecteur[0, diff(x)<0]
, oùdiff(x)
est un vecteur avec la différence entre tous les éléments adjacents. Ne gardez que ceux qui sont négatifs en le comparant à zéro, en nous donnant une liste de tous les éléments que nous voulons supprimer.Nous sélectionnons ensuite les éléments du vecteur d'entrée que nous voulons conserver.
la source
V , 25 octets
Essayez-le en ligne!
Hexdump:
Pire langue pour le travail. Mais je l'ai fait pour oser .
la source
k$yl+@"òç-/d
espagnol?k$yl+@"òç-/d
pourrait être libéralement traduit par Ouch, qui diable a laissé cette porte de placard ouverte?Triangularité , 71 octets
Essayez-le en ligne!
Comment ça marche?
la source
)IEL)rFD)2+)IE)w+h)2_stDO={M)IEm}
qui élargirait votre réponse actuelle?)IEL)rFD)2+)IE)w+h)2_stDO={M)IEm}
serait votre code, il se développerait dans votre modèle actuel, puis exécuterait les commandes 2D sur ce modèle développé. EDIT:.....).....\n....IEL....\n...)rFD)...\n..2+)IE)w..\n.+h)2_stDO.\n={M)IEm}...
et.....).........IEL.......)rFD).....2+)IE)w...+h)2_stDO.={M)IEm}...
et)IEL)rFD)2+)IE)w+h)2_stDO={M)IEm}
serait tous les trois exactement le même programme.Python , 40 octets
Essayez-le en ligne!
Entrez comme tuple de caractères.
Python 3 , 41 octets
Essayez-le en ligne!
Entrée chaîne.
Python 2 , 41 octets
Essayez-le en ligne!
Entrée de chaîne, juste parce que les chaînes sont plus grandes que
id
mais les nombres sont plus petits.la source
Wolfram Language (Mathematica) , 33 octets
Essayez-le en ligne!
Comment ça marche
Le code
# - {0}~Join~Most@#
transforme un tableau{a,b,c,d,e,f}
en{a,b-a,c-b,d-c,e-d,f-e}
. L'applicationArg
à ceci définit les nombres négatifs surPi
et les nombres non négatifs sur0
.Pick[#, ..., 0]&
sélectionne les entrées de#
où...
a a0
: dans notre cas, exactement les éléments qui donnent un nombre non négatif lorsque vous soustrayez l'élément précédent. En d'autres termes, ce sont exactement les entrées que nous voulons conserver lors du lazydropsorting.la source
Wonder , 27 octets
Exemple d'utilisation:
Explication
Version non golfée:
Ajouter au début
0
, obtenir la liste des paires consécutives, conserver les éléments de la liste où le premier numéro <= deuxième numéro, obtenir le deuxième numéro de chaque paire.la source
Wolfram Language (Mathematica) , 20 octets
Essayez-le en ligne!
Explication
Input = {8, 6, 9, 9, 7, 2, 3, 8, 1, 3}
Regroupez les éléments consécutifs qui sont strictement décroissant:
{{8, 6}, {9}, {9, 7, 2}, {3}, {8, 1}, {3}}
Prenez le premier élément de chacun:
{8, 9, 9, 3, 8, 3}
la source
##>0
est fantaisiste et tout, mais il ne sauve vraiment rien#>#2
ici;) (ce qui ferait fonctionner votre programme avec des entiers arbitraires, pas ce qui est cependant requis).Python 2 ,
52464542 octetsEssayez-le en ligne!
Enregistré:
la source
SWI-Prolog, 44 octets
Utilisation: Appelez " List -X" où List est une liste entre crochets, séparée par des virgules, par exemple [1,4,5,1,11,6,7].
la source
APL + WIN, 14 octets
Invite à saisir à l'écran un vecteur d'entiers.
la source
05AB1E , 6 octets
Essayez-le en ligne!
Explication
la source
Kotlin , 39 octets
Essayez-le en ligne!
Filtrer les éléments qui sont soit le premier élément (index == 0, ou encore indice plus court <1) OU la valeur actuelle est supérieure ou égale à l'élément précédent (a [i-1]).
la source
APL (Dyalog Unicode) , 11 octets
Essayez-le en ligne!
C'est en fait assez similaire à la réponse de Graham, mais dans Dyalog, et développé indépendamment. En outre, plus symétrique.
la source
K4 , 10 octets
Solution:
Exemple:
Explication:
Trouver les indices où l'élément est inférieur au précédent, supprimer ces indices de l'entrée
la source
Attaché , 24 octets
Essayez-le en ligne!
Explication
Mask
sélectionne tous les éléments de son deuxième argument qui correspondent aux éléments véridiques de son premier argument.1'(Delta!_>=0)
calcule les indices qui correspondent aux éléments censés se trouver dans le tableau final.D'autres tentatives
28 octets (sans point):
~Mask#(1&`'##Delta#`>=#C[0])
32 octets:
{Mask[1'(&`<= =>Slices[_,2]),_]}
la source
C # (.NET Core) , 33 + 18 = 51 octets
Essayez-le en ligne!
fondamentalement, l'instruction est l'endroit où x est le premier entier du tableau, ou est supérieur ou égal au nombre précédent, conservez-le. Sinon, laissez tomber.
la source
IEnumerable
. PasToArray()
nécessaire.System.Collections
, et cela annulerait tous les octets enregistrés pour supprimer leToArray()
.IEnumerable
dans la réponse, utilisez-le simplement comme type de retour.Swift 4 ,
5655 octetsEssayez-le en ligne!
Explication
la source
Gelée , 9 octets
Essayez-le en ligne!
Cela semble assez volumineux, ne serait pas si surpris s'il y a une meilleure façon.
la source
Brain-Flak ,
136, 120 octetsIci, il est formaté et "lisible" .
Essayez-le en ligne!
la source