Podpisz to słowo!


12

Co to jest podpis słowny?

Podpis słowa są wszystkich jego listów uporządkować - podpisami this, histi hitsto wszystko hist.

Wyzwanie

Napisz program programowy powinien poprosić o dane wejściowe, a następnie wydrukować podpis tego słowa. Przykładowy przebieg programu może wyglądać następująco:

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

Nie jest wymagana żadna interakcja, o ile zajmuje wejście i drukuje podpis, jest OK.

Punktacja

Program z najmniejszą liczbą bajtów wygrywa!

Tabela liderów

Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.

Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:

# Language Name, N bytes

gdzie Njest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:

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

Wyzwanie zakończone!

ZWYCIĘZCA: jimmy23013


3
Nie musimy drukować zdań Give me a string:i The signature signature of 'this' isprawda? Możemy tylko pobrać dane wejściowe i wydrukować wynik?
Fatalize

4
Co powiesz na zduplikowane litery? np. czy podpis broom bmoorlub bmor?
samgak,

3
@isaacg dlaczego jesteś?
Tim

3
@ Tim Nie sądzę, że powinniśmy mieć tak proste wyzwania. Zapytam o to na meta - tak naprawdę nie chodzi w szczególności o to pytanie.
isaacg,

2
Myślę, że byłoby to bardziej interesujące wyzwanie, gdybyś nie mógł korzystać z wbudowanych funkcji sortowania.
Glen O

Odpowiedzi:


49

GolfScript, 1 bajt

$

Tak, tylko 1 bajt.

Wypróbuj tutaj.


4
Oznaczone jako poprawne, ponieważ nikt nie może pokonać 1 bajtu.

9
@Kslkgh Teoretycznie może ktoś może znaleźć język, który może to zrobić w 0 bajtach?
jimmy23013,

2
Powiedziałbym, że to się nie powiedzie w przypadku „Cześć”
James Webster,

3
Wygląda na to, że można przełamać coś ze stolicą, ale przypuszczam, że nigdy nie zostało to określone
Lain

1
Wielkie litery nie łamią kodu. Najpierw sortuje wielkie litery, a następnie małe litery. tj. cbaCBAfed -> ABCabcdef
Mully

25

C (z x86), 61 bajtów

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

Że ciąg zawiera surowe bajty, a nie rzeczywiste \x..kody, i jest to surowy kod maszynowy zwrotna przekazane qsort. Działa tylko na 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

Co jest zasadniczo:

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

Zobacz str. 6-7 tej broszury w języku japońskim autorstwa shinh .


To nie jest ogólny język C, ponieważ jest ukierunkowany na określoną architekturę. Powinno to zostać określone w tytule
edc65,

20

Utknął, 4 bajty

sc$d

Ten język został udokumentowany na wiki dopiero wczoraj! Mmm, świeże esolangi.


1
Ładnie wykonane! :)
Kade,

19

Utknąłem, 5 bajtów

W końcu mogę użyć mojego języka, utknąłem ! :RE

s$""j

To pobiera dane wejściowe za pomocą standardowego wejścia, sortuje, łączy i domyślnie drukuje. To dało mi kilka pomysłów na zmiany.

Edycja: O wow, ktoś już napisał i pobił mnie w moim własnym języku!


16

GOTO ++, 432 430 bajtów

Strona projektu 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

Nie jestem pewien, dlaczego sam sobie to zadałem, ale zrobiłem to


13

gs2, 1 bajt

/

Taki sam jak odpowiedź GolfScript, ale gs2 używa innego operatora do sortowania.


10

Perl, 18 bajtów

print sort<>=~/./g

Dzięki Dom Hastings za pomoc w oszczędzeniu 3 bajtów.


można zaoszczędzić kilka bajtów stosując /./gzamiast split'',: print sort<>=~/./g!
Dom Hastings,

Z -nE, możesz zrobić say sort/./g.
Dennis

7

Haskell, 35 bajtów

import Data.List;main=interact sort



6

C #, 114 110 znaków

Pobiera dane wejściowe z argumentu wiersza poleceń. Niezbyt krótki program, ale cóż ... to C #. : P

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

Dzięki Abbas za uratowanie 4 bajtów!


1
Możesz zapisać 4 znaki, używając Writezamiast WriteLine. ;)
Abbas,

