¡Firma esa palabra!

12

¿Qué es una firma de Word?

La firma de una palabra son todas sus letras ordenadas: las firmas de this, histy hitsson todas hist.

El reto

Escribir un programa programa debe pedir una entrada, luego imprimir la firma de esa palabra. Entonces, un ejemplo de ejecución del programa podría verse así:

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

No se requiere interacción, siempre y cuando tome una entrada e imprima la firma, está bien.

Puntuación

¡El programa con el recuento de bytes más pequeño gana!

Tabla de clasificación

Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.

Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:

# Language Name, N bytes

¿Dónde Nestá el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:

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

Desafiado terminado!

GANADOR: jimmy23013

Comunidad
fuente
3
No tenemos que imprimir las oraciones Give me a string:y The signature signature of 'this' is¿verdad? ¿Podemos tomar la entrada directamente e imprimir el resultado?
Fatalize
44
¿Qué pasa con las letras duplicadas? por ejemplo, ¿es la firma de broom bmooro bmor?
samgak
3
@isaacg ¿por qué estás?
Tim
3
@Tim No creo que debamos tener desafíos que sean tan directos. Lo preguntaré sobre meta, no se trata realmente de esta pregunta en particular.
isaacg
2
Creo que este habría sido un desafío más interesante si no pudieras usar las funciones de clasificación incorporadas.
Glen O

Respuestas:

49

GolfScript, 1 byte

$

Sí, solo 1 byte.

Pruébalo aquí.

jimmy23013
fuente
44
Marcado como correcto porque nadie puede vencer 1 byte.
99
@Kslkgh En teoría, ¿tal vez alguien pueda encontrar un idioma que pueda hacerlo en 0 bytes?
jimmy23013
2
Yo diría que esto falla para "Hola"
James Webster
3
Parece romper para cualquier cosa con una capital, pero supongo que nunca se especificó
Lain
1
Las capitales no rompen el código. Primero ordena las mayúsculas y luego las minúsculas. es decir, cbaCBAfed -> ABCabcdef
Mully
25

C (con x86), 61 bytes

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

Esa cadena contiene bytes sin procesar, no \x..códigos reales , y es una devolución de llamada de código de máquina sin procesar que se pasa qsort. Funciona solo en 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

Que es esencialmente:

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

Ver p6-7 de este folleto en japonés por shinh .

Lynn
fuente
Este no es un lenguaje C genérico, ya que apunta a una arquitectura específica. Eso debería especificarse en el encabezado
edc65
20

Atascado, 4 bytes

sc$d

¡Este idioma fue documentado en la wiki ayer mismo! Mmm, esolangs frescos.

Lynn
fuente
1
¡Bien hecho! :)
Kade
19

Atascado, 5 Bytes

¡Finalmente puedo usar mi idioma, Stuck ! :RE

s$""j

Esto toma una entrada a través de stdin, ordena, une e imprime implícitamente. Sin embargo, esto me dio algunas ideas para los cambios.

Editar: ¡Oh wow, alguien ya ha publicado y me ganó en mi propio idioma!

Kade
fuente
16

GOTO ++, 432 430 bytes

Sitio del proyecto 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

No estoy seguro de por qué me hice esto, pero lo hice

Fatalizar
fuente
13

gs2, 1 byte

/

Igual que la respuesta de GolfScript, pero gs2 utiliza un operador diferente para ordenar.

Lynn
fuente
10

Perl, 18 bytes

print sort<>=~/./g

Gracias a Dom Hastings por ayudarme a ahorrar 3 bytes.

samgak
fuente
usted puede ahorrar unos pocos bytes utilizando un /./glugar de split'',: print sort<>=~/./g!
Dom Hastings
Con -nE, puedes hacerlo say sort/./g.
Dennis
7

Haskell, 35 bytes

import Data.List;main=interact sort
Lynn
fuente
6

J, 3 bytes

/:~

Por ejemplo: /:~'this'

Fatalizar
fuente
6

Pyth, 2 bytes

Sw

DEMO AQUÍ.

Detalles-

S - for sorting
w - Python 3's input()
Kamehameha
fuente
6

C #, 114 110 caracteres

Toma información de un argumento de línea de comando. No es un programa muy corto, pero bueno ... es C #. :PAG

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

¡Gracias a Abbas por guardar 4 bytes!

ProgramFOX
fuente
1
Puede guardar 4 caracteres utilizando en Writelugar de WriteLine. ;)
Abbas
@Abbas ¡Gracias! La perdí por completo; p
ProgramFOX
6

Brainfuck, 40 bytes

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

Esto utiliza el algoritmo de ordenación de conteo , que lo convierte en una solución O (n) .

El código requiere una cinta de envoltura infinita izquierda o de celdas de 8 bits. Pruébalo en línea!

Cómo funciona

,          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.
Dennis
fuente
5

CJam, 2 bytes

l$

Lee una línea de entrada ( l) y la ordena ( $).

Lynn
fuente
4

Python 3, 31 bytes

