Tanda tangani kata itu!


12

Apa itu Tanda Tangan Kata?

Tanda tangan sebuah kata adalah semua surat yang disusun - tanda tangan this, histdan hitssemuanya hist.

Tantangan

Menulis program program harus meminta input, lalu mencetak tanda tangan dari kata itu. Jadi contoh program yang dijalankan mungkin terlihat seperti ini:

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

Tidak ada interaksi yang diperlukan, selama dibutuhkan input dan cetakan tanda tangan, itu OK.

Mencetak gol

Program dengan jumlah byte terkecil menang!

Papan peringkat

Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.

Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:

# Language Name, N bytes

di mana Nukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:

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

Tertantang Selesai!

PEMENANG: jimmy23013


3
Kami tidak harus mencetak kalimat Give me a string:dan The signature signature of 'this' isbenar? Kami hanya dapat mengambil input secara langsung dan mencetak hasilnya?
Fatalkan

4
Bagaimana dengan surat duplikat? misalnya tanda tangan broom bmooratau bmor?
samgak

3
@isaacg kenapa kamu?
Tim

3
@Tim Saya tidak berpikir kita harus memiliki tantangan yang semudah ini. Saya akan bertanya tentang hal itu pada meta - ini tidak benar-benar tentang pertanyaan ini pada khususnya.
isaacg

2
Saya pikir ini akan menjadi tantangan yang lebih menarik jika Anda tidak dapat menggunakan fungsi penyortiran bawaan.
Glen O

Jawaban:


49

GolfScript, 1 byte

$

Ya, hanya 1 byte.

Coba di sini.


4
Ditandai sebagai benar karena tidak ada yang bisa mengalahkan 1 byte.

9
@ Kslkgh Secara teori, mungkin seseorang dapat menemukan bahasa yang dapat melakukannya dalam 0 byte?
jimmy23013

2
Saya akan mengatakan bahwa ini gagal untuk "Halo"
James Webster

3
Tampaknya untuk istirahat untuk apa pun dengan modal, tapi tebak itu tidak pernah ditentukan
Lain

1
Ibukota tidak melanggar kode. Pertama-tama mengurutkan huruf kapital kemudian huruf kecil. yaitu cbaCBAfed -> ABCabcdef
Mully

25

C (dengan x86), 61 byte

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

String yang berisi byte baku, tidak aktual \x..kode, dan itu adalah panggilan balik kode mesin mentah diteruskan ke qsort. Hanya bekerja di 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

Yang pada dasarnya adalah:

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

Lihat p6-7 dari pamflet ini dalam bahasa Jepang oleh shinh .


Ini bukan bahasa C generik, karena menargetkan arsitektur tertentu. Itu harus ditentukan dalam pos
edc65

20

Terjebak, 4 byte

sc$d

Bahasa ini didokumentasikan di wiki baru kemarin! Mmm, esolang segar.


1
Bagus sekali! :)
Kade

19

Terjebak, 5 Bytes

Saya akhirnya bisa menggunakan bahasa saya, Stuck ! : D

s$""j

Ini membutuhkan input melalui stdin, sortir, gabung, dan cetakan secara implisit. Ini memang memberi saya beberapa ide untuk perubahan.

Sunting: Oh wow, seseorang sudah memposting dan mengalahkan saya dalam bahasa saya sendiri!


16

GOTO ++, 432 430 byte

Situs proyek 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

Tidak yakin mengapa saya melakukan ini pada diri saya sendiri, tetapi saya melakukannya


13

gs2, 1 byte

/

Sama seperti jawaban GolfScript, tetapi GS2 menggunakan operator yang berbeda untuk menyortir.


10

Perl, 18 byte

print sort<>=~/./g

Terima kasih kepada Dom Hastings karena membantu saya menghemat 3 byte.


Anda dapat menyimpan beberapa byte menggunakan /./gbukannya split'',: print sort<>=~/./g!
Dom Hastings

Dengan -nE, Anda bisa melakukannya say sort/./g.
Dennis

7

Haskell, 35 byte

import Data.List;main=interact sort



6

C #, 114 110 karakter

Mengambil input dari argumen baris perintah. Bukan program yang sangat singkat, tapi yah ... ini C #. : P

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

Terima kasih kepada Abbas karena telah menghemat 4 byte!


1
Anda dapat menyimpan 4 karakter dengan menggunakan Writebukan WriteLine. ;)
Abbas

@ Albas Terima kasih! Benar-benar melewatkan yang itu; p
ProgramFOX