@Abbas Thanks! Całkowicie tego przegapiłem; p
ProgramFOX

6

Brainfuck, 40 bajtów

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

Wykorzystuje algorytm sortowania liczącego , co czyni to rozwiązanie O (n) .

Kod wymaga taśmy nieskończonej lub owijającej 8-bitowych komórek. Wypróbuj online!

Jak to działa

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

l$

Czyta linię input ( l) i sortuje ją ( $).





4

Java 8, 119 bajtów

Jest to w zasadzie konkurencyjne tylko dla odpowiedzi C #, ponieważ, cóż, Java.

(Przynajmniej to bije GOTO ++. Nie jest to naprawdę osiągnięcie ...)

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

Dzięki ProgramFOX za zapisanie 1 bajtu, rink.attendant za zapisanie 2 bajtów.


Możesz zapisać jeden znak, usuwając spację między String[]i s.
ProgramFOX,

Och, zapomniałem o tym. Teraz moja liczba bajtów jest ładną liczbą kwadratową. Dzięki!
TheMadHaberdasher

Myślę, że możesz użyć System.out.printzamiastprintln
rink.attendant. 6

Dziękuję Ci! To moja pierwsza próba gry w golfa kodowego, więc wciąż muszę się tego nauczyć.
TheMadHaberdasher

Możesz zapisać 12 znaków przy pomocypublic static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias


3

JavaScript (ES6), 32 bajty

Demo działa tylko w przeglądarce Firefox i Edge w momencie pisania, ponieważ Chrome / Opera domyślnie nie obsługuje ES6:

Edycja: Nie patrzyłem na odpowiedzi przed opublikowaniem, ale teraz zdaję sobie sprawę, że jest dokładnie taki sam jak ten autorstwa 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 bajty

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

Nazywany jako taki:a(`this`).


2

Scala, 21 bajtów

print(args(0).sorted)

uruchom z przykładu wiersza poleceń:

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


2

Julia, 21 bajtów

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

I dla zabawy, oto jak możesz to zrobić bez użycia wbudowanej funkcji sortowania, dla 53 bajtów:

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

2

JavaScript, 34 bajty

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

Powodem tego jest to, że JavaScript może tylko sortować tablice, więc ciąg musi zostać podzielony na tablicę, posortowany, a następnie ponownie połączony w ciąg. To jest ECMAScript 6; odpowiednik w ES5 to:

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

Powinien określać EcmaScript 6, ponieważ jest używany ...i ciągi szablonów
edc65

@ edc65 Masz rację, zapomniałem. Gotowy.
NinjaBearMonkey

1

Python 2, 33 32 bajty

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

Mocno zainspirowany odpowiedzią @ Kamehameha. Konwersja do Pythona 2. Nie można więcej grać w golfa.


1
Możesz użyć, repraby obniżyć go o kolejny bajt (Teraz wiesz, dlaczego wybrałem wersję rozwiązania w języku Python 3: P) - print`sorted(raw_input())`[2::5](To są backty, a nie pojedyncze cudzysłowy)
Kamehameha

1

APL, 7 znaków

Dla mnie nie działa na ngn-apl, ale powinien działać w teorii:

X[⍋X←⍞]

odczytuje wiersz ze standardowego wejścia, do którego jest przypisany X. ⍋Xto indeksy, Xktóre dają rosnący porządek i X[...]faktycznie są sortowane Xwedług tych indeksów.


1
Działa na Dyalog (wersja na komputery, nie TryAPL).
Alex A.,

1

JavaScript, 54 bajty

wywołaj plik js z węzłem

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


1

Nim, 102 101 79 73 bajtów

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

Wciąż uczę się Nima i ćwiczysz sztuczki golfowe. Najwyraźniej lepiej nie używać wbudowanego sort, który wymagałby dużo importu (dzięki @ Mauris)


let s=stdin.readAll;for i in 1..'~':(for j in s:(if i==j:echo j))ma 65 bajtów.
Lynn,

@ Mauris Wow, nie sądziłem, że niestosowanie wbudowanego sortowania będzie krótsze! Jedyny problem - czy jest sposób echona obejście się bez nowej linii?
Sp3000,

Ojej, oczywiście. stdout.write jwydaje się działać i jest nieco krótszy niż &=pętla.
Lynn,

@Mauris Rzeczywiście wydaje się, że działa - dzięki :)
Sp3000,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.