その言葉にサインしてください!


12

ワードシグネチャとは何ですか?

単語の署名は、それのすべての文字を順番に入れている-署名のthishistそしてhitsすべてですhist

チャレンジ

プログラムを書くプログラムは入力を要求し、その単語の署名を印刷する必要があります。したがって、プログラムの実行例は次のようになります。

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

入力を受け取って署名を印刷する限り、必要な相互作用はありません。

得点

最小バイト数のプログラムが勝ちます!

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

# Language Name, N bytes

N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

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

チャレンジ終了!

勝者:jimmy23013


3
私たちは、文章印刷する必要はありませんGive me a string:し、The signature signature of 'this' is右の?入力を直接取得して結果を印刷するだけですか?
15

4
文字の重複はどうですか?たとえば、broom bmoorまたはの署名bmorですか?
samgak

3
@isaacgなぜあなたは?
ティム

3
@Timこのような簡単な課題を抱えるべきではないと思います。私はメタでそれについて尋ねる-それは実際には特にこの質問についてではありません。
isaacg

2
組み込みの並べ替え関数を使用できなかった場合、これはより興味深い課題になると思います。
グレンO

回答:


49

GolfScript、1バイト

$

はい、1バイトのみ。

ここで試してみてください。


4
誰も1バイトを破ることができないため、正しいとマークされています。

9
@Kslkgh理論的には、0バイトでそれを実行できる言語を誰かが見つけられるでしょうか?
jimmy23013

2
私はこれが「ハロー」のために失敗すると言うだろう
ジェームズウェブスター

3
資本金は何のために壊し、それが指定されていませんでした推測しているようだ
レイン

1
大文字はコードを壊しません。最初に大文字をソートし、次に小文字をソートします。すなわちcbaCBAfed-> ABCabcdef
Mully

25

C(x86を使用)、61バイト

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

その文字列には、実際の\x..コードではなく生のバイトが含まれており、渡される生のマシンコードコールバックqsortです。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

本質的には:

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

shinh による日本語のこのパンフレットの p6-7を参照してください。


これは特定のアーキテクチャを対象とするため、汎用C言語ではありません。それは見出しで指定する必要があります
-edc65

20

スタック、4バイト

sc$d

この言語は昨日ウィキに文書化されました!うーん、新鮮なエソラン。


1
よくできました!:)
カデ

19

スタック、5バイト

やっと私の言語、Stuckを使用できるようになりました!:D

s$""j

これは、stdinを介して入力を受け取り、ソートし、結合し、暗黙的に出力します。しかし、これは変更のためのいくつかのアイデアを与えてくれました。

編集:ああすごい、誰かがすでに投稿し、自分の言語で私を打ちました!


16

GOTO ++、432 430バイト

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

なぜ自分にこれを与えたのか分かりませんが、私はしました


13

gs2、1バイト

/

GolfScriptの答えと同じですが、gs2はソートに異なる演算子を使用します。


10

Perl、18バイト

print sort<>=~/./g

3バイトの節約に役立ってくれたDom Hastingsに感謝します。


あなたは使用していくつかのバイトを保存することができます/./g代わりにしますsplit'',print sort<>=~/./g
ドムヘイスティングス

-nE、できますsay sort/./g
デニス




6

C#、114 110文字

コマンドライン引数から入力を取得します。非常に短いプログラムではありませんが、まあ...それはC#です。:P

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

4バイトを節約してくれたAbbasに感謝します!


1
Write代わりにを使用して4文字を保存できますWriteLine。;)
アッバス

@Abbasありがとう!完全にその1つを逃した; p
ProgramFOX

6

Brainfuck、40バイト

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

これは、これをO(n)にするカウントソートアルゴリズムを使用します溶液。

コードには、8ビットセルの左無限またはラッピングテープが必要です。オンラインでお試しください!

使い方

,          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バイト

l$

入力行を読み取り(l)、ソートします($)。





4

Java 8、119バイト

これは基本的にC#の回答と競合しているだけです。なぜなら、Javaですから。

(少なくともこれはGOTO ++に勝ります。実際には成果ではありません...)

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

1バイトを保存してくれたProgramFOX、2バイトを保存してくれたrink.attendantに感謝します。


String[]との間のスペースを削除することにより、1つの文字を保存できますs
ProgramFOX

ああ、私はそれを忘れていました。今、私のバイトカウントはすてきな二乗数です。ありがとう!
TheMadHaberdasher

System.out.print代わりに使用できると思うprintln
-rink.attendant.6

ありがとうございました!これはコードゴルフでの私の最初の試みなので、そのようなことをまだ学ばなければなりません。
TheMadHaberdasher

public static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
-assylias


3

JavaScript(ES6)、32バイト

Chrome / OperaはデフォルトでES6をサポートしていないため、デモは執筆時点でFirefoxとEdgeでのみ機能します。

Edit: I didn't look at the answers prior to posting but now I realize it's pretty much the exact same as the one by 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]).

Called as such:a(`this`).


2

Scala, 21 bytes

print(args(0).sorted)

run from command line example:

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


2

Julia, 21 bytes

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

And for fun, here's how you might do it without using an inbuilt sorting function, for 53 bytes:

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``)

The reason this is so long is that JavaScript can only sort arrays, so the string must be split into an array, sorted, and then joined back into a string. This is ECMAScript 6; the equivalent in ES5 is:

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

Should specify EcmaScript 6 as it's using ... and template strings
edc65

@edc65 You're right, I forgot. Done.
NinjaBearMonkey

1

Python 2, 33 32 bytes

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

Heavily inspired by @Kamehameha's answer. Converted to python 2. Can't golf much more.


1
You can use repr to bring it down another byte (Now you know why I chose Python 3 version of the solution :P) - print`sorted(raw_input())`[2::5] (Those are backticks, not single quotes)
Kamehameha

1

APL, 7 characters

Doesn't work on ngn-apl for me, but should work in theory:

X[⍋X←⍞]

reads a line from standard input, which is assigned to X. ⍋X is the indices of X which yield an ascending order, and X[...] actually sorts X by these indices.


1
Works on Dyalog (desktop version, not TryAPL).
Alex A.

1

JavaScript, 54 bytes

call js file with node

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)

Still learning Nim and working out golf tricks. Apparently it's better not to use the builtin sort, which would require a lot of imports (thanks @Mauris)


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

@Mauris Wow, I didn't think that not using the builtin sort would be shorter! Only problem though - is there a way to echo without the trailing newline?
Sp3000

Oh, oops, of course. stdout.write j seems to work, and is slightly shorter than your &= loop.
Lynn

@Mauris Indeed, it seems to work - thanks :)
Sp3000

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.