签署这个词!


12

什么是单词签名?

一个字的签名是它的所有的信件整理-的签名thishist并且hitshist

挑战

编写程序时,程序应要求输入,然后打印出该单词的签名。因此,示例程序运行可能如下所示:

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

不需要任何交互,只要它接受输入并打印签名,就可以。

计分

字节数最小的程序获胜!

排行榜

这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。

为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。

# 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
samgak

3
@isaacg你为什么?
蒂姆(Tim)

3
@Tim我认为我们不应该面对如此简单的挑战。我会在meta上问这个问题-并不是特别关于这个问题。
isaacg 2015年

2
我认为如果您不能使用内置的排序功能,这将是一个更加有趣的挑战。
Glen O

Answers:


49

GolfScript,1个字节

$

是的,只有1个字节。

在这里尝试。


4
标记为正确,因为没有人可以击败1个字节。

9
@Kslkgh从理论上讲,也许有人可以找到一种可以用0字节做到这一点的语言?
jimmy23013 2015年

2
我会说这对于“你好”失败了
詹姆斯·韦伯斯特

3
似乎可以用大笔的钱打破任何东西,但猜想它从未被指定
Lain

1
大写字母不会破坏代码。它首先对大小写进行排序,然后将其小写。即cbaCBAfed-> ABCabcdef
Mully,2015年

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

参见shinh的此日语小册子的p6-7


这不是通用C语言,因为它针对特定的体系结构。这应该在标题中指定
edc65


19

卡住,5个字节

我终于可以使用我的语言了,Stuck!:D

s$""j

这需要通过stdin进行输入,排序,联接和隐式打印。但这确实给了我一些改变的想法。

编辑:哇,已经有人发布了我的母语打我!


16

GOTO ++,432430字节

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

不知道为什么我要这样对自己,但是我做到了


13

gs2,1个字节

/

同为GolfScript答案,但GS2采用了不同的运营商进行排序。


10

Perl,18个字节

print sort<>=~/./g

感谢Dom Hastings帮助我节省了3个字节。


您可以使用/./g而不是split'',:节省一些字节print sort<>=~/./g
唐·黑斯廷斯

有了-nE,你就可以做到say sort/./g
丹尼斯

7

Haskell,35个字节

import Data.List;main=interact sort



6

C#,114110个字符

从命令行参数获取输入。这不是一个很短的程序,但是...是C#。:P

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

感谢阿巴斯节省了4个字节!


1
您可以使用Write代替来保存4个字符WriteLine。;)
阿巴斯2015年

@阿巴斯谢谢!完全错过了一个; p
ProgramFOX 2015年

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

Coreutils,24岁至23岁

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


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个字节。


您可以通过删除之间的空间保存一个字符String[]s
ProgramFOX

哦,我忘了。现在我的字节数是一个不错的平方数。谢谢!
TheMadHaberdasher 2015年

我想你可以使用System.out.print,而不是println
rink.attendant.6

谢谢!这是我第一次尝试打高尔夫球,所以我仍然必须学习类似的东西。
TheMadHaberdasher 2015年

您可以使用public static void main(String[]s){s[0].chars().sorted().forEach(i->System.out.print((char)i));}
assylias


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>


2

SWI-Prolog,34个字节

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

这样称呼:a(`this`).


2

Scala,21个字节

print(args(0).sorted)

从命令行示例运行:

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


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(''))

应指定正在使用的EcmaScript 6 ...和模板字符串
edc65

@ edc65你是对的,我忘了。做完了
NinjaBearMonkey

1

Python 2,33 32字节

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

受@Kamehameha的回答启发。转换为python2。不能再打高尔夫了。


1
您可以使用repr它来降低另一个字节(现在您知道为什么我选择了该解决方案的Python 3版本:P)- print`sorted(raw_input())`[2::5](那些是反引号,而不是单引号)
Kamehameha 2015年

1

APL,7个字符

对我来说,它不适用于ngn-apl,但理论上应该可以工作:

X[⍋X←⍞]

从分配给的标准输入读取一行X⍋XX产生升序的索引,并X[...]实际上X按这些索引排序。


1
在Dyalog(台式机版本,而不是TryAPL)上工作。
Alex A.

1

JavaScript,54个字节

用节点调用js文件

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


1

稔,102 101 79 73个字节

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

仍在学习Nim并制定高尔夫技巧。显然,最好不要使用内置功能sort,因为内置功能需要大量导入(感谢@Mauris)


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.