Mã ngắn nhất để tạo đầu ra vô hạn


121

Viết mã ngắn nhất bạn có thể tạo ra một đầu ra vô hạn.

Đó là tất cả. Mã của bạn sẽ chỉ bị loại nếu nó ngừng sản xuất đầu ra tại một số điểm. Như mọi khi trong mã golf, mã ngắn nhất sẽ thắng.

Đây là danh sách các câu trả lời mà tôi nghĩ là thực sự thông minh, để họ có thể nhận được tín dụng:

Bảng xếp hạng


118
Tất cả các câu trả lời đều bị loại vì đến một lúc nào đó Trái đất sẽ bị mặt trời nuốt chửng và đến một lúc nào đó vũ trụ sẽ chết: P
Doorknob

17
"Vô hạn cho đến khi máy tính của bạn gặp sự cố"? <_ <
Izkata

5
Nếu tôi viết của tôi bằng Piet , tôi có thể đếm các pixel của văn bản mà các chương trình khác sử dụng không? Tôi tin rằng chương trình lặp lại nhỏ nhất có thể có sẽ là 6 pixel. Điều đó đánh bại Befunge nếu các pixel "tắt" vẫn được tính.
DampeS8N

9
@Izkata Vì vậy, bất kỳ câu trả lời nào làm hỏng máy tính của bạn cũng được cho phép: D
ɐɔıʇǝɥʇuʎs

7
@Doorknob Vì vậy, thực sự, thách thức là tạo ra sản lượng vô hạn trong một khoảng thời gian hữu hạn . Âm thanh đủ dễ dàng.
Sanchise

Câu trả lời:


212

Befunge (1)

.

Đầu ra 0mãi mãi. Nó hoạt động vì trong các dòng Befunge bao quanh và bạn sẽ nhận được 0nếu bạn bật từ ngăn xếp trống.


6
Tôi nghĩ rằng chúng tôi có một người chiến thắng.
primo

96
Tôi thề tôi đã có một lớp Java quanh đây ở đâu đó ngắn hơn. +1
l0b0

56
Dấu chấm này hiện đã mang lại cho tôi danh tiếng nhiều hơn hai câu trả lời tiếp theo của tôi cộng lại.
bến

3
Aw ... Điều đó không công bằng :) Chúng ta hãy làm như thế này: Tôi giảm kích thước của hình ảnh đó xuống một vài pixel và chúng tôi hiển thị nó rất nhỏ .. Vì vậy, nó trông giống như một dấu chấm? Và gọi nó là thậm chí? :)
Benjamin Podszun

4
Tại sao đây không phải là câu trả lời được chấp nhận?
Claudiu

101

x86 .COM Thực thi, 7

trong hex:

b8 21 0e cd 10 eb fc

Những cái khác cần kilobyte hoặc nhiều thư viện hệ thống và thời gian chạy. Trở lại vấn đề cơ bản:

$ echo -ne '\xb8!\xe\xcd\x10\xeb\xfc' > A.COM
$ dosbox A.COM

đầu ra

Bạn có thể thay đổi byte thứ 2 ( 0x21, hoặc !) để thay đổi đầu ra.

Sử dụng ngắt BIOS cho đầu ra; không cần DOS, nhưng tôi không cài đặt QEMU.


Giải trình

Mã máy tương ứng với lắp ráp sau:

        mov     ax, 0x0e21
again:  int     0x10
        jmp     again

Đầu ra là tất cả trong intcuộc gọi - theo tham chiếu này , int 0x10 với 0x0e trong AH sẽ in byte theo AL ra màn hình.

Biết rằng thanh ghi AX là một từ 16 bit bao gồm AH ở byte cao và AL ở byte thấp, chúng ta có thể lưu một tải thêm (và do đó là một byte trong mã máy) bằng cách tải chúng lại với nhau.


2
Ồ Điều đó thực sự tốt
tbodt

