그 단어에 서명하십시오!


12

단어 서명이란 무엇입니까?

단어의 서명은 그것의 모든 문자 순서에 넣어이다 -의 서명 this, histhits모두 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권리를? 입력을 직접 받아 결과를 인쇄 할 수 있습니까?
Fatalize

4
중복 문자는 어떻습니까? 예를 들어 broom bmoor또는 의 서명 bmor인가?
samgak

3
@isaacg 왜 당신입니까?
Tim

3
@Tim 저는 우리가 이처럼 간단한 도전을해야한다고 생각하지 않습니다. 메타에 대해 물어볼 것입니다. 특히이 질문에 관한 것은 아닙니다.
isaacg 2016 년

2
내장 정렬 기능을 사용할 수 없다면 이것이 더 흥미로운 도전이라고 생각합니다.
Glen O

답변:


49

GolfScript, 1 바이트

$

예, 1 바이트 만 가능합니다.

여기에서 시도하십시오.


4
아무도 1 바이트를 이길 수 없으므로 올바른 것으로 표시됩니다.

9
@Kslkgh 이론적으로 누군가가 0 바이트로 언어를 찾을 수 있습니까?
jimmy23013 년

2
나는 이것이 "Hello"에 실패한다고 말하고 싶다
James Webster

3
자본으로 무언가를 깰 것으로 보이지만 결코 지정되지 않았을 것입니다
Lain

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
잘 했어요! :)
Kade

19

멈춤, 5 바이트

나는 결국 내 언어를 사용하는 얻을 빨려 ! :디

s$""j

이것은 stdin을 통해 입력을 취하고 정렬하고 결합하며 암시 적으로 인쇄합니다. 이것은 나에게 변화에 대한 아이디어를 주었다.

편집 : 오 와우, 누군가가 이미 게시하고 내 언어로 나를 이길!


16

GOTO ++, 432430 바이트

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

펄, 18 바이트

print sort<>=~/./g

3 바이트 절약에 도움을 준 Dom Hastings에게 감사드립니다.


당신은 사용하여 몇 바이트를 저장할 수 있습니다 /./g대신을 split'',: print sort<>=~/./g!
Dom Hastings

으로는 -nE, 당신은 할 수 있습니다 say sort/./g.
Dennis

7

하스켈, 35 바이트

import Data.List;main=interact sort

6

J, 3 바이트

/:~

예를 들면 다음과 같습니다. /:~'this'



6

C #, 114110

명령 행 인수에서 입력을받습니다. 아주 짧은 프로그램은 아니지만 C #입니다. :피

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

@Abbas 감사합니다! 완전히 놓친 하나, 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

파이썬 3, 31 바이트

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

그것은 29 바이트처럼 보인다
Blue

@muddyfish : 내가 계산했을 때 그것은 31 문자입니다 :)
Kamehameha

4

코어 유틸리티, 24 23

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

4

루비, 17 바이트

$><<$<.chars.sort

4

자바 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[]와 사이의 공백을 제거하여 하나의 문자를 저장할 수 있습니다 s.
ProgramFOX

아, 잊어 버렸습니다. 이제 내 바이트 수는 좋은 제곱 수입니다. 감사!
TheMadHaberdasher

나는 당신이 사용할 수 있다고 생각 System.out.print대신에println
rink.attendant.6

감사합니다! 이것은 코드 골프에 대한 첫 번째 시도이므로 여전히 그런 것들을 배워야합니다.
TheMadHaberdasher

당신은에 12 개 문자를 절약 할 수public static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias


3

자바 스크립트 (ES6), 32 바이트

Chrome / Opera는 기본적으로 ES6을 지원하지 않으므로 데모는 글을 쓰는 시점에 Firefox 및 Edge에서만 작동합니다.

편집 : 게시하기 전에 답변을 보지 않았지만 이제는 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- 프롤로그, 34 바이트

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

다음과 같이 호출됩니다.a(`this`).


2

스칼라, 21 바이트

print(args(0).sorted)

명령 행 예제에서 실행하십시오.

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


2

줄리아, 21 바이트

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

그리고 재미있게, 내장 바이트 정렬 기능을 사용하지 않고 53 바이트를 수행하는 방법은 다음과 같습니다.

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

2

자바 스크립트, 34 바이트

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

이것이 너무 긴 이유는 JavaScript가 배열 만 정렬 할 수 있기 때문에 문자열을 배열로 분할하고 정렬 한 다음 문자열로 다시 결합해야하기 때문입니다. 이것은 ECMAScript 6입니다. ES5와 동등한 기능은 다음과 같습니다.

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

EcmaScript 6을 사용할 때 ...와 템플릿 문자열을 지정해야합니다.
edc65

@ edc65 당신 말이 맞아요 끝난.
NinjaBearMonkey

1

파이썬 2, 33 32 바이트

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

@Kamehameha의 답변에서 크게 영감을 받았습니다. 파이썬 2로 변환되었습니다. 더 이상 골프를 칠 수 없습니다.


1
repr다른 바이트를 내리는 데 사용할 수 있습니다 (이제 파이썬 3 버전의 솔루션을 선택한 이유를 알고 있습니다 : P)- print`sorted(raw_input())`[2::5](그들은 작은 따옴표가 아닌 백틱입니다)
Kamehameha

1

APL, 7 자

나를 위해 ngn-apl에서 작동하지 않지만 이론적으로 작동해야합니다.

X[⍋X←⍞]

에 지정된 표준 입력에서 행을 읽습니다 X. ⍋XX오름차순으로 나타나는 인덱스 이며 X[...]실제로 X이러한 인덱스를 기준으로 정렬 합니다.


1
Dyalog (TryAPL이 아닌 데스크탑 버전)에서 작동합니다.
Alex A.

1

자바 스크립트, 54 바이트

노드로 js 파일 호출

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


1

님, 102 (101) 79 73 바이트

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

아직도 Nim을 배우고 골프 트릭을 연습하십시오. 분명히 importin을 많이 필요로하는 builtin을 사용 하지 않는 것이 좋습니다 sort(@Mauris 덕분에)


let s=stdin.readAll;for i in 1..'~':(for j in s:(if i==j:echo j))65 바이트입니다.
Lynn

@Mauris 와우, 내장 정렬을 사용하지 않는 것이 더 짧을 것이라고 생각하지 않았습니다! 그래도 문제는 없습니다- echo후행 줄 바꿈 이 없는 방법이 있습니까?
Sp3000

물론이지 stdout.write j작동하는 것처럼 보이고 &=루프 보다 약간 짧습니다 .
Lynn

@Mauris 실제로, 그것은 작동하는 것 같습니다-감사합니다 :)
Sp3000

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.