Signez ce mot!


12

Qu'est-ce qu'une signature Word?

La signature d'un mot sont toutes ses lettres mises en ordre - les signatures de this, histet hitssont toutes hist.

Le défi

Écrire un programme programme doit demander une entrée, puis imprimer la signature de ce mot. Ainsi, un exemple d'exécution de programme pourrait ressembler à ceci:

Give me a string: this
The signature signature of 'this' is hist.

Il n'y a aucune interaction requise, tant qu'il prend une entrée et imprime la signature, c'est OK.

Notation

Le programme avec le plus petit nombre d'octets gagne!

Classement

Voici un extrait de pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue.

Pour vous assurer que votre réponse s'affiche, veuillez commencer votre réponse avec un titre, en utilisant le modèle de démarque suivant:

# Language Name, N bytes

Nest la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les barrant. Par exemple:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Fini!

GAGNANT: jimmy23013


3
Nous n'avons pas besoin d'imprimer les phrases Give me a string:et The signature signature of 'this' isnon? Nous pouvons simplement prendre l'entrée directement et imprimer le résultat?
Fatalize

4
Qu'en est-il des lettres en double? Par exemple, la signature de broom bmoorou bmor?
samgak

3
@isaacg pourquoi êtes-vous?
Tim

3
@Tim Je ne pense pas que nous devrions avoir des défis aussi simples. Je vais poser des questions à ce sujet sur meta - il ne s'agit pas vraiment de cette question en particulier.
isaacg

2
Je pense que cela aurait été un défi plus intéressant si vous ne pouviez pas utiliser les fonctions de tri intégrées.
Glen O

Réponses:


49

GolfScript, 1 octet

$

Oui, seulement 1 octet.

Essayez-le ici.


4
Marqué comme correct car personne ne peut battre 1 octet.

9
@Kslkgh En théorie, peut-être que quelqu'un peut trouver un langage qui peut le faire en 0 octet?
jimmy23013

2
Je dirais que cela échoue pour "Bonjour"
James Webster

3
Semble rompre pour quoi que ce soit avec une capitale, mais devinez que cela n'a jamais été spécifié
Lain

1
Les capitales ne cassent pas le code. Il trie d'abord les majuscules puis les minuscules. ie cbaCBAfed -> ABCabcdef
Mully

25

C (avec x86), 61 octets

s[];main(){qsort(s,read(0,s,99),1,"YXZQQQ\x8a\x00*\x02\x0f\xbe\xc0\xc3");puts(s);}

Cette chaîne contient des octets bruts, pas des \x..codes réels , et c'est un rappel de code machine brut transmis à qsort. Fonctionne uniquement sur x86:

59         pop   ecx
58         pop   eax
5a         pop   edx
51         push  ecx
51         push  ecx
51         push  ecx
8a 00      mov   al,  BYTE PTR [eax]
2a 02      sub   al,  BYTE PTR [edx]
0f be c0   movsx eax, al
c3         ret

Ce qui est essentiellement:

int func(char *a, char *b) { return *a - *b; }

Voir p6-7 de cette brochure en japonais de shinh .


Ce n'est pas un langage C générique, car il cible une architecture spécifique. Cela devrait être spécifié dans la rubrique
edc65


19

Bloqué, 5 octets

Je peux enfin utiliser ma langue, Stuck ! :RÉ

s$""j

Cela prend une entrée via stdin, trie, joint et imprime implicitement. Cela m'a cependant donné quelques idées de changements.

Edit: Oh wow, quelqu'un a déjà posté et m'a battu dans ma propre langue!


16

GOTO ++, 432 430 octets

Site du projet GOTO ++ .