46
chiều dài mã máy thấp nên có giá trị nhiều điểm hơn các ngôn ngữ cấp cao.
pwned

12
Đây là mã ngắn nhất theo nghĩa thực.
microbian

4
Nó không chỉ hoạt động, nó hoạt động nhanh hơn tất cả các mục khác. :)
Thane Brimhall

14
@ThaneBrimhall nào của khóa học là tiêu chí quan trọng nhất bởi cho đến nay cho một vòng lặp vô hạn ... Nếu máy tính của tôi bị treo lên, tôi muốn nó làm điều đó trong những cách hiệu quả nhất!
kratenko

91

Tập tin Windows Batch, 2 ký tự

%0

Gọi chính nó vô hạn.


12
Đóng vị trí thứ hai, người đàn ông. Làm tốt. Tôi chỉ từng thấy một câu trả lời mà Batch đã giành được nó.
khai mạc

Nó thực sự tuyệt vời!!!
Qwertiy

Điều này thật tuyệt!
Patrick Purcell

Cách thức hoạt động: %0không có @, vì vậy nó sẽ liên tục xuất ra một cái gì đó như thế nào ...> %0. Điều này đôi khi có thể ăn toàn bộ RAM, vì nó là đệ quy.
Erik the Outgolfer 06/10/2016

2
@EriktheOutgolfer có thể ? Làm thế nào điều này sẽ không sụp đổ tại một số điểm do đệ quy vô hạn? Tôi không thấy làm thế nào điều này có thể diễn ra trong nhiều giờ
phil294

68

Befunge 98 - 2

,"

Đầu ra ",,,,,,,,,,," vĩnh cửu.


2
Thật ra hơi thông minh.
tbodt

Cảm ơn bạn. Thật lạ, ", phiên bản xuất ra khoảng trắng (hoặc". Đầu ra 32 32 32) bằng cách sử dụng triển khai b98 phổ biến nhất. Không biết nó lấy nó từ đâu.
AndoDaan

1
Thật tệ khi nó bị chôn vùi dưới 82.395 câu trả lời thực sự nhảm nhí.
tbodt

7
@tbodt Vâng, theo thông số kỹ thuật, chương trình nhỏ của tôi có tất cả sự vĩnh cửu để tiến lên. Vì vậy, ... ngón tay
đan

@AndoDaan:", tạo ra một chuỗi các dấu phẩy và INT_MAX-2 không gian, và sau đó in ra không gian cuối cùng Vì vậy, các ngăn xếp sẽ lấp đầy chính nó với một dấu phẩy INT_MAX-3 không gian, không thực sự hiệu quả..
YoYoYonnY

62

sh, 3 byte

yes

đầu ra yliên tục


10
Mặc dù yeslà một nhị phân bên ngoài, và không phải là một phần của bash (nói đúng).
Bob

55
Trong bash, (hầu hết) mọi thứ là một nhị phân bên ngoài.
Julian Kuhn

5
Thông thường bạn không có bí danh y=yesvà nếu hệ thống của bạn không bí truyền, bạn có thể cho rằng đó yeslà trong $PATH(xem GNU Core Utility ). Với logic của bạn, có thể giả định các chòm sao kỳ lạ cho mọi giải pháp.
klingt.net

5
Đúng, nhưng đây không chỉ là một bashkhả năng: Tôi là một phần cơ bản của vỏ POSIX của các tiện ích cốt lõi . (Tức là: vui lòng thay đổi tiêu đề cho sh: 3 ký tự ;-)
F. Hauri

2
Như Technosaurus nói, trong busybox, nó là một nội dung, nhưng trong sh thì không phải vậy nên bạn phải nói sh + coreutils thay thế.
Erik the Outgolfer

42

Haskell: 8 nhân vật

Chủ đề cũ, nhưng một trong những niềm vui là

 fix show

trong Haskell, nó in

\\\\\\\\\\\\\....

