你好,世界!没有重复


27

在询问此问题之前存在的任何编程语言中,编写一个程序(而不是函数),该程序输出字符Hello world!后跟换行符。您的程序:

  • 最多只能使用一个字符(包括空格)
  • 应该只使用ASCII字符
  • 不应使用任何内置库
  • 不应获取输入(用户,文件,文件名,系统变量,互联网等)
  • 不应该输出其他任何东西

获胜者是14天后拥有最多票数并遵守六项规则的人。

第六条规则是您不能使用H9 +,HQ9 +,HQ9 + B,HQ9 ++,HQ9 + 2D,Hello,Hello +,Hello ++,Hexish,CHIQRSX9 +或赋格曲。另外,所有要求比该挑战都要新的实现的答案都必须标记为非竞争。


免责声明:发布此问题的前提是Hello world!提出有限的重复步骤不会对您的计算机或大脑造成任何损害。


如果我们要转义字符代码,可以多次使用“ \”字符吗?
WallyWest

4
彼得呢?
Victor Stafusa 2014年

@Victor“应该只使用ASCII字符”
Timtech

3
那是一个很大的难题,我很喜欢这样做:-)。
Konrad Borowski14年

9
“仅应使用ASCII字符”-太严格了。这样就删除了一整类不会使用ASCII的语言。
Timwi'1

Answers:


33

Perl 6(29 28个字符)

这有点烦人,但我终于设法为该任务编写了程序。感谢伟大的#perl6社区,帮助我完成了此任务。我花了两个小时,希望您喜欢。输出完全符合规范,包括换行符。

say
Q[@A`DO world!]~|<HeLhg>

有四个感兴趣的令牌。

  • say

    这将在末尾输出带有新行的参数。该命令本身后的新行需要替换为空格。

  • Q[@A`DO world!]

    这是第一个字符串。Q[]用于原始字符串(如r""Python)。在这种情况下,它可以采用任何定界符(或一对定界符)[]。在这种情况下,我将其用作引号,不需要原始字符串行为。

  • ~|

    这是~按位()按位或(|)运算符。

  • <HeLhg>

    <>是列表文字,它使用空格分隔的元素列表。在这种情况下,它只有一个元素,并用作标量,它给出了一个字符串。


3
惊人!我需要继续学习。一些Perl 6语法!我也同意您的评论,绝对是一个有趣的问题!
Dom Hastings 2014年

4
哇...我的脑袋被炸了:O +1
门把手



9

高尔夫脚本42 33

考虑到我必须将某些代码和所有数据放在同一个块中,而又无法对两者进行定界,所以我不妨打高尔夫球,我认为这是很短的结果。现在,与我第一次提交的代码不同,块代码是数据的完全集成部分,因此{1,不仅要开始代码块并将其放到1堆栈上,还需要数据来定义H,等等。数组创建现在包括空的输入字符串,这意味着我不必裁剪开头,因为在空字符串和之间只有一个字符H,当我取第二个字符时该字符被切掉,而空最终将字符串输出为空。

{1wZ$Qei^Ak 3h-)ulmsogr7}.`*]2%n+

在线演示:http : //golfscript.apphb.com/? c= ezF3WiRRZWleQWsgM2gtKXVsbXNvZ3I3fS5gKl0yJW4r

[{1$^(r iFNGDJUHv98oIMgtplbh4m}.`\*]6>2%n+

定义一个代码块。复制代码块并将其转换为字符串。使用代码块遍历字符串。对于每次迭代,代码都将复制先前的char值,并将其与当前char值进行异或,然后减去1。然后,将删除结果字符串,并删除前6个字符,并删除第二个字符。最后,添加了换行符。

“ r iFNGDJUHv98oIMgtplbh4m”只是两个未声明的变量,它们什么也不做,但是精心构造它们以产生所需的结果。

在线演示:http : //golfscript.apphb.com/? c= W3sxJF4ociBpRk5HREpVSHY5OG9JTWd0cGxiaDRtfS5gXCpdNj4yJW4r



6

Befunge-9834 31个字节

f"v!dlrow
+c<>a,kb@#*98e':g05-3

在线尝试!

使用许多不同的方法来避免重复字符。

首先,我们使用包装字符串文字以避免使用两个"。这增加了“世界!” 到堆栈。

在第二行左移,我们在额外的数字f上加上9 以构成o“ Hello”。我们g从单元格5,0(l)中提取字符,然后将其复制。将'被用于获取信e。将9乘8得出ASCII值72 H。然后,我们使用来打印所有内容ck,,并使用翻转方向>以重复使用,来打印换行符(a)。


很好,但是这个挑战没有逗号。
与Orjan约翰森

呵呵笑,这使得它更容易...感谢@ØrjanJohansen
乔金

您有+和中的两个d
与Orjan约翰森

@ØrjanJohansen糟糕。应该立即修复
Jo King

3

Elixir,37个字节

IO.puts~c(He#{[?n-2,108]}\x6f world!)

在线尝试!

我不能保证在2014年发布此挑战时,这种方法就可以奏效,而且Elixir仍处于1.0之前的版本(因此,它是否正式在“竞争”,但查看他们的发行说明,我认为应该是好)。无论如何,我很高兴终于找到了使用Perl之外的常规通用语言来解决此任务的有效解决方案!

演练

IO.puts     #Print with trailing newline
~c(...)     #Sigil: charlist with interpolation
He          #Start of literal string...
#{...}      #Interpolated block
[?n-2,108]  #A list of codepoints for 2 'l's
\x6f        #Hex code for 'o'
world!      #...and done!

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.