Bu kelimeyi imzala!


12

Kelime İmzası nedir?

Bir kelimenin imza 's harflerinin her sıraya koymak vardır - imzaları this, histve hitshepsi hist.

Meydan okuma

Bir program yazmak bir girdi istemeli, daha sonra bu kelimenin imzasını yazdırmalıdır. Yani örnek bir program çalışması şöyle görünebilir:

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

Gerekli bir etkileşim yoktur, bir girdi alıp imzayı yazdırdığı sürece sorun yoktur.

puanlama

En küçük bayt sayısına sahip program kazanır!

Liderler Sıralaması

İşte hem düzenli bir skor tablosu hem de kazananları dile göre gözden geçirmek için bir Yığın Parçacığı.

Yanıtınızın göründüğünden emin olmak için lütfen aşağıdaki Markdown şablonunu kullanarak yanıtınızı bir başlıkla başlatın:

# Language Name, N bytes

Ngönderiminizin büyüklüğü nerede . Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

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

Zorlu Bitti!

KAZANAN: jimmy23013


3
Biz cümleler yazdırmak zorunda değildir Give me a string:ve The signature signature of 'this' ishakkını? Girişi doğrudan alıp sonucu yazdırabilir miyiz?
Ağustos'ta

4
Yinelenen harfler ne olacak? örneğin broom bmoorveya imzası bmor?
samgak

3
@isaacg neden sensin
Tim

3
@Zaman bu kadar basit zorluklarla karşılaşmamız gerektiğini düşünmüyorum. Bunu metadan soracağım - bu özellikle bu soru ile ilgili değil.
isaacg

2
Yerleşik sıralama işlevlerini kullanamazsanız bunun daha ilginç bir zorluk olacağını düşünüyorum.
Glen O

Yanıtlar:


49

GolfScript, 1 bayt

$

Evet, sadece 1 bayt.

Burada deneyin.


4
Doğru olarak işaretlendi çünkü kimse 1 baytı yenemez.

9
@Kslkgh Teorik olarak, birisi bunu 0 baytta yapabilen bir dil bulabilir mi?
jimmy23013

2
Bunun "Merhaba" için başarısız olduğunu söyleyebilirim
James Webster

3
Sermaye ile herhangi bir şey için kırmak gibi görünüyor, ama tahmin asla belirtilmedi
Lain

1
Büyük harfler kodu bozmaz. Önce büyük harfleri sonra küçük harfleri sıralar. ie cbaCBAfed -> ABCabcdef
Toplam

25

C (x86 ile), 61 bayt

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

Bu dize, gerçek \x..kodlar değil ham baytlar içeriyor ve bu, geçirilen bir ham makine kodu geri araması qsort. Yalnızca x86 üzerinde çalışır:

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

Esasen:

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

Shinh tarafından Japonca bu broşür p6-7 bakın .


Bu, belirli bir mimariyi hedeflediği için genel C dili değildir. Bu başlıkta belirtilmelidir
edc65

20

Sıkışmış, 4 bayt

sc$d

Bu dil wiki'de dün belgelendi! Mmm, taze esolangs.


1
Güzel yapılmış! :)
Kade

19

Sıkışmış, 5 Bayt

Sonunda benim dilimi kullanıyorum Stuck ! : D

s$""j

Bu, stdin yoluyla bir girdi alır, sıralar, birleştirir ve dolaylı olarak yazdırır. Bu bana değişiklikler için bazı fikirler verdi.

Düzenleme: Oh vay, birisi zaten kendi dilimde beni gönderdi ve dövdü!


16

GOTO ++, 432430 bayt

GOTO ++ proje sitesi .

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

Bunu neden kendime verdiğimden emin değilim, ama yaptım


13

gs2, 1 bayt

/

GolfScript yanıtıyla aynıdır, ancak gs2 sıralama için farklı bir operatör kullanır.


10

Perl, 18 bayt

print sort<>=~/./g

3 bayt kurtarmama yardım ettiği için Dom Hastings'e teşekkürler.


Eğer bir kullanarak birkaç bayt kaydedebilirsiniz /./gyerine split'',: print sort<>=~/./g!
Dom Hastings

İle -nEyapabilirsiniz say sort/./g.
Dennis

7

Haskell, 35 bayt

import Data.List;main=interact sort



6

C #, 114110 karakter

Komut satırı bağımsız değişkeninden girdi alır. Çok kısa bir program değil, ama ... C #. : P

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

Abbas'a 4 bayt kazandığı için teşekkürler!