mãi mãi vì nó cơ bản chạy

 let x = show x in x

Nó biết rằng đó xlà một chuỗi, vì vậy ký tự đầu tiên là ", vì vậy điều này cần phải được thoát với \", nhưng biết rằng \cần phải được thoát như vậy \\\x, và cứ như vậy.


... wow. Bây giờ tôi đang tự hỏi nếu fix$showcó thẩm mỹ hơn :-)
John Dvorak

7
Bởi vì điều này đòi hỏi import Data.Functionvà bởi vì nó trả về chuỗi chứ không phải in nó, tôi đặt câu hỏi về tính công bằng của số lượng ký tự. Ngoài ra, chuỗi thực sự là "\" \\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\\\ ...".
Anders Kaseorg

36

Tập tin Windows Batch, 8 ký tự

:a
goto a

1
Điều này không tạo ra đầu ra vô hạn, phải không ...?
Doorknob

38
nó không ... không có @echo, nó sẽ in "goto a" cho đến khi bạn đóng nó
Patrick Purcell

11
chúng ta cần mor BAT quanh đây
Einacio

35
Tôi đếm mười ký tự: :a\r\ngoto abởi vì Windows sử dụng CRLF
wchargein

1
@WChargin Tôi vừa kiểm tra bằng trình soạn thảo hex. 3a 61 0a 67 6f 74 6f 20hoạt động trên cửa sổ của tôi 8 ...: P
YoYoYonnY

32

Brainfuck, 4

+[.]

Ngoài ra,

-[.]

8
Không \x01phải cũng không phải \xFFlà ký tự có thể in. Tôi đoán đó không phải là một yêu cầu, mặc dù: - /
John Dvorak

Một cách để làm cho nó xuất ra các ký tự có thể in sẽ là thay thế + bằng, Điều đó có nghĩa là nó yêu cầu đầu vào mặc dù
Prismo

31

Java, 54 ký tự

Nỗ lực tốt nhất trong Java:

class A{static{for(int i=0;i<1;)System.out.print(1);}}

7
Chức năng, tuân thủ các quy tắc, chơi golf. Tự hỏi tại sao nó bị hạ cấp.
thao tác

14
Có java cấm for(;;)mẫu cổ điển ? Thế còn while(true)?
CodeInChaos

17
@CodesInChaos, Java thường không cho phép các mẫu đó và thông thường tôi sẽ xem xét chúng sạch hơn và thành ngữ hơn. Ở đây, mặc dù chúng tôi đang cố gắng lén một vòng lặp vô hạn qua trình biên dịch (các biểu mẫu đó khiến trình biên dịch phàn nàn về khối {} tĩnh không thoát).
Rich Smith

2
@M Mechanicalsnail Có, các khối tĩnh không thể thực thi một mình kể từ java 7.
Fabinout

1
@OliverNi Nhưng bạn không thể sử dụng statickhối.
Okx

30

Bash, 4 byte

$0&$

Đầu ra ./forever2.sh: line 1: $: command not foundliên tục.

$0được đặt nền, mỗi cha mẹ sẽ chết sau lệnh không hợp lệ $và do đó stack / memory không bị ăn hết và điều này sẽ tiếp tục vô thời hạn.

Kỳ lạ là đầu ra ngày càng chậm hơn theo thời gian. topbáo cáo rằng việc sử dụng CPU hệ thống gần 100%, nhưng có các quá trình bộ nhớ hoặc CPU-hog. Có lẽ một số phân bổ tài nguyên trong kernel sẽ ngày càng kém hiệu quả.


2
có thể là hành vi của thiết bị xuất chuẩn hoặc tương tự ...
masterX244

1
giải phóng tài nguyên đang cạnh tranh với các quy trình giả mạo / Để ngăn chặn nó, bạn không thể giết quá trình vì PID chỉ thay đổi cách duy nhất là đổi tên tập lệnh nên $0không thành công.
Emmanuel

