编写可以产生无限输出的最短代码。
就这样。您的代码只有在某个时候停止产生输出时,才被取消资格。与代码高尔夫一样,最短的代码获胜。
这是我认为非常聪明的答案列表,因此可以得到好评:
编写可以产生无限输出的最短代码。
就这样。您的代码只有在某个时候停止产生输出时,才被取消资格。与代码高尔夫一样,最短的代码获胜。
这是我认为非常聪明的答案列表,因此可以得到好评:
Answers:
.
0
永远输出。之所以起作用,是因为在Befunge中,行会环绕,并且0
如果您从空堆栈中弹出,则会得到提示。
十六进制:
b8 21 0e cd 10 eb fc
其他需要千字节或更多的系统库和运行时。回归本源:
$ echo -ne '\xb8!\xe\xcd\x10\xeb\xfc' > A.COM
$ dosbox A.COM
您可以更改第二个字节(0x21
或!
)以更改输出。
使用BIOS中断进行输出;不需要DOS,但是我没有设置QEMU。
机器代码与以下程序集相对应:
mov ax, 0x0e21
again: int 0x10
jmp again
输出全部在int
调用中-根据此引用,AH中的int 0x10和0x0e会将AL中的字节打印到屏幕上。
知道寄存器AX是由高字节AH和低字节AL组成的16位字,我们可以通过将它们一起加载来节省额外的负载(从而节省机器代码中的一个字节)。
%0
无限调用自己。
%0
没有@
,因此会不断输出...> %0
。由于这是递归的,因此这可能会占用整个RAM。
,"
输出“ 、、、、、、、、、、、”,代表永恒。
yes
y
连续输出
yes
是外部二进制文件,但不是bash的一部分(严格来说)。
bash
功能:我不是核心utils的POSIX shell基本部分。(即:请更改sh的标题:3个字符;-)
旧线程,但有趣的是
fix show
在Haskell中,它会打印
\\\\\\\\\\\\\....
永远,因为它基本上在运行
let x = show x in x
它知道这x
是一个字符串,因此第一个字符是"
,因此需要使用进行转义\"
,但是知道\
需要进行转义\\\x
,依此类推。
fix$show
会更美观:-)
import Data.Function
,并且因为它返回字符串而不是打印字符串,所以我质疑字符计数的公平性。另外,该字符串实际上是“ \” \\\“ \\\\\\\” \\\\\\\\\\\\\\\“ \\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ “\\\\\\\\\\\\\\\\\ ......”
Windows批处理文件,8个字符
:a
goto a
:a\r\ngoto a
因为Windows使用CRLF
3a 61 0a 67 6f 74 6f 20
在我的Windows 8上工作...:P
+[.]
或者,
-[.]
\x01
也不\xFF
是可打印字符。我想这不是必须的,但:-/
Java的最佳尝试:
class A{static{for(int i=0;i<1;)System.out.print(1);}}
for(;;)
模式?那while(true)
呢
static
块。
$0&$
产出 ./forever2.sh: line 1: $: command not found
连续。
因为 $0
是有背景的,所以每个父对象都会在invalid命令之后死掉$
,因此堆栈/内存不会被耗尽,并且应该无限期地继续下去。
奇怪的是,随着时间的推移,输出变得越来越慢。 top
报告系统CPU使用率接近100%,但是存在内存或CPU占用进程。大概内核中的某些资源分配效率越来越低。
$0
失败。
HAI IZ 1<2? VISIBLE "0" KTHX KTHXBYE
以为我会试一试LOLCODE,它具有令人惊讶的大量功能。
HAI
和KTHXBYE
警告:您确实不想在浏览器中运行它
for(;;)alert()
alert()
给我这个错误Error: Not enough arguments [nsIDOMWindow.alert]
#s->1Rs
其中#
的空白符号(默认情况下在磁带上)是空白,s
描述唯一存在的(开始)状态,1
正在打印一个数字,R
表示向右移动,s
最后是保持相同状态。
s#1Rs
(电流状态时,电流-符号,符号到写入,方向对移位,下一状态)。
print[1..]
我认为这是最短的代码
Show
:able数据结构。对于那些感兴趣的人,它会打印:
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,...
24MB
Marbelous在这里表现出色。这将发布无限数量的美元符号$
,尽管它将很快达到堆栈限制。
这个怎么运作。
24是语言文字,它将从面板上掉下来并打印为STDOUT作为其相应的ascii字符。MB是隐式给予主板的名称,因为主板没有输入,它将触发每个刻度。并且由于单元是从左到右求值的,因此文字将始终在下一个递归调用之前打印。
因此,这与以下伪代码等效:
MB() {
print('$');
while(true) MB();
}
24@0
@0/\..
这个方法是通过在两个入口之间循环文字来工作的@0
,每当24个击中下部时,@0
它将被传送到上部下方的单元中@0
。它落在上/\
,它是一个克隆运算符,它将一个大理石(文字)副本放在其左侧(在门户背面)上,将另一副本放在其右侧。然后,该层从板上掉下来(因为它..
是一个空单元),并打印到STDOUT。用伪代码,这将转换为:
MB() {
while(true) print '$'
}
24
\\/\..
这个人不断地将大理石扔向克隆器和偏转器之间,将一个副本放在最右边的单元上,然后从板上掉下来。用伪代码看起来像:
MB() {
List charlist = ['$'];
while(true) {
charlist.add(charlist[0];
charlist.add(charlist[0];
charlist.pop();
print(charlist.pop());
// Wait, what?
}
}
注意
..
最后两个板上的单元格是必需的,因为否则大理石会从板上降落(并丢弃)。为了给您带来更多乐趣,您可以用替换24
大理石FF
,将空..
单元格替换为??
,这会将任何大理石转换为介于0和当前值之间的大理石,然后再将其放下。猜猜在STDOUT上会是什么样子。
到目前为止比最佳C / C ++答案略短。无限打印空行(但是如果不进行优化而编译,则会溢出堆栈)。
main(){main(puts(""));}
putc(0)
或1或2,...或9)。那行得通吗?
putc
需要2个参数。
mdeitrick的答案在Python 3中更长,它用print
函数调用(15个字符)代替了该语句:
while 1:print()
这仍然是我在Python 3中发现的最短的时间。但是,在无限循环中有一些更有趣的打印方式,它们的长度只有几个字符。
print()
return None
,!= 9,使其成为无限循环;的8
是无操作该可代替pass
(18个字符):
while print()!=9:8
iter(print, 9)
定义一个迭代器,该迭代器返回的输出print()
直到它等于9
(永远不会发生)。any
使用可迭代的输入来寻找真实值,此值自print()
返回始终返回None
。(您也可以使用set
相同的效果。)
any(iter(print,9))
或者,我们可以通过测试迭代器是否包含8
(17个字符)来使用该迭代器:
8in iter(print,9)
要么, 使用splat运算符解压缩它:
*_,=iter(print,9)
我想到的最奇怪的方法是在函数调用中使用splat分解function(*iterable)
。似乎Python甚至在尝试函数调用之前就尝试消耗整个可迭代对象,即使该函数调用是伪造的。这意味着我们甚至不需要真正的函数,因为类型错误只会在迭代器用完后抛出(即从不):
8(*iter(print,9))
*iter(print,1),
可以工作并且只有15个字符,但是确实消耗了很多内存。
输出无限个1
二进制表示形式:
00
从文档中:
每对的第一位是指向存储位置的指针,该位置保存要从累加器中减去的值。结果存储在操作数指向的相同存储位置。如果结果为负(位以二进制补码表示),则该对的第二位将以模2形式添加到当前PC。
程序计数器和累加器初始化为零;然后,从累加器中减去存储单元0的内容。恰好为0,累加器为零。由于没有进位,因此第二位不会添加到程序计数器中。
然后,程序计数器将以2模2递增。将其发送回起点,并导致无限循环。在每个步骤中,特殊存储位置0都会被修改,从而导致其内容(0
)写入输出。
可以说该程序应记为1个字节,因为Python中的官方解释器需要零填充。但是,我认为零填充不是真正的代码。
我知道一种语言,而我从未用过两种语言:D
编辑:安装Perl尝试它时Perl没用:(
loop{p 1}
只需连续在单独的行上打印1。
此外,还有很多替代方案:
loop{p''} # prints [ "" ] on separate lines continually
loop{p p} # prints [ nil ] on separate lines continually
10个字符的解决方案:
p 1while 1
实际上我很惊讶我可以删除第一个1
和第二个之间的空间while
,但是显然可以
{1p}do
我的第一个Golfscript程序!:P
1n
lssslssstltlsslslsl
其中,s
代表空格,t
代表制表l
符和换行符。
{1p}do
仅打印1
并退出,因为do是一个exec-pop-test序列,仅在测试为true时才继续。(由于没有输入,因此堆栈最初""
是,在exec of 1p
之后被弹出并测试为false。)尽管如此,仅添加dup即可{1.p}do
(例如7字节)。
C 25 24
main(){main(puts("1"));}
s/while/main/
return main(puts("1"))
话,那将是一次尾声。
methodName(void)
接受完全为零的参数。
这是另一个10个字符的perl解决方案,具有一些不同的权衡。具体来说,它不需要-n标志或用户输入即可启动。然而,它确实使记忆力无限。
warn;do$0
保存到文件,执行该文件,您会得到例如:
Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
Warning: something's wrong at /tmp/foo.pl line 1.
音频输出了吧?
do:beep:loop
将其放入“最喜欢的”同事最喜欢的启用了宏的MS Office文件中,以获取“乐趣”!
Private Sub Workbook_Open()
Do:Beep:Loop
End Sub
如果他们使用耳机,则可获赠积分。
main(){for(;;puts(""));}
打印无尽的'\n'
字符。这比最短的C答案长一个字节,但不依赖尾部调用优化来避免堆栈溢出。
for(;;)
while(!
!
因为它一直在输出\n
我最初的解决方案:
while(1 -eq 1){1}
感谢res:
while(1){1}
我认为DankoDurbić在这里有赢家。我什至不知道为什么这应该起作用,但是它可以起作用,到目前为止,我想不起任何更短的事情。
for(){1}
while(1){1}
。
while($true){1}
但您的解决方案肯定会胜出-我在PowerShell中忘记了这一点$true -eq 1
。将其发布为答案,我将给您投票。
for(){1}
。