niveaugourou 0
s=ENTRETONTEXTE()
§2 a=LeCaracNumero()&s *(1)
n=*(1)
costaud i=*(2)/&i infeg NombreDeLettres(&s)/i=+*(1)
b=LeCaracNumero()&s &i
GOTONULPOURLESNULS %1 }&b inf &a{
a=&b
n=&i
§1 faiblard
GOTOPRINTDUTEXTE()&a
t=PrendsUnMorceau()&s *(0) &n
u=PrendsUnMorceau()&s }&n+*(1){ *(0)
e=BOITEAPINGOUINS()&t &u
s=Marijuana()&e «»
GOTONONNULPOURLESNULS %3 }NombreDeLettres(&s) eg *(1){
GOTOPASMALIN %2
§3 GOTOPRINTDUTEXTE()&s

Je ne sais pas pourquoi je me suis infligé cela, mais je l'ai fait


13

gs2, 1 octet

/

Identique à la réponse GolfScript, mais gs2 utilise un opérateur différent pour le tri.


10

Perl, 18 octets

print sort<>=~/./g

Merci à Dom Hastings de m'avoir aidé à économiser 3 octets.


vous pouvez économiser quelques octets en utilisant un /./glieu de split'',: print sort<>=~/./g!
Dom Hastings

Avec -nE, vous pouvez le faire say sort/./g.
Dennis

7

Haskell, 35 octets

import Data.List;main=interact sort



6

C #, 114 110 caractères

Prend l'entrée d'un argument de ligne de commande. Pas un programme très court, mais bon ... c'est C #. : P

namespace System.Linq{class P{static void Main(string[]a){Console.Write(string.Concat(a[0].OrderBy(x=>x)));}}}

Merci à Abbas d'avoir économisé 4 octets!


1
Vous pouvez enregistrer 4 caractères en utilisant Writeau lieu de WriteLine. ;)
Abbas

@Abbas Merci! Totalement manqué celui-là; p
ProgramFOX

6

Brainfuck, 40 octets

,[>>+>>,]<<[[<<]>>[-[<]>>[.<<->]>+>>]<<]

Cela utilise l' algorithme de tri de comptage , ce qui en fait une solution O (n) .

Le code nécessite une bande infinie à gauche ou enveloppante de cellules 8 bits. Essayez-le en ligne!

Comment ça fonctionne

,          Read a char from STDIN.
[          While the byte under the pointer (last read char) is non-zero:
  >>+        Move the pointer two steps to the right and increment.
  >>,        Move the pointer two steps to the right and read a char.
]
<<         Move the pointer two steps to the left.

           If the input was "sort", the tape now contains the following:
           0 0 115 0 1 0 111 0 1 0 114 0 1 0 116 0 1 0 0
                                                   ^

[          While the byte under the pointer is non-zero:
  [<<]       Advance two steps to the left until a null byte is encountered.
  >>         Advance two steps to the right.

             This will place the pointer on the first input character.

  [          While the byte under the pointer is non-zero:
    -          Decrement.
    [<]        Move the pointer to the left until a null byte is encountered.
    >>         Move the pointer two steps to the right.

               If the decremented character is non-zero, [<] will move to the
               null byte before it, so >> brings the pointer to the null byte
               after it. If the decremented character is zero, [<] is a no-op, so
               >> advances two steps to the right, to a non-zero byte.

    [          While the byte under the pointer is non-zero:
      .          Print the char under the pointer.
      <<-        Move the pointer two steps to the left and decrement.
      >          Move the pointer to the right.
    ]

               If the decremented character gave zero, this will print the value
               of the accumulator after it, and decrement the character once more
               to make it non-zero, then place the pointer to the right of the
               character, thus exiting the loop.

    >+         Move the pointer to the right and increment.

               This increments the accumulator each time an input character is
               decremented.

    >>         Move the pointer two steps to the right.

               This moves the pointer to the next character.
  ]
  <<         Move the pointer two steps to the left.

             This moves the pointer to the accumulator of the last character.
]

             After 255, th accumulator wraps around to 0, and the loop ends.

5

CJam, 2 octets

l$

Lit une ligne de input ( l) et la trie ( $).


4

Python 3, 31 octets

print("".join(sorted(input())))

Cela me ressemble à 29 octets
Blue

@muddyfish c'est 31 caractères, quand j'ai compté :)
Kamehameha

4

Coreutils, 24 23

fold -w1|sort|tr -d \\n


4

Java 8, 119 octets

Ceci n'est fondamentalement compétitif qu'avec la réponse C #, parce que, bien, Java.

(Au moins, cela bat GOTO ++. Pas vraiment un exploit ...)

class C{public static void main(String[]s){s=s[0].split("");java.util.Arrays.sort(s);System.out.print("".join("",s));}}

Merci à ProgramFOX pour avoir sauvé 1 octet, rink.attendant pour avoir sauvé 2 octets.