29

LOLCODE (36)

HAI IZ 1<2? VISIBLE "0" KTHX KTHXBYE 

Tôi nghĩ rằng tôi sẽ cho LOLCODE một shot, có số lượng chức năng lớn đáng ngạc nhiên.


2
Đừng cần hỏi về stdio.
con mèo

Trong phiên bản repl.it của LOLCODE, bạn không cần HAIKTHXBYE
MilkyWay90

24

JavaScript: 14

CẢNH BÁO: bạn thực sự không muốn chạy cái này trong trình duyệt của bạn

for(;;)alert()

31
Chỉ cần kiểm tra "Ngăn chặn trang web này mở thêm hộp thoại".
Julian Kuhn

1
@JohannesKuhn không kiểm tra điều này và bạn cần khởi động lại
Ilya Gazman

8
Hoặc không làm gì cả và nó không hiển thị bất kỳ đầu ra nào nữa.
Julian Kuhn

chỉ chạy alert()cho tôi lỗi nàyError: Not enough arguments [nsIDOMWindow.alert]
Clyde Lobo

3
Có thực sự là đầu ra vô hạn, khi quá trình bị chặn và thực thi tạm dừng cho đến khi tương tác hình người?
Morten Bergfall

24

Máy Turing - 6 ký tự:

#s->1Rs

trong đó #biểu tượng trống (trên băng theo mặc định), smô tả trạng thái duy nhất (bắt đầu) hiện có, 1đang in một chữ số, Rcó nghĩa là dịch chuyển sang phải, sở cuối là ở trạng thái tương tự.


3
Tôi đếm 7 ký tự!?
F. Hauri

9
Trong ký hiệu 5-tuple phổ biến nhất , ký hiệu này sẽ được viết đơn giản dưới dạng 5 ký tự s#1Rs(trạng thái hiện tại, ký hiệu hiện tại, ký hiệu để viết, hướng chuyển sang trạng thái tiếp theo).
res

19

Haskell, 10

print[1..]

Tôi nghĩ rằng đây là mã ngắn nhất để

  1. In một cái gì đó ra.
  2. Tạo một cơ sở hạ tầng vô hạn Show: có thể.

Đối với những người quan tâm, nó in:

