Ký từ đó!


12

Chữ ký từ là gì?

Chữ ký của một từ là tất cả các chữ cái được sắp xếp theo thứ tự - chữ ký của this, histhitslà tất cả hist.

Các thách thức

Viết chương trình chương trình nên yêu cầu đầu vào, sau đó in ra chữ ký của từ đó. Vì vậy, một chương trình ví dụ chạy có thể trông như thế này:

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

Không có tương tác cần thiết, miễn là nó cần một đầu vào và in chữ ký, nó là OK.

Chấm điểm

Chương trình có số byte nhỏ nhất sẽ thắng!

Bảng xếp hạng

Dưới đây là một Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:

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

Thử thách kết thúc!

CHIẾN THẮNG : jimmy23013


3
Chúng ta không phải in câu Give me a string:The signature signature of 'this' isphải không? Chúng ta chỉ có thể lấy đầu vào trực tiếp và in kết quả?
Gây tử vong

4
Chữ trùng lặp thì sao? ví dụ là chữ ký của broom bmoorhay bmor?
samgak

3
@isaacg sao bạn
Tim

3
@Tim Tôi không nghĩ chúng ta nên có những thử thách đơn giản như vậy. Tôi sẽ hỏi về nó trên meta - cụ thể không phải là về câu hỏi này.
isaacg

2
Tôi nghĩ rằng đây sẽ là một thử thách thú vị hơn nếu bạn không thể sử dụng các chức năng sắp xếp tích hợp.
Glen O

Câu trả lời:


49

GolfScript, 1 byte

$

Có, chỉ có 1 byte.

Hãy thử nó ở đây.


4
Được đánh dấu là chính xác vì không ai có thể đánh bại 1 byte.

9
@Kslkgh Về lý thuyết, có lẽ ai đó có thể tìm thấy một ngôn ngữ có thể làm điều đó trong 0 byte?
jimmy23013

2
Tôi sẽ nói rằng điều này không thành công cho "Xin chào"
James Webster

3
Có vẻ như muốn phá vỡ bất cứ thứ gì có vốn, nhưng đoán nó không bao giờ được chỉ định
Lain

1
Thủ đô không phá vỡ mã. Nó đầu tiên sắp xếp thủ đô sau đó viết thường. tức là cbaCBAfed -> ABCabcdef
Mully

25

C (với x86), 61 byte

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

Chuỗi đó chứa các byte thô, không phải \x..mã thực tế và đó là một cuộc gọi lại mã máy thô được chuyển đến qsort. Chỉ hoạt động trên 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

Về cơ bản là:

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

Xem p6-7 của cuốn sách nhỏ này bằng tiếng Nhật của shinh .


Đây không phải là ngôn ngữ C chung chung, vì nó nhắm đến một kiến ​​trúc cụ thể. Điều đó nên được chỉ định trong tiêu đề
edc65

20

Bị kẹt, 4 byte

sc$d

Ngôn ngữ này đã được ghi nhận trên wiki chỉ ngày hôm qua! Mmm, esolang tươi.


1
Làm tốt lắm! :)
Kade

19

Bị kẹt, 5 byte

Cuối cùng tôi cũng được sử dụng ngôn ngữ của mình, Stuck ! : D

s$""j

Điều này có một đầu vào thông qua stdin, sắp xếp, tham gia và in ngầm. Điều này đã cho tôi một số ý tưởng cho những thay đổi mặc dù.

Chỉnh sửa: Oh wow, ai đó đã đăng và đánh tôi bằng ngôn ngữ của riêng tôi!


16

GOTO ++, 432 430 byte

Trang web dự án 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

Không chắc tại sao tôi lại gây ra điều này cho chính mình, nhưng tôi đã làm


13

gs2, 1 byte

/

Tương tự như câu trả lời GolfScript, nhưng GS2 sử dụng một nhà điều hành khác nhau để phân loại.


10

Perl, 18 byte

print sort<>=~/./g

Cảm ơn Dom Hastings đã giúp tôi tiết kiệm 3 byte.


bạn có thể lưu một vài byte bằng cách sử dụng /./gthay vì split'',: print sort<>=~/./g!
Dom Hastings

Với -nE, bạn có thể làm say sort/./g.
Dennis

7

Haskell, 35 byte

import Data.List;main=interact sort



6

C #, 114 110 ký tự

Lấy đầu vào từ một đối số dòng lệnh. Không phải là một chương trình rất ngắn, nhưng ... đó là C #. : P

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

Cảm ơn Abbas vì đã tiết kiệm 4 byte!


1
Bạn có thể lưu 4 ký tự bằng cách sử dụng Writethay vì WriteLine. ;)
Abbas

@ Abbas Cảm ơn! Hoàn toàn bỏ lỡ cái đó; p
Chương trìnhFOX

6

Brainfuck, 40 byte

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

Cái này sử dụng thuật toán sắp xếp đếm , làm cho nó trở thành một giải pháp O (n) .

Mã này yêu cầu một cuộn băng vô hạn hoặc trái 8 ô. Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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

l$

Đọc một dòng đầu vào ( l) và sắp xếp nó ( $).


4

Python 3, 31 byte

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

Nó trông giống như 29 byte đối với tôi
Blue

@muddyfish là 31 ký tự, khi tôi đếm :)
Kamehameha



4

Java 8, 119 byte

Điều này về cơ bản chỉ cạnh tranh với câu trả lời C #, bởi vì, tốt, Java.

(Ít nhất điều này đánh bại GOTO ++. Không thực sự là một thành tựu ...)

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

Cảm ơn ProgramFOX đã lưu 1 byte, rink.attguard để lưu 2 byte.


Bạn có thể lưu một char bằng cách xóa khoảng trắng giữa String[]s.
Chương trìnhFOX

Ồ, tôi quên mất điều đó. Bây giờ số byte của tôi là một số vuông đẹp. Cảm ơn!
TheMadHaberdasher

Tôi nghĩ bạn có thể sử dụng System.out.printthay vìprintln
rink.attguard.6

Cảm ơn bạn! Đây là nỗ lực đầu tiên của tôi tại môn đánh gôn, vì vậy tôi vẫn phải học những thứ như thế.
TheMadHaberdasher 19/08/2015

Bạn có thể lưu 12 ký tự vớipublic static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias


3

JavaScript (ES6), 32 byte

Bản trình diễn chỉ hoạt động trong Firefox và Edge tại thời điểm viết bài, vì Chrome / Opera không hỗ trợ ES6 theo mặc định:

Chỉnh sửa: Tôi đã không nhìn vào các câu trả lời trước khi đăng nhưng bây giờ tôi nhận ra nó khá giống với câu trả lời của 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 byte

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

Được gọi như vậy:a(`this`).


2

Scala, 21 byte

print(args(0).sorted)

chạy từ ví dụ dòng lệnh:

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


2

Julia, 21 byte

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

Và để giải trí, đây là cách bạn có thể làm điều đó mà không cần sử dụng hàm sắp xếp sẵn có, cho 53 byte:

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

2

JavaScript, 34 byte

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

Lý do điều này quá dài là vì JavaScript chỉ có thể sắp xếp các mảng, do đó, chuỗi phải được chia thành một mảng, được sắp xếp và sau đó nối lại thành một chuỗi. Đây là ECMAScript 6; tương đương trong ES5 là:

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

Nên chỉ định EcmaScript 6 khi sử dụng ...và chuỗi mẫu
edc65

@ edc65 Bạn nói đúng, tôi quên mất. Làm xong.
NinjaBearMonkey

1

Python 2, 33 32 byte

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.