Unterschreib das Wort!


12

Was ist eine Wortsignatur?

Die Unterschrift eines Wortes sind alle von ihm Briefe in Ordnung zu bringen - die Unterschriften this, histund hitsalle sind hist.

Die Herausforderung

Schreiben Sie ein Programm. Das Programm sollte nach einer Eingabe fragen und dann die Signatur dieses Wortes ausdrucken. Ein Beispiel für einen Programmlauf könnte also so aussehen:

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

Es ist keine Interaktion erforderlich. Solange eine Eingabe erfolgt und die Signatur gedruckt wird, ist dies in Ordnung.

Wertung

Das Programm mit der kleinsten Byteanzahl gewinnt!

Bestenliste

Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu erstellen.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

# Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

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

Herausgefordert Fertig!

GEWINNER : jimmy23013


3
Wir müssen die Sätze nicht ausdrucken Give me a string:und The signature signature of 'this' isrichtig? Können wir einfach die Eingabe direkt übernehmen und das Ergebnis ausdrucken?
Fatalize

4
Was ist mit doppelten Buchstaben? zB ist die Unterschrift von broom bmooroder bmor?
Samgak

3
@isaacg warum bist du?
Tim

3
@ Tim Ich denke nicht, dass wir so einfache Herausforderungen haben sollten. Ich werde es auf Meta fragen - es geht nicht wirklich um diese Frage im Besonderen.
isaacg

2
Ich denke, dies wäre eine interessantere Herausforderung gewesen, wenn Sie keine integrierten Sortierfunktionen verwenden könnten.
Glen O

Antworten:


49

GolfScript, 1 Byte

$

Ja, nur 1 Byte.

Probieren Sie es hier aus.


4
Als korrekt markiert, da niemand 1 Byte schlagen kann.

9
@Kslkgh Theoretisch kann vielleicht jemand eine Sprache finden, die das in 0 Bytes kann?
Jimmy23013

2
Ich würde sagen, dass dies für "Hallo"
James Webster

3
Scheint für alles mit einem Kapital zu brechen, aber schätze, es wurde nie angegeben
Lain

1
Großbuchstaben brechen den Code nicht. Es sortiert zuerst die Groß- und Kleinschreibung. dh cbaCBAfed -> ABCabcdef
Mully

25

C (mit x86), 61 Bytes

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

Diese Zeichenfolge enthält unformatierte Bytes, keine tatsächlichen \x..Codes, und es handelt sich um einen unformatierten Maschinencode-Rückruf , der an übergeben wird qsort. Funktioniert nur auf 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

Welches ist im Wesentlichen:

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

Siehe Seite 6-7 dieser Broschüre auf Japanisch von Shinh .


Dies ist keine generische C-Sprache, da sie auf eine bestimmte Architektur abzielt. Das sollte in der Überschrift
edc65 21.08.15


19

Feststecken, 5 Bytes

Endlich kann ich meine Sprache benutzen, Stuck ! : D

s$""j

Dies nimmt eine Eingabe über stdin entgegen, sortiert, verknüpft und druckt implizit. Dies gab mir jedoch einige Ideen für Änderungen.

Edit: Oh wow, jemand hat schon gepostet und mich in meiner eigenen Sprache geschlagen!


16

GOTO ++, 432 430 Bytes

GOTO ++ Projektseite .

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

Ich bin mir nicht sicher, warum ich mir das zugefügt habe, aber ich habe es getan


13

gs2, 1 byte

/

Wie die GolfScript-Antwort, aber gs2 verwendet einen anderen Operator zum Sortieren.


10

Perl, 18 Bytes

print sort<>=~/./g

Vielen Dank an Dom Hastings, der mir geholfen hat, 3 Bytes zu sparen.


Sie können ein paar Bytes mit einem speichern /./gstatt split'',: print sort<>=~/./g!
Dom Hastings

Mit -nEkönnen Sie tun say sort/./g.
Dennis

7

Haskell, 35 Bytes

import Data.List;main=interact sort



6

C #, 114 110 Zeichen

Übernimmt die Eingabe von einem Befehlszeilenargument. Kein sehr kurzes Programm, aber gut ... es ist C #. : P

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

Vielen Dank an Abbas für das Speichern von 4 Bytes!


1
Sie können 4 Zeichen speichern, indem Sie Writeanstelle von verwenden WriteLine. ;)
Abbas

@Abbas Danke! Habe das total verpasst; p
ProgramFOX

6

Brainfuck, 40 Bytes

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

Dies verwendet den Zählsortierungsalgorithmus , der dies zu einer O (n) -Lösung macht.