[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,...

4
Có bất kỳ lý do bạn chọn số ma thuật 32 để dừng lại?
ike

12
Nó có vẻ tốt và tròn, tại nó cũng lấp đầy không gian khối mã tốt nhất có thể mà không cần một dòng tiếp theo.
shiona

2
Nếu máy có dung lượng bộ nhớ hữu hạn, nó có thể chấm dứt khi số nguyên tăng quá lớn để giữ trong bộ nhớ?
Jeppe Stig Nielsen

3
@JeppeStigNielsen Có. Tuy nhiên, một số nguyên sẽ lấp đầy ngay cả một megabyte bộ nhớ sẽ là 2 ^ (2 ^ 20), hoặc khoảng 6,7 * 10 ^ 315652. Lên đến một gigabyte bộ nhớ và con số sẽ trở thành 2 ^ (2 ^ 30), một con quái vật với gần nửa tỷ chữ số. Tôi khá chắc chắn rằng nếu chúng ta thử in loạt phim thì cái chết nhiệt của vũ trụ sẽ tấn công chúng ta trước khi bộ nhớ hết. Và cách thất bại trước đó.
shiona

5
Trong các bình luận bên dưới OP, có đề cập rằng 'vô hạn cho đến khi máy tính của bạn gặp sự cố'.
11684

19

Tuyệt vời 4

24MB

Marbelous cũng đáng ngạc nhiên ở đây. Điều này sẽ đăng một số lượng vô hạn các ký hiệu đô la $, mặc dù nó sẽ đạt giới hạn ngăn xếp khá nhanh.

Làm thế nào nó hoạt động.

24 là một ngôn ngữ, nó sẽ rơi ra khỏi bảng và được in thành STDOUT như là ký tự ascii tương ứng của nó. MB là tên ngầm định được đặt cho bo mạch chính, vì bo mạch chính không có đầu vào, nó sẽ kích hoạt mọi dấu tích. Và vì các ô được đánh giá từ trái sang phải, nên chữ sẽ luôn được in trước cuộc gọi đệ quy tiếp theo.

Vì vậy, điều này là tương đương khó khăn với mã giả này:

MB() {
    print('$');
    while(true) MB();
}

Một giải pháp không có đệ quy vô hạn 11

24@0
@0/\..

Cái này hoạt động bằng cách lặp theo nghĩa đen giữa hai cổng @0, bất cứ khi nào 24 chạm xuống thấp hơn, @0nó sẽ được chuyển đến ô bên dưới phần trên @0. Đó là vùng đất trên /\, là một nhà điều hành bản sao, nó đặt một bản sao của đá cẩm thạch (nghĩa đen) ở bên trái (trở lại trên cổng thông tin) và một bản khác ở bên phải. Bản sao này sau đó rơi ra khỏi bảng (vì ..là một ô trống) và được in thành STDOUT. Trong mã giả, điều này sẽ dịch thành:

MB() {
    while(true) print '$'
}

Một giải pháp ngắn hơn mà không cần đệ quy vô hạn 9

24
\\/\..

Cái này liên tục ném viên bi xung quanh giữa một cloner và bộ làm lệch hướng, đặt một bản sao trên ô ngoài cùng bên phải, để được thả ra khỏi bảng. Trong mã giả sẽ trông giống như:

MB() {
    List charlist = ['$'];
    while(true) {
        charlist.add(charlist[0];
        charlist.add(charlist[0];
        charlist.pop();
        print(charlist.pop());
        // Wait, what?
    }
}

Ghi chú

Các ..tế bào là cần thiết trên hai bảng cuối cùng vì các viên bi sẽ rơi ra khỏi bảng (và bị loại bỏ) nếu không. Để thêm phần thú vị, bạn thay thế viên 24bi bằng FF..ô trống bằng a ??, biến bất kỳ viên bi nào thành viên bi giữa 0 và giá trị hiện tại của nó trước khi thả nó xuống. Đoán xem nó sẽ trông như thế nào trên STDOUT.


tạo "/ \ / \" "\\ / \" để tránh tạo thêm một viên bi ngoài rìa trái? hoàn toàn cải thiện thẩm mỹ.
Sparr

@Sparr, điểm lấy, tôi đã chỉnh sửa bài.
overactor

5
Không phải giải pháp này là 25165824 byte (24MB)? ; P
HyperNeutrino

18

C, 23 ký tự

Hơi ngắn hơn câu trả lời C / C ++ tốt nhất cho đến nay. In các dòng trống vô hạn (nhưng nếu được biên dịch mà không tối ưu hóa, sẽ tràn ra ngăn xếp).

main(){main(puts(""));}

1
22 ký tự: putc(0)(hoặc 1, hoặc 2, ... hoặc 9). Liệu điều đó có hiệu quả?
CompuChip

@CompuChip, putcyêu cầu 2 tham số.
xấu xí

10
@tdbot, chỉ cần lưu ý rằng đây là câu trả lời được chấp nhận. Tôi đánh giá cao lời khen, nhưng không thể hiểu tại sao. Có một câu trả lời
ugoren 11/03/2016

@tbodt, không phải tdbot. ftfy
nyuszika7h

5
@ nyuszika7h, Bằng cách này tôi có thể cho thấy mình khiêm tốn như thế nào, trong khi giữ 15 đại diện.
ugoren

14

Python 3: 15, 17 hoặc 18 ký tự

Câu trả lời của mdeitrick dài hơn trong Python 3, thay thế printcâu lệnh bằng lệnh gọi hàm (15 ký tự):

while 1:print()

Đây vẫn là đoạn ngắn nhất tôi tìm thấy trong Python 3. Tuy nhiên, có một số cách in thú vị hơn trong một vòng lặp vô hạn chỉ dài hơn một vài ký tự.

  • print()trả về None, mà! = 9, làm cho nó trở thành một vòng lặp vô hạn; đó 8là một no-op thay thế cho pass(18 ký tự):

    while print()!=9:8
    
  • iter(print, 9)định nghĩa một iterable trả về đầu ra print()cho đến khi nó bằng 9(điều này không bao giờ xảy ra). anytiêu thụ đầu vào lặp đi lặp lại tìm kiếm một giá trị thực, không bao giờ đến vì print()luôn luôn trả về None. (Bạn cũng có thể sử dụng setđể có hiệu ứng tương tự.)

    any(iter(print,9))
    
  • Hoặc, chúng ta có thể sử dụng iterable bằng cách kiểm tra xem nó có chứa 8(17 ký tự) không:

    8in iter(print,9)
    
  • Hoặc, giải nén nó bằng toán tử splat :

    *_,=iter(print,9)
    
  • Cách kỳ lạ nhất mà tôi nghĩ đến là sử dụng tính năng phá hủy splat bên trong một lệnh gọi hàm function(*iterable). Có vẻ như Python cố gắng tiêu thụ toàn bộ số lần lặp trước khi thậm chí thử chức năng gọi hàm ngay cả khi lệnh gọi hàm không có thật. Điều này có nghĩa là chúng ta thậm chí không cần một hàm thực sự, bởi vì lỗi loại sẽ chỉ bị ném sau khi lặp đi lặp lại hết (nghĩa là không bao giờ):

    8(*iter(print,9))
    

*iter(print,1),hoạt động và chỉ có 15 ký tự, nhưng tiêu tốn khá nhiều bộ nhớ.
ivzem


14

x86 .COM Thực thi được, 5 byte

đầu ra bộ char ASCII vô tận

trong hex:

40 CD 29 FF E6

trong asm:

inc ax
int 0x29
jmp si

Giải trình:

inc axtăng số đăng ký AX lên một. int 0x29là thói quen "đặt nhanh char" của MSDOS, chỉ đơn giản là xuất giá trị trong AL (phần thấp của AX) và tiến con trỏ lên một. jmp sichỉ là một cách kỳ lạ để nhảy trở lại đầu trang, vì thanh ghi SI là 0x100 trên hầu hết mọi hệ điều hành giống như DOS, cũng là nơi một chương trình .com bắt đầu;) Thay vào đó, bạn cũng có thể thực hiện một bước nhảy ngắn sử dụng 2 byte.

Nguồn:

Giá trị bắt đầu của MSDOS

Sizecoding WIKI


13

Bitxtreme , 0,25 byte

Đại diện nhị phân:

00

Từ tài liệu:

Bit đầu tiên của mỗi cặp là một con trỏ đến vị trí bộ nhớ giữ giá trị để trừ khỏi bộ tích lũy. Kết quả được lưu trữ trong cùng một vị trí bộ nhớ được chỉ ra bởi toán hạng. Nếu kết quả là âm (các bit nằm trong biểu diễn bổ sung của hai) thì bit thứ hai của cặp sẽ được thêm vào PC hiện tại, modulo 2.

Bộ đếm và bộ tích lũy chương trình được khởi tạo về 0; sau đó, nội dung của vị trí bộ nhớ 0 được trừ khỏi bộ tích lũy. Điều này xảy ra là 0, khiến cho bộ tích lũy ở mức 0. Vì không có carry, bit thứ hai không được thêm vào bộ đếm chương trình.

Bộ đếm chương trình sau đó được tăng thêm 2 modulo 2, gửi nó trở lại điểm bắt đầu và gây ra một vòng lặp vô hạn. Ở mỗi bước, vị trí bộ nhớ đặc biệt 0 được sửa đổi, làm cho nội dung của nó (a 0) được ghi vào đầu ra.

Có thể lập luận rằng chương trình này nên được ghi là 1 byte, bởi vì trình thông dịch chính thức trong Python yêu cầu không đệm. Tuy nhiên, tôi không nghĩ phần đệm không thực sự là .


12

Tóm tắt: Ruby - 9, Golfscript - 6,> <> - 2, Khoảng trắng - 19, Perl - 2

Một ngôn ngữ tôi biết và hai ngôn ngữ tôi chưa từng sử dụng trước đây: D
EDIT: Perl một ngôn ngữ không hoạt động khi tôi cài đặt Perl để thử nó :(

Ruby, 9

loop{p 1}

Đơn giản chỉ cần in 1 trên các dòng riêng biệt liên tục.

Ngoài ra, một loạt các lựa chọn thay thế:

loop{p''} # prints [ "" ]  on separate lines continually
loop{p p} # prints [ nil ] on separate lines continually

Giải pháp 10-char:

p 1while 1

Tôi thực sự ngạc nhiên khi tôi có thể loại bỏ khoảng trống giữa đầu tiên 1và đầu tiên while, nhưng rõ ràng nó hoạt động

Golf, 6

{1p}do

Chương trình Golfscript đầu tiên của tôi! : P

> <> ( ), 2

1n

Khoảng trắng , 19

lssslssstltlsslslsl

Trong đó sđại diện cho một không gian, tđại diện cho một tab và lmột nguồn cấp dữ liệu.


11
Mỗi khi ai đó gõ từ "Tôi không có Perl", Chúa sẽ giết một con mèo con.
primo

2
@primo: P Ít nhất là bây giờ tôi làm.
Doorknob

2
Đây là mã golf. Vui lòng tạo một câu trả lời cho mỗi lần gửi.
JB

21
@primo Tốt, tôi ghét mèo. Và tôi không có Perl.
SQB

5
Chương trình GS {1p}dochỉ in 1và thoát, bởi vì việc làm là một chuỗi thực thi-pop-test chỉ tiếp tục nếu nó kiểm tra đúng. (Vì không có đầu vào, ngăn xếp ban đầu "", sau khi thực hiện 1p, được bật và kiểm tra sai.) Chỉ cần thêm một bản sao sẽ hoạt động, tức là {1.p}do(ở mức 7 byte).
res

12

C, 25 24

main(){main(puts("1"));}

4
s/while/main/
ugoren

2
Tôi không chắc chắn rằng có ngoại lệ stackoverflow trong C, nhưng điều gì đó xấu sẽ xảy ra khi bạn hết bộ nhớ.
Ilya Gazman

9
Tailcall tối ưu hóa ftw.
Julian Kuhn

4
@JohannesKuhn: đó không phải là một cuộc gọi đuôi. Nếu nó đã được return main(puts("1"))thì đó là một cuộc gọi đuôi.
bến

4
@psgivens. Trong chức năng ca mà không có bất kỳ tham số có thể mất bất kỳ số lượng tham số. Chỉ có một chữ ký methodName(void)chấp nhận các tham số chính xác bằng không.
James Webster

12

> <> (Cá) , 2

Một cách sáng tạo để sử dụng codebox vô hạn của cá:

"o

Vì con trỏ lệnh quay trở lại đầu dòng sau khi đến cuối, mã này về cơ bản có thể được đọc là

"o"o

có nghĩa là 'đọc chuỗi "o" và sau đó xuất nó'.

Bạn có thể kiểm tra mã ở đây


11

perl, 10 ký tự

Đây là một giải pháp 10 char perl khác với một số sự đánh đổi khác nhau. Cụ thể, nó không yêu cầu cờ -n hoặc đầu vào của người dùng để bắt đầu. Tuy nhiên, nó vẫn tiếp tục ăn bộ nhớ quảng cáo.

warn;do$0

lưu vào một tệp, thực thi tệp đó và bạn nhận được, vd:

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.

Bạn không thể thực hiện việc này ngắn hơn bằng cách sử dụng say(luôn in một dòng mới ngay cả khi nó không thể tìm thấy một đối số từ bất cứ đâu) chứ không phải warn? (Điều này yêu cầu lựa chọn một biến thể Perl hiện đại bằng cách sử dụng -M5.010, nhưng điều đó không tính vào số lượng nhân vật của bạn.)


10

VBA: 12

Âm thanh là đầu ra, phải không?

do:beep:loop

Đặt nó trong tệp văn phòng MS kích hoạt macro yêu thích của đồng nghiệp để bạn 'vui vẻ'!

Private Sub Workbook_Open()
    Do:Beep:Loop
End Sub

Điểm thưởng nếu họ đang sử dụng tai nghe.


Dang, tôi đang xem qua các câu trả lời để xem có ai nghĩ về việc in chuông char chưa. +1
mbomb007

9

Hạt giống , 4 byte

99 5

Hãy thử trực tuyến! Đầu ra 11vô hạn

Tạo Chương trình Befunge-98 sau đây:

[glzgx"Lz^v*M7TW!4:wi/l-[, s44~s;|Sa3zb|u<B/-&<Y a@=nN>Nc%}"gq!kCW $1{2hyzABRj*glr#z(@Zx@xT=>1'.b
/

Hãy thử trực tuyến!


Phần có liên quan chỉ là thế này:

[>1'.b
/

bđẩy 11vào ngăn xếp và .in nó. 149cũng được đẩy lên ngăn xếp, nhưng không bao giờ thực sự được in.

Hoạt ảnh của mã đang chạy:

nhập mô tả hình ảnh ở đây


1
Điều này cuối cùng sẽ hết bộ nhớ nếu các giá trị liên tục được đẩy lên ngăn xếp mà không được bật lên?
caird coinheringaahing

8

C, 26 25 24 (không có đệ quy)

main(){for(;;puts(""));}

In '\n'ký tự vô tận . Đây là một byte dài hơn câu trả lời C ngắn nhất, nhưng không dựa vào tối ưu hóa cuộc gọi đuôi để tránh tràn ngăn xếp.


2
Bạn có thể cạo sạch một nhân vật bằng cách sử dụng for(;;)thay thếwhile(!
Alex Gittemeier

1
không !vì nó cứ xuất ra\n
l4m2

7

R, 13 ký tự

repeat cat(1)

repeat cat(1)nên làm việc
Dason

@Dason bạn nói đúng. Tôi không biết tại sao tôi cứ khăng khăng đặt chúng mỗi lần.
plannapus

7

PowerShell 2.0: 17 11 8

Giải pháp ban đầu của tôi:

while(1 -eq 1){1}

Nhờ độ phân giải:

while(1){1}

Tôi nghĩ Danko Durbić có người chiến thắng, ở đây. Tôi thậm chí không chắc tại sao điều này nên hoạt động, nhưng nó không và tôi không thể nghĩ ra bất cứ điều gì ngắn hơn cho đến nay.

for(){1}

1
Hãy thử while(1){1}.
res

@res Tôi sẽ cắt nó bằng hai while($true){1}nhưng giải pháp của bạn chắc chắn thắng - Tôi quên điều đó trong PowerShell $true -eq 1. Đăng nó như một câu trả lời, và tôi sẽ cho bạn một phiếu bầu.
Iszi

Hãy chỉnh sửa nó thành của bạn, nếu bạn muốn.
res

6
Hãy thử for(){1}.
Danko Durbić

@ DankoDurbić Bạn có thể giải thích tại sao điều đó làm việc? Tôi không hiểu lắm. Có vẻ như nó nên lỗi với tôi.
Iszi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.