print("".join(sorted(input())))
Kamehameha
fuente
Que se parece a 29 bytes para mí
Azul
@muddyfish son 31 caracteres, cuando conté :)
Kamehameha
4

Coreutils, 24 23

fold -w1|sort|tr -d \\n
Thor
fuente
4

Ruby, 17 bytes

$><<$<.chars.sort
Lynn
fuente
4

Java 8, 119 bytes

Básicamente, esto solo es competitivo con la respuesta de C #, porque, bueno, Java.

(Al menos esto supera a GOTO ++. No es realmente un logro ...)

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

Gracias a ProgramFOX por guardar 1 byte, rink.attendant por guardar 2 bytes.

TheMadHaberdasher
fuente
Puede guardar un carácter eliminando el espacio entre String[]y s.
ProgramFOX
Oh, me olvidé de eso. Ahora mi conteo de bytes es un buen número cuadrado. ¡Gracias!
TheMadHaberdasher
Creo que puedes usar en System.out.printlugar deprintln
rink.attendant.6
¡Gracias! Este es mi primer intento de golf de código, así que todavía tengo que aprender cosas así.
TheMadHaberdasher
Podrías guardar 12 caracteres conpublic static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias
4

Avestruz, 2 bytes

G$

En Avestruz G lee una línea de entrada de STDIN y la $ordena.

Alex A.
fuente
3

JavaScript (ES6), 32 bytes

La demostración solo funciona en Firefox y Edge en el momento de la escritura, ya que Chrome / Opera no admite ES6 de forma predeterminada:

Editar: no miré las respuestas antes de publicarlas, pero ahora me doy cuenta de que es casi exactamente igual a la 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>

rink.attendant.6
fuente
2

SWI-Prolog, 34 bytes

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

Llamado como tal:a(`this`).

Fatalizar
fuente
2

Scala, 21 bytes

print(args(0).sorted)

Ejecutar desde la línea de comando ejemplo:

$ scala -e "print(args(0).sorted)" this
hist
gilad hoch
fuente
2

Powershell, 44 37 Bytes

-join((Read-Host).ToCharArray()|sort)
Stephan Schinkel
fuente
también +1 para el uso de PowerShell, pero yo beatcha :)
Nacht - Reinstate Monica
2

Julia, 21 bytes

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

Y por diversión, así es como podría hacerlo sin usar una función de clasificación incorporada, para 53 bytes:

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

JavaScript, 34 bytes

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

La razón por la que esto es tan largo es que JavaScript solo puede ordenar matrices, por lo que la cadena se debe dividir en una matriz, ordenar y luego volver a unir en una cadena. Este es el ECMAScript 6; El equivalente en ES5 es:

alert(prompt().split('').sort().join(''))
NinjaOsoMono
fuente
Debería especificar EcmaScript 6 como está usando ...y cadenas de plantilla
edc65
@ edc65 Tienes razón, lo olvidé. Hecho.
NinjaBearMonkey
1

Python 2, 33 32 bytes

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

Muy inspirado por la respuesta de @ Kamehameha. Convertido a python 2. No se puede jugar mucho más al golf.

Azul
fuente
1
Puede usarlo reprpara reducirlo a otro byte (ahora ya sabe por qué elegí la versión Python 3 de la solución: P) - print`sorted(raw_input())`[2::5](Esos son backticks, no comillas simples)
Kamehameha
1

APL, 7 caracteres

No funciona en ngn-apl para mí, pero debería funcionar en teoría:

X[⍋X←⍞]

lee una línea de entrada estándar, que se asigna a X. ⍋Xson los índices los Xque producen un orden ascendente, y en X[...]realidad se clasifican Xpor estos índices.

Lynn
fuente
1
Funciona en Dyalog (versión de escritorio, no TryAPL).
Alex A.
1

JavaScript, 54 bytes

llamar al archivo js con nodo

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

Procesamiento, 40 bytes

print(join(sort(args[0].split("")),""));
Kevin Workman
fuente
1

Nim, 102 101 79 73 bytes

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

Todavía estoy aprendiendo a Nim y haciendo trucos de golf. Aparentemente, es mejor no usar el builtin sort, que requeriría muchas importaciones (gracias @Mauris)

Sp3000
fuente
let s=stdin.readAll;for i in 1..'~':(for j in s:(if i==j:echo j))es de 65 bytes.
Lynn
@Mauris Wow, ¡no pensé que no usar el tipo integrado sería más corto! Sin embargo, el único problema: ¿hay alguna forma de hacerlo echosin la nueva línea final?
Sp3000
Oh, vaya, por supuesto. stdout.write jparece funcionar, y es un poco más corto que tu &=ciclo.
Lynn
@Mauris De hecho, parece funcionar - gracias :)
Sp3000
1

PowerShell, 27 bytes

%{([char[]]$_|sort)-join''}
Nacht - Restablece a Monica
fuente
Bien hecho con la toma de entrada de tubería.
AdmBorkBork