Vous pouvez enregistrer un caractère en supprimant l'espace entre String[]et s.
ProgramFOX

Oh, j'ai oublié ça. Maintenant, mon nombre d'octets est un joli nombre carré. Merci!
TheMadHaberdasher

Je pense que vous pouvez utiliser à la System.out.printplace deprintln
rink.attendant.6

Je vous remercie! C'est ma première tentative de code golf, donc je dois encore apprendre des trucs comme ça.
TheMadHaberdasher

Vous pouvez enregistrer 12 caractères avecpublic static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias


3

JavaScript (ES6), 32 octets

La démo ne fonctionne que dans Firefox et Edge au moment de la rédaction, car Chrome / Opera ne prend pas en charge ES6 par défaut:

Edit: Je n'ai pas regardé les réponses avant de poster mais maintenant je me rends compte que c'est à peu près exactement la même que celle de NinjaBearMonkey .

f=x=>alert([...x].sort().join``)
<form action=# onsubmit='f(document.getElementById("I").value);return false;'>
  <input type=text pattern=\w+ id=I>
  <button type=submit>Sort letters</button>
</form>


2

SWI-Prolog, 34 octets

a(X):-msort(X,Y),writef("%s",[Y]).

Appelé comme tel:a(`this`).


2

Scala, 21 octets

print(args(0).sorted)

Exécuter à partir de l'exemple de ligne de commande:

$ scala -e "print(args(0).sorted)" this
hist


2

Julia, 21 octets

s->join(sort([s...]))

Et pour le plaisir, voici comment vous pouvez le faire sans utiliser une fonction de tri intégrée, pour 53 octets:

f=s->s>""?(k=indmax(s);f(s[k+1:end]s[1:k-1])s[k:k]):s

2

JavaScript, 34 octets

alert([...prompt()].sort().join``)

La raison pour laquelle cela est si long est que JavaScript ne peut trier que les tableaux, de sorte que la chaîne doit être divisée en un tableau, triée, puis rejointe en une chaîne. Ceci est ECMAScript 6; l'équivalent dans ES5 est:

alert(prompt().split('').sort().join(''))

Devrait spécifier EcmaScript 6 comme il utilise ...et les chaînes de modèle
edc65

@ edc65 Vous avez raison, j'ai oublié. Terminé.
NinjaBearMonkey

1

Python 2, 33 32 octets

print`sorted(raw_input())`[2::5]

Fortement inspiré par la réponse de @ Kamehameha. Converti en python 2. Impossible de jouer au golf beaucoup plus.


1
Vous pouvez utiliser reprpour le faire descendre d'un autre octet (Maintenant, vous savez pourquoi j'ai choisi la version Python 3 de la solution: P) - print`sorted(raw_input())`[2::5](Ce sont des astuces, pas des guillemets simples)
Kamehameha

1

APL, 7 caractères

Ne fonctionne pas sur ngn-apl pour moi, mais devrait fonctionner en théorie:

X[⍋X←⍞]

lit une ligne à partir de l'entrée standard, qui est affectée à X. ⍋Xest les indices Xdont donnent un ordre croissant, et X[...]trie en fait Xpar ces indices.


1
Fonctionne sur Dyalog (version de bureau, pas TryAPL).
Alex A.

1

JavaScript, 54 octets

appeler le fichier js avec le noeud

console.log(process.argv[2].split('').sort().join(''))


1

Nim, 102 101 79 73 octets

let s=stdin.readAll
for i in 1..'~':
 for j in s:(if i==j:stdout.write j)

J'apprends toujours Nim et je travaille des tours de golf. Apparemment, il vaut mieux ne pas utiliser la fonction intégrée sort, ce qui nécessiterait beaucoup d'importations (merci @Mauris)


let s=stdin.readAll;for i in 1..'~':(for j in s:(if i==j:echo j))est de 65 octets.
Lynn

@Mauris Wow, je ne pensais pas que ne pas utiliser le tri intégré serait plus court! Seul problème cependant - existe-t-il un moyen de se echopasser de la nouvelle ligne de fuite?
Sp3000

Oh, oups, bien sûr. stdout.write jsemble fonctionner et est légèrement plus courte que votre &=boucle.
Lynn

@Mauris En effet, cela semble fonctionner - merci :)
Sp3000

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.