Der Code erfordert ein Links-Unendliches oder ein Umhüllungsband mit 8-Bit-Zellen. Probieren Sie es online!

Wie es funktioniert

,          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 Bytes

l$

Liest eine Eingabezeile ( l) und sortiert sie ( $).


4

Python 3, 31 Bytes

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

Für mich sind das 29 Bytes
Blue

@ Schlammfisch es ist 31 Zeichen, als ich gezählt habe :)
Kamehameha

4

Coreutils, 24, 23

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


4

Java 8, 119 Bytes

Dies ist im Grunde nur mit der C # -Antwort konkurrierend, weil nun, Java.

(Zumindest schlägt dies GOTO ++. Nicht wirklich eine Leistung ...)

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

Dank ProgramFOX zum Speichern von 1 Byte, rink.attendant zum Speichern von 2 Byte.


Sie können ein Zeichen sparen, indem Sie das Leerzeichen zwischen String[]und entfernen s.
ProgramFOX

Oh, das habe ich vergessen. Jetzt ist meine Byteanzahl eine schöne quadratische Zahl. Vielen Dank!
TheMadHaberdasher

Ich denke, Sie können System.out.printstattprintln
rink.attendant.6

Vielen Dank! Dies ist mein erster Versuch, Code Golf zu spielen, also muss ich noch so etwas lernen.
TheMadHaberdasher

Sie könnten 12 Zeichen mit public static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
speichern


3

JavaScript (ES6), 32 Byte

Demo funktioniert zum Zeitpunkt des Schreibens nur in Firefox und Edge, da Chrome / Opera ES6 standardmäßig nicht unterstützt:

Bearbeiten: Ich habe mir die Antworten vor dem Posten nicht angesehen, aber jetzt ist mir klar, dass es genau dasselbe ist wie das von 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 Bytes

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

Als solche bezeichnet:a(`this`).


2

Scala, 21 Bytes

print(args(0).sorted)

Führen Sie aus der Befehlszeile Beispiel:

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


2

Julia, 21 Bytes

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

Und zum Spaß, hier ist, wie Sie es tun können, ohne eine eingebaute Sortierfunktion für 53 Bytes zu verwenden:

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

2

JavaScript, 34 Bytes

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

Der Grund dafür ist, dass JavaScript nur Arrays sortieren kann. Daher muss die Zeichenfolge in ein Array aufgeteilt, sortiert und dann wieder zu einer Zeichenfolge zusammengefügt werden. Dies ist ECMAScript 6; Das Äquivalent in ES5 ist:

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

Sollte EcmaScript 6 als Verwendungszweck angeben und Zeichenfolgen als ...Vorlage verwenden
edc65

@ edc65 Du hast recht, ich habe es vergessen. Erledigt.
NinjaBearMonkey

1

Python 2, 33 32 Bytes

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

Stark inspiriert von der Antwort von @ Kamehameha. Konvertiert in Python 2. Kann nicht viel mehr Golf spielen.


1
Sie können es verwenden repr, um ein weiteres Byte nach unten zu bringen (Jetzt wissen Sie, warum ich Python 3-Version der Lösung gewählt habe: P) - print`sorted(raw_input())`[2::5](Dies sind Backticks, keine einfachen Anführungszeichen)
Kamehameha

1

APL, 7 Zeichen

Funktioniert bei mir nicht auf ngn-apl, sollte aber theoretisch funktionieren:

X[⍋X←⍞]

Liest eine Zeile aus der Standardeingabe, die zugewiesen ist X. ⍋Xsind die Indizes, Xderen Reihenfolge aufsteigend ist und die X[...]tatsächlich Xnach diesen Indizes sortiert sind.


1
Funktioniert mit Dyalog (Desktop-Version, nicht TryAPL).
Alex A.

1

JavaScript, 54 Byte

js Datei mit Node aufrufen

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


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)

Ich lerne immer noch Nim und arbeite Golf-Tricks aus. Anscheinend ist es besser , das eingebaute nicht zu verwenden sort, was viele Importe erfordern würde (danke @ Mauris)


let s=stdin.readAll;for i in 1..'~':(for j in s:(if i==j:echo j))beträgt 65 Bytes.
Lynn

@ Mauris Wow, ich hätte nicht gedacht, dass die Verwendung der eingebauten Sortierung kürzer wäre! echoEinziges Problem - gibt es einen Weg ohne den nachgestellten Zeilenumbruch?
Sp3000,

Oh, hoppla, natürlich. stdout.write jscheint zu funktionieren und ist etwas kürzer als deine &=Schleife.
Lynn

@ Mauris In der Tat scheint es zu funktionieren - danke :)
Sp3000

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.