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

Gemeinschaft
quelle
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.

jimmy23013
quelle
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 .

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

Feststecken, 4 Bytes

sc$d

Diese Sprache wurde erst gestern im Wiki dokumentiert! Mmm, frische Esolangs.

Lynn
quelle
1
Schön gemacht! :)
Kade
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!

Kade
quelle
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

Tödlich
quelle
13

gs2, 1 byte

/

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

Lynn
quelle
10

Perl, 18 Bytes

print sort<>=~/./g

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

Samgak
quelle
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
Lynn
quelle
6

J, 3 Bytes

/:~

Beispielsweise: /:~'this'

Tödlich
quelle
6

Pyth, 2 Bytes

Sw

DEMO HIER.

Einzelheiten-

S - for sorting
w - Python 3's input()
Kamehameha
quelle
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!

ProgramFOX
quelle
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.
Dennis
quelle
5

CJam, 2 Bytes

l$

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

Lynn
quelle
4

Python 3, 31 Bytes

print("".join(sorted(input())))
Kamehameha
quelle
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
Thor
quelle
4

Ruby, 17 Bytes

$><<$<.chars.sort
Lynn
quelle
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.

TheMadHaberdasher
quelle
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
4

Strauß, 2 Bytes

G$

In Ostrich wird G eine Eingabezeile von STDIN gelesen und $sortiert.

Alex A.
quelle
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>

rink.attendant.6
quelle
2

SWI-Prolog, 34 Bytes

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

Als solche bezeichnet:a(`this`).

Tödlich
quelle
2

Scala, 21 Bytes

print(args(0).sorted)

Führen Sie aus der Befehlszeile Beispiel:

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

Powershell, 44 37 Bytes

-join((Read-Host).ToCharArray()|sort)
Stephan Schinkel
quelle
auch +1 für Powershell, aber ich beatcha :)
Nacht - Reinstate Monica
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
Glen O
quelle
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(''))
NinjaBearMonkey
quelle
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.

Blau
quelle
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.

Lynn
quelle
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(''))
Marcel
quelle
1

Verarbeitung, 40 Bytes

print(join(sort(args[0].split("")),""));
Kevin Workman
quelle
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)

Sp3000
quelle
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
1

PowerShell, 27 Byte

%{([char[]]$_|sort)-join''}
Nacht - Wiedereinstellung von Monica
quelle
Gut gemacht mit Pipeline-Eingaben.
AdmBorkBork