6

Brainfuck, 40 byte

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

Ini menggunakan algoritma penghitungan , yang menjadikan ini solusi O (n) .

Kode membutuhkan sel 8 bit tak terbatas atau pembungkus. Cobalah online!

Bagaimana itu bekerja

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

Membaca garis input ( l) dan mengurutkannya ( $).


4

Python 3, 31 Bytes

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

Itu tampak seperti 29 byte bagi saya
Biru

@muddyfish itu 31 karakter, ketika saya hitung :)
Kamehameha

4

Coreutils, 24 23

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


4

Java 8, 119 byte

Ini pada dasarnya hanya bersaing dengan jawaban C #, karena, yah, Java.

(Setidaknya ini mengalahkan GOTO ++. Bukan benar-benar prestasi ...)

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

Terima kasih kepada ProgramFOX untuk menghemat 1 byte, rink.attendant untuk menghemat 2 byte.


Anda dapat menyimpan satu char dengan menghapus spasi di antara String[]dan s.
ProgramFOX

Oh, saya lupa tentang itu. Sekarang jumlah byte saya adalah angka kuadrat yang bagus. Terima kasih!
TheMadHaberdasher

Saya pikir Anda dapat menggunakan System.out.printbukannyaprintln
rink.attendant. 6

Terima kasih! Ini adalah usaha pertama saya di kode golf, jadi saya masih harus belajar hal-hal seperti itu.
TheMadHaberdasher

Anda dapat menyimpan 12 karakter denganpublic static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias

4

Burung unta, 2 byte

G$

Di Ostrich G membaca sebaris input dari STDIN dan $mengurutkannya.


3

JavaScript (ES6), 32 byte

Demo hanya berfungsi di Firefox dan Edge pada saat penulisan, karena Chrome / Opera tidak mendukung ES6 secara default:

Sunting: Saya tidak melihat jawaban sebelum memposting tetapi sekarang saya menyadari bahwa jawabannya hampir sama persis dengan yang ada di 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]).

Disebut seperti itu:a(`this`).


2

Scala, 21 byte

print(args(0).sorted)

lari dari contoh baris perintah:

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


2

Julia, 21 byte

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

Dan untuk bersenang-senang, inilah cara Anda melakukannya tanpa menggunakan fungsi penyortiran bawaan, untuk 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``)

Alasannya begitu lama adalah JavaScript hanya dapat mengurutkan array, sehingga string harus dipisah menjadi array, diurutkan, dan kemudian bergabung kembali menjadi sebuah string. Ini adalah ECMAScript 6; setara dalam ES5 adalah:

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

Seharusnya tentukan EcmaScript 6 saat menggunakan ...dan templat string
edc65

@ edc65 Anda benar, saya lupa. Selesai
NinjaBearMonkey

1

Python 2, 33 32 byte

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

Sangat terinspirasi oleh jawaban @ Kamehameha. Dikonversi ke python 2. Tidak bisa bermain golf lebih banyak.


1
Anda dapat menggunakannya repruntuk menurunkan byte lain (Sekarang Anda tahu mengapa saya memilih versi Python 3 dari solusi: P) - print`sorted(raw_input())`[2::5](Itu adalah backticks, bukan tanda kutip tunggal)
Kamehameha

1

APL, 7 karakter

Tidak bekerja pada ngn-apl untuk saya, tetapi seharusnya bekerja secara teori:

X[⍋X←⍞]

membaca baris dari input standar, yang ditugaskan untuk X. ⍋Xadalah indeks Xyang menghasilkan urutan naik, dan X[...]sebenarnya mengurutkan Xberdasarkan indeks ini.


1
Bekerja pada Dyalog (versi desktop, bukan TryAPL).
Alex A.

1

JavaScript, 54 byte

panggil file js dengan node

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


1

Nim, 102 101 79 73 byte

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

Masih belajar Nim dan berolahraga trik golf. Tampaknya lebih baik tidak menggunakan builtin sort, yang akan membutuhkan banyak impor (terima kasih @Mauris)


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

@Mauris Wow, saya tidak berpikir bahwa tidak menggunakan jenis builtin akan lebih pendek! Satu-satunya masalah adalah - apakah ada cara untuk echotidak mengikuti baris baru?
Sp3000

Oh, tentu saja. stdout.write jtampaknya berfungsi, dan sedikit lebih pendek dari &=loop Anda .
Lynn

@Mauris Memang, sepertinya berhasil - terima kasih :)
Sp3000

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.