Je dois arrêter de penser à des noms chétifs
Votre tâche consiste à créer autant d'extraits de code (programmes dotés d'entrées et de sorties intégrées), de fonctions ou de programmes complets que possible, qui trie la version des tableaux entiers de votre langue dans l'ordre croissant, mais pour chaque programme, vous n'êtes autorisé qu'à pour utiliser les caractères en ASCII (ou la page de codes de votre langue, si elle est directement spécifiée comme non ASCII) qui n'ont pas été utilisés dans les programmes précédents.
Voici un exemple de réponse (programmes séparés séparés par des retours à la ligne):
Derp
ASdFGHJKLAAA
qwEEERtyRty
Dans cette (langue fictive), ma première réponse est Derp
, qui épuisé D
, e
, r
et p
. Dans le deuxième programme, je ne suis pas autorisé à utiliser à nouveau ces caractères, mais je peux réutiliser autant de caractères que je veux. Même chose avec le troisième programme, etc.
Chaque programme doit prendre un tableau d'entiers, donc quelque chose comme ça (voir des exemples d'entrée / sortie pour les styles d'entrée / sortie valides):
[3 4 -2 5 7 196 -44 -2]
Et il doit sortir les éléments du tableau sous forme de tableau, dans l'ordre croissant:
[-44 -2 -2 3 4 5 7 196]
Votre score sera le montant total des soumissions. S'il y a égalité, le nombre d'octets le plus bas (le moins d'octets dans votre code) gagne!
Règles pour les programmes:
- Toutes les soumissions doivent s'exécuter correctement dans une version linguistique (donc
Python 2 != Python 3
). - Vos soumissions peuvent être des extraits, des fonctions ou des programmes complets. Vous êtes même autorisé à les mélanger et à les assortir - cependant, vous devez dire lequel est lequel et fournir des liens vers des soumissions de travail.
- Veuillez fournir des liens en ligne vers toutes les solutions, si possible.
- Toutes les soumissions doivent prendre un tableau (ou une chaîne délimitée par n'importe quel caractère) en entrée, et sortir le tableau trié (sous la forme d'un tableau de votre langue ou sous la forme d'une
{any character}
chaîne délimitée). - Vous n'êtes pas autorisé à utiliser des caractères en dehors de l'ASCII (ou de la page de codes de votre langue).
Par exemple, ce sont des entrées / sorties valides:
[1 2 3 4] (Clojure style arrays)
[1, 2, 3, 4] (Python style arrays)
1 2 3 4 5 (Space-delimited - separated by spaces)
1#2#3#4#5 ("#"-delimited - separated by "#" characters)
1\n2\n3\n4\n (newline-delimited)
Spécifications pour l'entrée:
- Vous êtes assuré que le tableau ne contient que des entiers. Cependant, il peut y avoir des nombres négatifs et les nombres peuvent se répéter indéfiniment.
la source
Réponses:
Gelée , 10 programmes, 65 octets
Il y a un certain chevauchement inévitable avec la réponse Jelly de @ Lynn . Les crédits pour l'idée du bogosort lui reviennent.
Essayez-le en ligne! ou vérifier l'unicité .
Comment ils travaillent
la source
Jelly, 8 programmes
Le dernier programme est vraiment ennuyeux…
Si je peux retirer le
œṡ
de<;0œṡ0⁸ṁjµ/
, il y a aussi ce bizarre un:²SNr²ZFœ&
. L'aide est appréciée.la source
Roots → polynomial, polynomial → roots
est un génie!U
c'est gratuit05AB1E , score = 6
05AB1E utilise le codage CP-1252 .
Merci à Kevin Cruijssen pour le programme 4.
Merci à Riley pour l'inspiration du programme 6.
Programme 1
Essayez-le en ligne!
Programme 2
Essayez-le en ligne!
Programme 3
Essayez-le en ligne!
Programme 4
Essayez-le en ligne!
Programme 5
Essayez-le en ligne!
Programme 6
Essayez-le en ligne!
la source
ϧ
Peut être utilisé pour un score supplémentaire. Essayez ici.œ
solution, mais je ne savais même pasß
:)€Ý逤
fonctionnerait si¤
sauté la valeur à la place si juste l'obtenir.Brachylog , score =
45Programme 1 - Tri aléatoire
Nous mélangeons et vérifions que l'inverse de la liste n'est pas en augmentation. Sinon, nous réessayons récursivement.
Programme 2 - Tri par permutation
Sortez la première permutation qui n'est pas décroissante.
Programme 3 - Intégré
Ordre.
Programme 4 - Intégré
Commandez par étiquetage. Puisque les entiers de la liste sont déjà fixes, cela fait la même chose que
o
.Programme 5 - Impression minimale
Voici une explication de cette monstruosité de la nature:
la source
RecursionError: maximum call stack size exceeded
JavaScript, marquez
12Double le score grâce à @ETHproductions qui m'a rappelé les échappements de chaîne
Extrait 1 (21 octets, caractères
\ ,-.=>289`Facehilnorstux
)Extrait 2 (9117 octets, caractères
(+)[!]
)Vous pouvez tester les deux versions dans la console de votre navigateur. La première version est juste une fonction, la deuxième version est un extrait qui nécessite l'ajout des parenthèses et de l'argument.
Exemples
Comment?
Le premier extrait appelle la méthode de tri sur le tableau que vous lui transmettez. Par défaut, la méthode de tri trie lexicographique, ce qui est mauvais pour les entiers (en particulier les nombres négatifs à plusieurs chiffres). En tant que tel, nous devons lui passer un rappel sous la forme d'une fonction de flèche qui prend deux éléments et soustrait ce dernier de l'ancien. En fonction de la valeur résultante, les deux éléments sont réorganisés: s'il est inférieur à 0,
a
apparaîtra avantb
, s'il est supérieur à 0,a
apparaîtra aprèsb
, et s'il est 0, les deux éléments se retrouveront côte à côte.Le deuxième extrait n'est rien de plus qu'une version codée du premier extrait et il profite du fait qu'en JavaScript, c'est
object.function()
égalobject["function"]()
. Il utilise également des tableaux, des!
opérateurs et des transtypages vides pour générer toutes sortes de chaînes, dans lesquelles les caractères nécessaires pour le nom de la fonction peuvent être trouvés. Ensuite, les crochets sont utilisés une fois de plus pour obtenir le caractère à un certain index dans la chaîne, et tous ces caractères sont concaténés, ce qui donne le code JavaScript suivant:[]["fill"]
est égal[].fill
, dont["constructor"]
est l'Function
objet. Nous appelons ensuite cela avec une chaîne (qui doit être évaluée lorsque la fonction est appelée), qui est la première fonction, mais notons que l'argument a été remplacé parthis
. Pour définir la valeur dethis
l'argument, nous devons appeler une fonction sur cette fonction, à savoir["call"]
. En JavaScript conventionnel, vous écririez ceci comme:la source
Function`return a=>a.sort\x28\x28a,b\x29=>a-b\x29`
par exemple, mais sans utiliser les caractères que vous avez déjà utilisés'
et en faisant par exemple'('
au lieu de tout ce que JSF génère ce caractère. (aussi, utilisezf
ett
comme vars au lieu dea
etb
,b
coûte littéralement environ 3000 caractères)V , score
3, 4Ce fut un défi vraiment amusant! Heureusement, vim a une fonction de "tri" intégrée, sinon cela serait fondamentalement impossible. Malheureusement, comme V / vim est basé sur une chaîne, il a besoin d'un argument pour trier par valeurs numériques. Alors j'appelle
Trier par valeur numérique
n
,Trier par valeur hexadécimale
x
etTrier par valeur à virgule flottante
f
Petite note: lorsque j'écris quelque chose comme
<esc>
ou<C-r>
, c'est en fait un octet. Il représente des caractères non imprimables, et puisque V repose malheureusement fortement sur des caractères non imprimables, cette méthode facilite tout. Les liens TIO ont le-v
drapeau, ce qui fait que l'interpréteur V les lit comme s'ils étaient les caractères qu'ils représentent.Programme 1, 2 octets
Essayez-le en ligne!
Cela appelle la fonction de tri spécifique à V.
Programme 2, 10 octets
Cela appelle simplement «trier» directement. La seule chose intéressante à ce sujet est que nous le faisons à partir du
ex
mode, qui est un mode étrange qui émule l'éditeur de texte «ex», l'arrière-arrière-grand-père de V.vi
est un raccourci pourvisual
, la commande utilisée pour quitter le mode ex. Cela nécessite une nouvelle ligne de fin.Essayez-le en ligne!
Programme 3, 14 octets
Essayez-le en ligne!
D'accord, c'est ici que les explications commencent à devenir un peu bizarres. Si nous pouvons construire le texte
sor x
, nous pouvons le supprimer et l'insérer dans la commande courante avec<C-r><register-name>
. Nous allons donc le saisir en majuscules.Programme 4, 19 octets
Essayez-le en ligne!
Et c'est là que les explications commencent à devenir très étranges. Semblable à la dernière fois, nous allons construire la commande en mode normal afin que nous puissions utiliser différentes clés.
la source
CJam, score 4
Programme 1: Intégré
Programme 2: Eval'ed Built-in
36 est la valeur ASCII de
$
.Programme 3: Tri par permutation
Programme 4: valeurs minimales
Explication de cette monstruosité surnaturelle:
la source
(+
au lieu de1m<
si vous le souhaitez.<
cet extrait, il est donc préférable de s'en tenir à1m<
Japt , score = 4
Programme 1
Essayez-le en ligne!
Programme 2
Essayez-le en ligne!
Programme 3
Essayez-le en ligne!
Programme 4
Essayez-le en ligne!
la source
s)$.sort(...
, je ne sais pas si c'est utile cependant.O
et$
ont été utilisés. Je suis ouvert aux suggestions si vous pouvez penser à d'autres méthodes de tri! :)Octave, 2 points
Il est difficile de rivaliser avec les esolangs, mais voici:
Je suis impressionné si quelqu'un bat ça.
unique
peut être utilisé pour trier les valeurs, mais il supprimera les doublons. Afin d'insérer les doublons, vous auriez besoin de parenthèses, et ils sont fortement utilisés dans le tri à bulles. Vous auriez également besoin@
, qui est également utilisé.Numéro 1:
Celui-ci est assez simple: créez une fonction anonyme, affectée à la variable
ans
.Appelez cette façon:
ans([-5, 3, 0, -2, 100])
. Cela ne fonctionne pas sur tio, mais cela fonctionne sur octave-online .Numéro 2:
Il s'agit simplement d'une implémentation de type bulle, sans utiliser les caractères
@sort
. Nous ne pouvons pas en faire une fonction à cause deo
, et nous ne pouvons pas l'utiliser àinput
cause det
. Nous sommes donc coincés aveceval
.eval(['a=inpu',116,'("");']);
évalue à:,a=input("");
que nous pouvons utiliser pour entrer notre vecteur d'entrée. Le reste consiste à trier les bulles sans utiliserfor
oumod
. Notez que cela doit être enregistré dans un script et appelé à partir de l'interface graphique / CLI. Vous ne pouvez pas le copier-coller à cause deinput("")
(il utilisera le reste du code en entrée, échouera donc lamentablement).la source
Haskell (lambdabot), 3 fonctions
J'utilise l'environnement lambdabot pour éviter beaucoup de
import
déclarations. Mêmesort
besoinimport Data.List
. lambdabot importe un tas de modules par défaut. Outre les manquantsimports
, il s'agit du code Haskell standard selon nos règles.Essayez-le en ligne! .
Fonction 1
La fonction de bibliothèque de
Data.List
. Rien à dire ici.Fonction 2
La fonction
v
implémente un tri par insertion.J'utilise des gardes de modèle pour éviter les
()
paramètres. Comparezvv v|vvv:vvvv<-v=...
avecvv(vvv:vvvv)=...
.La première ligne, function
vv
est une fonction d'aide pour créer la liste vide. Avec lui, je n'ai pas besoin de l'utiliser[]
pour écrire des listes vides littérales. Plus lisible:(==:)
is insert, qui insère un élément dans une liste triée, afin que la liste résultante soit toujours triée. Plus lisible:(=:)
est de réduire. Plus lisible:Et enfin,
v
ce qui réduit la liste d'entrée avec[]
:Fonction 3
sort
Fonction de 1 fait la plupart des fonctions de liste marche (fold
,scan
,until
) indisponible. Besoins de récursivité=
utilisés dans la fonction 2. La seule option qui reste est d'utiliser le combinateur de points fixesfix
. J'ai commencé avecqui est un tri par sélection. Le transformer en point-free (je ne peux pas utiliser de lambdas
\f x ->...
, à cause de celui-
qui est utilisé par les gurads de motif dans la fonction 2) donne:Il
return
est interdit de créer des listes singleton à partir d'une valeur avec (même chose pourpure
), donc je dois créer ma propre fonction:\x -> map (\y -> x+0*y) [1]
ou sans pointflip map[1].(.(0*)).(+)
. Remplacement desreturn
rendementsla source
MATL , 3 programmes
Programme 1
Cela utilise simplement la fonction intégrée, avec une entrée et un affichage implicites.
Essayez-le sur MATL en ligne .
Programme 2
Cela continue de générer des permutations aléatoires des entrées jusqu'à ce que toutes les différences consécutives du résultat ne soient pas négatives (c'est le bogosort , comme indiqué par @cz ). Le temps d'exécution n'est pas déterministe et sa moyenne augmente très rapidement avec la taille d'entrée (à savoir, 𝒪 ( n! ) Pour un tableau de taille n avec toutes les entrées différentes).
Essayez-le sur MATL Online .
Programme 3
Il s'agit d'une boucle qui calcule le minimum du tableau, supprime tous les éléments égaux à cette valeur et procède avec le reste. Cela se fait autant de fois que la taille d'entrée. Si toutes les entrées de l'entrée ne sont pas différentes, certaines des itérations seront inutiles (mais inoffensives), car le tableau aura déjà été vidé.
Essayez-le sur MATL en ligne .
la source
Pip , 4 programmes
Programme 1 - intégré
Fragment; suppose une liste dans
x
.(
SN
pour Trier numérique)Programme 2 - permutations de filtre
Fragment; suppose une liste dans
y
. Très lent pour les entrées de plus de 7 éléments environ.Programme 3 - Eval
Fragment; suppose une liste dans
z
.Programme 4 - MergeSort
Fonction anonyme; appeler avec la liste comme argument (comme
({...} [1 2])
ouf:{...} (f [1 2])
.Ungolfed:
la source
PowerShell , 2
Essayez-le en ligne!
Il s'agit d'un extrait qui s'exécute (par exemple) dans l'équivalent PowerShell d'un REPL. Le lien TIO montre l'utilisation. Le
sort
est un alias pour l'Sort-Object
applet de commande.Essayez-le en ligne!
Les commandes PowerShell ne sont pas sensibles à la casse, nous pouvons donc les utiliser
sort
pour l'une etSORT
pour l'autre. Cela prend un tableau d'entrée, le trie sur place, puis le sort.la source
Ruby, 2 programmes
Tout d'abord - le simple:
Deuxièmement - la partie délicate:
la source
J
Programme un: 3 octets
un péché
/:~ 3,1,2,1
sorties1 1 2 3
Essayez-le en ligne!
NOTE en J, les nombres négatifs sont précédés de _ non - vous pouvez donc essayer 4, _10,56, _333 etc.
Programme deux: 5 octets
la source
Try it online
chose des liens vers une page Web sur TIO, pour lier une page dans une réponse que vous pouvez le faire:[displayed text](link)
.:
et~
se produisent dans les deux.PHP 7, 2 programmes
Les deux programmes peuvent être joués plus.
Programme 1, 254 octets, caractères
! "$&+.01:;=>?[]adeginoprtv
Tri par bulle. Utilise
goto
pour créer une boucle car les boucles intégrées nécessitent()
.Programme 2, 155 octets, caractères
#%'(),-67ACEFINORTUYZ^_{|}~
IF(...){}
évite l'utilisation de;
. Le code principal est codé avec XOR, car il$
a déjà été utilisé dans le programme précédent. Le code:la source