Подпишите это слово!

12

Что такое подпись слова?

Сигнатура слова являются все это письма привести в порядок - подписи this, histи hitsвсе hist.

Соревнование

Написать программу, программа должна запросить ввод, затем распечатать подпись этого слова. Таким образом, пример запуска программы может выглядеть так:

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

Взаимодействия не требуется, если он принимает входные данные и печатает подпись, все в порядке.

счет

Программа с наименьшим количеством байтов побеждает!

Leaderboard

Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.

Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:

# 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правильно? Мы можем просто принять входные данные напрямую и напечатать результат?
Роковая
4
Как насчет повторяющихся букв? например, подпись broom bmoorили bmor?
Самгак
3
@isaacg почему ты?
Тим
3
@ Тим, я не думаю, что у нас должны быть проблемы, которые настолько просты. Я спрошу об этом на мета - это не совсем об этом вопросе в частности.
Исаак
2
Я думаю, что это было бы более интересной задачей, если бы вы не могли использовать встроенные функции сортировки.
Глен О

Ответы:

49

GolfScript, 1 байт

$

Да, только 1 байт.

Попробуй это здесь.

jimmy23013
источник
4
Отмечено как правильное, потому что никто не может побить 1 байт.
9
@ Kslkgh В теории, может быть, кто-то может найти язык, который может сделать это в 0 байтов?
jimmy23013
2
Я бы сказал, что это не подходит для «Привет»
Джеймс Вебстер
3
Кажется, что-то сломалось с большой буквы, но думаю, это никогда не указывалось
Lain
1
Столицы не нарушают код. Сначала сортирует заглавные буквы, а затем строчные. т.е. cbaCBAfed -> ABCabcdef
Муллы
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; }

См. Стр. 6-7 этой брошюры на японском языке Шинх .

Линн
источник
Это не универсальный язык Си, так как он предназначен для конкретной архитектуры. Это должно быть указано в заголовке
edc65
20

Застрял, 4 байта

sc$d

Этот язык был задокументирован в вики только вчера! Ммм, свежие эсоланги.

Линн
источник
1
Красиво сделано! :)
Kade
19

Застрял, 5 байт

Наконец-то я начал использовать свой язык, Застрял ! : D

s$""j

Он принимает ввод через stdin, сортирует, объединяет и неявно печатает. Это дало мне некоторые идеи для изменений, хотя.

Редактировать: Ого, кто-то уже опубликовал и избил меня на моем родном языке!

Када
источник
16

GOTO ++, 432 430 байт

Сайт проекта 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

Не уверен, почему я нанес это себе, но я сделал

Fatalize
источник
13

gs2, 1 байт

/

То же, что и ответ GolfScript, но gs2 использует другой оператор для сортировки.

Линн
источник
10

Perl, 18 байт

print sort<>=~/./g

Спасибо Dom Hastings за помощь в экономии 3 байтов.

samgak
источник
Вы можете сохранить несколько байт с использованием /./gвместо split'',: print sort<>=~/./g!
Дом Гастингс
С -nE, вы можете сделать say sort/./g.
Деннис
7

Haskell, 35 байт

import Data.List;main=interact sort
Линн
источник
6

C #, 114 110 символов

Принимает данные из аргумента командной строки. Не очень короткая программа, но хорошо ... это C #. :П

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

Спасибо Аббасу за сохранение 4 байта!

ProgramFOX
источник
1
Вы можете сохранить 4 символа, используя Writeвместо WriteLine. ;)
Аббас
@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

Python 3, 31 байт

print("".join(sorted(input())))
Kamehameha
источник
Для меня это выглядит как 29 байт
Blue
@muddyfish это 31 символ, когда я считал :)
Kamehameha
4

Java 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));}}

Спасибо ProgramFOX за сохранение 1 байта, rink.attendant за сохранение 2 байтов.

TheMadHaberdasher
источник
Вы можете сохранить один символ, удалив пробел между 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
4

Страус, 2 байта

G$

В Страусе G читает строку ввода из STDIN и $сортирует ее.

Алекс А.
источник
3

JavaScript (ES6), 32 байта

Демо работает только в Firefox и Edge на момент написания, так как Chrome / Opera не поддерживает ES6 по умолчанию:

Изменить: я не смотрел ответы до публикации, но теперь я понимаю, что это в значительной степени точно так же, как тот, что 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>

rink.attendant.6
источник
2

SWI-Пролог, 34 байта

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

Вызывается так:a(`this`).

Fatalize
источник
2

Скала, 21 байт

print(args(0).sorted)

запустить из примера командной строки:

$ scala -e "print(args(0).sorted)" this
hist
Гилад Хох
источник
2

Powershell, 44 37 байт

-join((Read-Host).ToCharArray()|sort)
Стефан Шинкель
источник
также +1 за использование PowerShell, но я beatcha :)
Nacht - Восстановить Монику
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

JavaScript, 34 байта

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

Причина, по которой это так долго, заключается в том, что JavaScript может сортировать только массивы, поэтому строку нужно разбить на массив, отсортировать, а затем соединить обратно в строку. Это ECMAScript 6; эквивалент в ES5:

alert(prompt().split('').sort().join(''))
NinjaBearMonkey
источник
Следует указать EcmaScript 6, как он использует ...и строки шаблона
edc65
@ edc65 Ты прав, я забыл. Выполнено.
NinjaBearMonkey
1

Python 2, 33 32 байта

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

Сильно вдохновлен ответом @ Kamehameha. Преобразован в Python 2. Не могу играть в гольф намного больше.

синий
источник
1
Вы можете использовать reprего для сброса еще одного байта (теперь вы знаете, почему я выбрал версию решения Python 3: P) - print`sorted(raw_input())`[2::5](Это обратные пометки, а не одинарные кавычки)
Kamehameha
1

APL, 7 символов

У меня не работает ngn-apl, но теоретически должно работать:

X[⍋X←⍞]

читает строку из стандартного ввода, который назначен X. ⍋Xэто индексы, Xкоторые дают возрастающий порядок, и X[...]фактически сортируют Xпо этим индексам.

Линн
источник
1
Работает на Dyalog (настольная версия, а не TryAPL).
Алекс А.
1

JavaScript, 54 байта

вызвать файл JS с узлом

console.log(process.argv[2].split('').sort().join(''))
завивать волосы щипцами
источник
1

Обработка, 40 байт

print(join(sort(args[0].split("")),""));
Кевин Воркман
источник
1

Ним, 102 101 79 73 байта

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

Все еще учусь Ним и разрабатываю уловки гольфа. По-видимому, лучше не использовать встроенную sortфункцию, которая потребует большого количества импорта (спасибо @Mauris)

Sp3000
источник
let s=stdin.readAll;for i in 1..'~':(for j in s:(if i==j:echo j))составляет 65 байтов.
Линн
@ Mauris Wow, я не думал, что использование встроенной сортировки будет короче! Единственная проблема, хотя - есть ли способ echoбез завершающей строки?
Sp3000
Ой, конечно. stdout.write jкажется, работает, и немного короче, чем ваша &=петля.
Линн
@Mauris Действительно, похоже, работает - спасибо :)
Sp3000
1

PowerShell, 27 байт

%{([char[]]$_|sort)-join''}
Nacht - Восстановить Монику
источник
Хорошо сделано с принятием ввода конвейера.
AdmBorkBork