你好,世界!!!斐波那契分布


21
  1. 您的程序应准确输出:之后Hello world!!!带有或不带有换行符。
  2. 您的程序不应输入任何内容。
  3. 源代码字符分配必须符合以下条件:
    • 数字字符的数量(0-9)必须恰好是一个斐波那契序列号。
    • 源代码中其他非数字字符!(0-9)的数量必须与上述斐波那契序列号之前的斐波那契序列号完全相同。

源代码中有效字符分布的四个示例:

  • 13个数字,8个非数字字符。
  • 34个数字,21个非数字字符。
  • 55个数字,34个非数字字符。
  • 89个数字,55个非数字字符。

这是代码高尔夫球,最短的代码以字节为单位!祝好运!

编辑:由于此问题与源代码大小相结合,对源代码大小有限制,因此,可接受的答案(如果有多个分享相同的中奖字符长度)将是投票最多(且字符数最少)的答案:2014- 03-01。


6
因此,所有解决方案的字符计数都是斐波那契数。
霍华德

1
这是一个验证答案的程序(将代码粘贴到输入框中。)
Justin

1
甚至可以用少于55个字符来做到这一点?所需的输出包含14个字符,我想不出一种可以使用数字来输出字符而不用每个字符至少使用一个字符的语言。
贾斯汀2014年

2
@Plarsen绝对不行
John Dvorak

1
好的,那我就不会更改规则了:)
Plarsen 2014年

Answers:


27

Windows命令提示- 34 8,5个字符,(2下)

* 这些规则可能违反规则2,也可能不会违反规则2

%~099

命名文件:

&start call echo Hello world!!!&exit -b .cmd


现在让文件系统稍微损坏-2个字符(如果需要,还可以减少)

A1

命名文件(使用首选的非传统方法):

"&start call echo Hello world!!!&exit&.cmd

这是如何运作的:

由于cmd脚本是使用'cmd.exe / C“%1”%*'调用的,因此执行的命令将是:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

将按以下顺序进行:

  • 无法执行“ c:\ PATH_TO_THE_SCRIPT \”
  • 打开新的外壳打印Hello world!\ n
  • 退出原始外壳

2
哇!我认为,如果规则没有说不投入,我们就会赢得胜利。无论如何,+ 1都是开箱即用的想法。
Plarsen 2014年

2
使用Windows CMD进行代码高尔夫... +1。同样,有争议的是“无输入”可能意味着“无读STDIN”:P
Camilo Martin

1
这对于其他的代码打高尔夫球过一个有趣的把戏......写在文件名,并使用类似真正的代码eval $0来执行它<rolleyes>
托比亚

1
这不可能!!5个字符?真正有趣的方法
Plarsen 2014年

1
实际上,我刚刚在下面发布了2个字符的解决方案。
Tobia

20

MySQL,34岁

x'48656C6C6F20776F726C642121'||'!'

Hello world!!!假设sql_mode设置包括,这是一个MySQL表达式,计算结果为PIPES_AS_CONCAT。它包含正好21位数字和13位非数字。

无论是否符合有效条件,我都将其交给陪审团。

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
什么... CMD和SQL获胜的代码?
卡米洛·马丁

select;是陈述可以说是一部分,但仍然是一个聪明的解决方案。
2014年

@primo,是的,这就是为什么我不确定是否符合条件的原因。但我想我应该为搞笑起见;-)
Tobia 2014年


11

GolfScript,55个字符

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

找不到解决34个字符的方法的方法,因此我创建了这个方法。


10

Befunge 98-55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

决定使用换行符,因为它不需要任何费用。这些数字是斐波那契数列的串联值。


8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

是。我把它们浪费掉了。你打算怎么办?


谁知道pi〜3会很有用!
Kyle Kanos 2014年

1
问题是21个非数字加34个数字,您的答案是34个非数字加21个数字。
user12205 2014年

1
“ hello world”应该是“ Hello world”;即大写h。
贾斯汀

7

C(89个字符)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

不幸的是,以上内容仍然有效,但我使用以下程序进行压缩不符合规范。我觉得值得一看,也许其他人可以将它缩短一些(64个字符,37个数字,27个非数字)。要进行编译,您必须使用clang和with -fms-extensions

main(){puts((__int128[]){671944380693508453879479574226248i8});}

复合文字,是您要查找的名称。我正在尝试使用它们将其减少到21个字符!
charmlessCoin14年

通过设置为iglobal(省略int),我可以达到的最低非数字计数为26 。使用long可以节省逗号,但要花更多钱。21很远。
ugoren 2014年

是的,这是很多浪费的空间。使用这个小技巧,我可以main(){puts((int[]){1819043144,1870078063,560229490,8481});}理解,但是仍然是60个字符。如果我能再消除一些...编辑:哇,那么全局变量不必声明吗?谁知道?
vmrob

@vmrob,全局变量必须有一个声明。但类型默认为int,因此a;等效于int a;
ugoren 2014年

@ugoren我知道他们必须有一个声明,但我才没有意识到它默认为int!
vmrob 2014年

6

Windows PowerShell(可能还包括Bash),55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

您没有说任何有关网络访问的信息,因此这是一个肮脏的解决方案。我有一个bit.ly URL,第二次尝试时字母不够。不幸的是,它仍然是21位非数字,需要使用或浪费34位数字。


您知道可以编辑bit.ly链接了吗?
Timtech

你是什​​么意思,编辑?另外,在任何情况下我都不会收到13个字母以下的内容。
John Dvorak 2014年

您可以点击“复制”旁边的铅笔并编辑链接。如果这样做,所有旧版本仍然可以使用。
Timtech

1
缩短到34!curl 37.187.42.18/?hw=112358132134
Dom Hastings 2014年

6

sh,55

echo Hello world!!! #1234567890123456789012345678901234


5

重击,2个字符

很好,在极少数情况下,罗伯特的答案没有被取消资格,这是我的:

$0

命名文件echo Hello world!!!并使用执行sh


5

蟒蛇

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

数字:55非数字:34


请注意,解决方案中没有评论。仅代码。
以利沙

4

PHP(55字节)

该程序使用二进制文件(哇,这是我第三次重复使用相同的技巧了)。21个非数字字符,34个数字字符。没有字母,因为字母很无聊。

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@JanDvorak:我几乎可以肯定我读“之前或之后”。哦,那我就解决它。
Konrad Borowski14年


4

滑动(34个字符)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

不幸的是,Sclipting根本不使用任何ASCII字符,因此我必须在程序中填充21个无用的数字字符:(


2

Forth或Ruby,55岁

(34个数字+ 21个非数字)

向前

." Hello world!!!" \ 3141592653589793238462643383279502

红宝石

puts"Hello world!!!"#3141592653589793238462643383279502

使用注释来填充感觉很脏,但这是有效的答案。


2

J(55个字符)

(34个数字+ 21个非数字)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C#,233个字节

233个字符
144个数字
89个非数字字符

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

输出:

Hello world!!!

0

Japt,55个字节

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

在线尝试!

基本上,这是一个简单的hello世界,开始时带有一些垃圾,可以忽略但使代码满足条件。


-1

Windows批处理

echo Hello World!!!::0123456789012345678901234567890123

12
哇。这与我的sh解决方案有很大不同。
2014年

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.