1
Sen kullanarak 4 karakter kaydedebilirsiniz Writeyerine WriteLine. ;)
Abbas

@Abbas Teşekkürler! Bunu tamamen kaçırdı; p
ProgramFOX

6

Brainfuck, 40 bayt

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

Bu sayma sıralama algoritmasını kullanır , bu da bunu O (n) çözümü yapar.

Kod, 8 bit hücreli bir sol sonsuz veya sarma bandı gerektirir. Çevrimiçi deneyin!

Nasıl çalışır

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

l$

Bir girdi satırı ( l) okur ve sıralar ( $).



4

Coreutils, 24 23

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


4

Java 8, 119 bayt

Bu temelde sadece C # cevabı ile rekabet edebilir, çünkü Java.

(En azından bu GOTO ++ 'ı geçiyor. Gerçekten bir başarı değil ...)

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

1 bayt kaydetmek için ProgramFOX sayesinde, 2 bayt kaydetmek için rink.attendant.


String[]Ve arasındaki boşluğu kaldırarak bir karakter kaydedebilirsiniz s.
ProgramFOX

Oh, unutmuşum. Şimdi bayt sayım güzel bir kare sayısı. Teşekkürler!
TheMadHaberdasher

Sanırım bunun System.out.printyerine kullanabileceğinizi düşünüyorumprintln
rink.attendant.6

Teşekkür ederim! Bu kod golf benim ilk denemem, bu yüzden hala böyle şeyler öğrenmek zorunda.
TheMadHaberdasher

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


3

JavaScript (ES6), 32 bayt

Demo, yalnızca Firefox ve Edge'de çalışır, çünkü Chrome / Opera varsayılan olarak ES6'yı desteklemez:

Düzenleme: Göndermeden önce cevaplara bakmadım ama şimdi NinjaBearMonkey'inkiyle hemen hemen aynı olduğunu anlıyorum .

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 bayt

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

Böyle denir:a(`this`).


2

Scala, 21 bayt

print(args(0).sorted)

komut satırı örneğinden çalıştır:

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


2

Julia, 21 bayt

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

Eğlence için, 53 bayt için dahili bir sıralama işlevi kullanmadan bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:

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

2

JavaScript, 34 bayt

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

Bunun bu kadar uzun olmasının nedeni, JavaScript'in yalnızca dizileri sıralayabilmesidir, bu nedenle dize bir diziye bölünmeli, sıralanmalı ve sonra tekrar bir dizgiye birleştirilmelidir. Bu ECMAScript 6; ES5'teki eşdeğeri:

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

EcmaScript 6'yı kullanıldığı gibi ...ve şablon dizelerini belirtmelidir
edc65

@ edc65 Haklısın, unuttum. Bitti.
NinjaBearMonkey

1

Python 2, 33 32 bayt

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

@ Kamehameha'nın cevabından büyük ölçüde ilham aldı. Python 2'ye dönüştürüldü. Golf daha fazla olamaz.


1
reprBaşka bir bayt düşürmek için kullanabilirsiniz (Şimdi neden çözümün Python 3 sürümünü seçtiğimi biliyorsunuz: P) - print`sorted(raw_input())`[2::5](Bunlar tek tırnak değil, tek tırnak değil)
Kamehameha

1

APL, 7 karakter

Benim için ngn-apl üzerinde çalışmaz, ancak teoride çalışmalıdır:

X[⍋X←⍞]

atanmış standart girişten bir satır okur X. artan bir düzen veren ⍋Xendekslerdir Xve X[...]aslında Xbu endekslere göre sıralanır .


1
Dyalog üzerinde çalışır (masaüstü sürümü, TryAPL değil).
Alex

1

JavaScript, 54 bayt

düğümü ile js dosyasını çağır

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


1

Nim 102 101 79 73 bayt

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

Hala Nim öğreniyor ve golf hileleri çalışıyor. Anlaşılan o ki iyi değil yerleşiğini kullanmak sortithalatta bir sürü gerektirecektir, (teşekkürler @Mauris)


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

@Mauris Vay be, yerleşik tür kullanmanın daha kısa olacağını düşünmemiştim! Tek sorun olsa - echoizleyen satırsonu olmadan bir yolu var mı?
Sp3000

Ah, tabi ki. stdout.write jişe yarıyor gibi görünüyor ve döngünüzden biraz daha kısa &=.
Lynn

@Mauris Gerçekten, işe yarıyor gibi görünüyor - teşekkürler :)
Sp3000

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.