Đếm mãi


71

Viết một chương trình đếm mãi mãi, bắt đầu từ một.

Quy tắc:

  • Chương trình của bạn phải đăng nhập STDOUThoặc thay thế chấp nhận được, nếu STDOUTkhông có sẵn.
  • Chương trình của bạn phải là một chương trình đầy đủ, có thể chạy và không phải là một chức năng hoặc đoạn trích.
  • Chương trình của bạn phải xuất ra mỗi số có một ký tự phân tách ở giữa (một dòng mới, dấu cách, tab hoặc dấu phẩy), nhưng điều này phải phù hợp với tất cả các số.
  • Bạn có thể in các số ở dạng thập phân, đơn nhất hoặc ở cơ sở 256 trong đó mỗi chữ số được biểu thị bằng một giá trị byte .
  • Chương trình của bạn phải tính ít nhất là 2 128 (bao gồm) mà không gặp sự cố và không hết bộ nhớ trên máy tính để bàn hợp lý. Cụ thể, điều này có nghĩa là nếu bạn đang sử dụng unary, bạn không thể lưu trữ một đại diện đơn nhất của số hiện tại trong bộ nhớ.
  • Không giống như các quy tắc thông thường của chúng tôi, vui lòng sử dụng ngôn ngữ (hoặc phiên bản ngôn ngữ) ngay cả khi nó mới hơn thử thách này. Các ngôn ngữ được viết cụ thể để gửi câu trả lời 0 byte cho thử thách này là trò chơi công bằng nhưng không đặc biệt thú vị.

    Lưu ý rằng phải có một thông dịch viên để trình có thể được kiểm tra. Được phép (và thậm chí được khuyến khích) tự viết trình thông dịch này cho một ngôn ngữ chưa được thực hiện trước đó.

  • Đây không phải là tìm ngôn ngữ với giải pháp ngắn nhất cho việc này (có một số nơi mà chương trình trống thực hiện thủ thuật) - đây là về việc tìm giải pháp ngắn nhất trong mọi ngôn ngữ. Do đó, không có câu trả lời sẽ được đánh dấu là chấp nhận.

Mục lục

Đoạn trích Stack ở cuối bài đăng này tạo ra danh mục từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

## Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

## Perl, 43 + 2 (-p flag) = 45 bytes

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


29
Tôi không chắc cách kết hợp phải xuất ra mỗi số với một ký tự phân tách ở giữathể in các số [...] trong cơ sở 256 .
Dennis

6
Đối với những thách thức trong tương lai, tôi có thể đề xuất hộp cát sao cho tất cả các chi tiết này có thể được sắp xếp trước khi mọi người bắt đầu đăng câu trả lời? :)
Martin Ender

3
@IlmariKaronen Tôi giải thích rằng đó là giới hạn bộ nhớ, không phải là giới hạn thời gian. có thể là giới hạn thời gian trên mỗi lần tăng. chỉ cần đặt bộ đếm thành 2 ** 128-10 và xem mất bao lâu để thực hiện mười bước cuối cùng đó.
Sparr

5
Chúng ta có thể có số 0 hàng đầu trong đầu ra không?
Paŭlo Ebermann

4
Ừ !!! Tôi có câu trả lời cho TI-89 (56b), nhưng tôi không thể đăng b / c Tôi mới vào trang web và không có Rep 10+!
gregsdennis

Câu trả lời:


63

Mê cung , 5 byte

):
\!

IP IP trong mã đi vòng tròn

Hướng dẫn liên quan:

)       Increment top of stack (stack has infinite zeroes at bottom)
:       Duplicate top of stack
!       Output top of stack
\       Output newline

77
Chương trình rất buồn khi nó không dừng lại ..
Trình tối ưu hóa

7
@Optimizer def sad (thật vậy):
YoYoYonnY

1
Tại sao đây không phải là 4 byte?
Aurel Bílý

2
@ Aurel300 byte thứ năm là dòng mới giữa :\
Sp3000

@ Sp3000 À, vâng. Tôi thật ngốc. :)
Aurel Bílý

46

> <> , 8 byte

01+:nao!

Các bước:

  • Đẩy 0 trên ngăn xếp
  • Thêm 1 vào phần tử ngăn xếp trên cùng
  • Sao chép phần tử ngăn xếp trên cùng
  • Xuất ra đỉnh của ngăn xếp dưới dạng số
  • Xuất một dòng mới
  • Chuyển đến bước 2 bằng cách quấn quanh và nhảy hướng dẫn tiếp theo (bước 11)

(Một chương trình ít hiệu quả bộ nhớ (do đó không hợp lệ) là llnao.)


66
+1 cho ẩn yêu cầu upvote thiếu kiên nhẫn trong một dòng mã về cơ bản là đọc cộng với một, ngay bây giờ!
Janus Bahs Jacquet

24

Haskell, 21 byte

main=mapM_ print[1..]

Số nguyên chính xác tùy ý và danh sách vô hạn làm cho điều này trở nên dễ dàng :-)

May mắn mapM_là trong khúc dạo đầu. Nếu Data.Traversablecũng như vậy, chúng ta thậm chí có thể thu nhỏ nó thành 19 byte:

main=for_[1..]print

Không có biểu tượng khái quát hóa bản đồ / mapM, v.v.?
JDługosz

@ JDługosz: không phải tôi biết
Bergi

À, vì nó vẫn sẽ phải đưa sequencera kết quả để đầu ra thực sự xảy ra.
JDługosz

không [1..]được phép đơn giản , vì nó in tất cả các số bằng dấu phẩy trong beween? hoặc [vít đầu tiên tất cả lên?
Baconaro

@Baconaro: đó là một danh sách, nó không in bất cứ thứ gì. GHCi sẽ in kết quả nếu bạn nhập thuật ngữ thay thế, nhưng đó không phải là chương trình có thể chạy được. Và vâng, hàng đầu [cũng không được phép.
Bergi

23

Gol> <> , 3 byte

P:N

Các bước:

  • Thêm 1 vào phần tử ngăn xếp trên cùng (khi bắt đầu, nó là 0 ẩn)
  • Sao chép phần tử ngăn xếp trên cùng
  • Bật và xuất đỉnh của ngăn xếp dưới dạng số và một dòng mới
  • Quấn qua bước 1 khi chúng tôi đến cuối dòng

21

Tuyệt vời , 11450 4632 byte

In số thập phân là một nỗi đau !!

Chắc chắn không chiến thắng với cái này, nhưng tôi nghĩ tôi sẽ cho nó một phát súng. Tôi hy vọng nó ổn khi nó đệm đầu ra tới 40 số không (để phù hợp với 2 ^ 128).

00@0..@1..@2..@3..@4..@5..@6..@7..@8..@9..@A..@B..@C..@D..@E..@F..@G..@H..@I..@J
\\++..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00
..EhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhun
....AddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddt
..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7\/
../\&8..........................................................................
....@0..........................................................................
....../\&8......................................................................
....//..@1......................................................................
........../\&8..................................................................
......////..@2..................................................................
............../\&8..............................................................
........//////..@3..............................................................
................../\&8..........................................................
..........////////..@4..........................................................
....................../\&8......................................................
............//////////..@5......................................................
........................../\&8..................................................
..............////////////..@6..................................................
............................../\&8..............................................
................//////////////..@7..............................................
................................../\&8..........................................
..................////////////////..@8..........................................
....................................../\&8......................................
....................//////////////////..@9......................................
........................................../\&8..................................
......................////////////////////..@A..................................
............................................../\&8..............................
........................//////////////////////..@B..............................
................................................../\&8..........................
..........................////////////////////////..@C..........................
....................................................../\&8......................
............................//////////////////////////..@D......................
........................................................../\&8..................
..............................////////////////////////////..@E..................
............................................................../\&8..............
................................//////////////////////////////..@F..............
................................................................../\&8..........
..................................////////////////////////////////..@G..........
....................................................................../\&8......
....................................//////////////////////////////////..@H......
........................................................................../\&8..
......................................////////////////////////////////////..@I..
............................................................................../\&8
........................................//////////////////////////////////////..@J
&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9
Sixteenbytedecimalprintermodulewitharegi

:Sixteenbytedecimalprintermodulewitharegi
}J}J}I}I}H}H}G}G}F}F}E}E}D}D}C}C}B}B}A}A}9}9}8}8}7}7}6}6}5}5}4}4}3}3}2}2}1}1}0}00A
/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A
%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..

:/A
..}0..}0..
..>>}0....
..>>>>\\..
....//..//
../\>>\\..
....>>..//
....>>\\..
....>>....
\\>>//....
..>>......
..>>......
../\......
..../\<<..
......<<..
..\\<<//..
....~~....
....++....
....\\..//
\\....>9\/
..\\..?0..
......++..
....\\....
......{0..

:%A
@0..
}0..
<A-A
{0@0

:Eg
}0}0}0}0}0}0}0}0
^7^6^5^4^3^2^1^0
~~....~~~~..~~~~
^0^0^0^0^0^0^0^0
{0{0{0{0{0{0{0{0

:Ehun
}0..}0
Eg..&0
=8&0{0
&1\/00
0100&0
&1&1{1
{1{0

:Addt
}0}1
{1{1

In nhị phân sẽ ngắn hơn?
SuperJedi224

3
(hoặc những gì về unary?)
Doorknob

@Doorknob hiển thị đầu ra không phải là vấn đề. Đó là một cái gì đó trên Ehunbảng được cho là tăng chữ số tiếp theo, nhưng không hoạt động đúng
TheDoctor

1
Bạn có biết bạn có thể bỏ các dấu chấm ở cuối mỗi dòng và các dòng trống giữa các bảng và sử dụng các ký tự đơn cho tên bảng không? Bạn chỉ cần lặp lại ký tự đó một lượng thời gian thích hợp để gọi nó. Điều này có thể nhận được câu trả lời của bạn xuống khoảng 3000 byte.
overactor

Cuối cùng, tôi sẽ đưa ra một cam kết với marbelous.py bao gồm tất cả include/theo mặc định
Sparr

18

C (chỉ kiến ​​trúc 64 bit), 53 byte

Dựa vào các con trỏ là ít nhất 64 bit và in chúng thành hex bằng cách sử dụng bộ %pxác định. Chương trình sẽ trở lại ngay khi chạm 2 ^ 128.

char*a,*b;main(){for(;++b||++a;)printf("%p%p ",a,b);}

1
Vì vậy, nếu những con trỏ đó ở mỗi 64 bit, bạn chỉ có thể đếm đến 2 ^ 128-1, phải không?
flawr

6
Không hợp lệ vì không thể đếm tới 2 ^ 128
edc65

14
Tôi thích CodeGolf khi nói về việc thể hiện và bổ ích cho sự sáng tạo. frageum rõ ràng không cạnh tranh cho chiến thắng ở đây. Để thấy nhiều ý kiến ​​trái chiều về tính kỹ thuật và sửa đổi từ ngữ của câu hỏi để đảm bảo câu trả lời của anh ấy bị vi phạm làm tôi buồn.
flodel

3
Tôi nghĩ rằng các từ "ít nhất là tới 2 ^ 128" là đủ rõ ràng ...
vrwim

5
@vrwim Bạn đã không viết điều đó. Bạn đã viết "cho đến 2 ^ 128". SuperJedi đã chỉnh sửa nó vài phút trước.
frageum

17

Lục giác , 12 11 10 7 byte

Cảm ơn alephalpha đã gắn mã vào chiều dài 2.

10})!';

Mở ra:

 1 0
} ) !
 ' ;

Cái này khá đơn giản. 10ghi 10, tức là một dòng cấp vào cạnh bộ nhớ ban đầu. Sau đó })!';được lặp đi lặp lại trong một vòng lặp:

  • } di chuyển đến cạnh bộ nhớ tiếp theo.
  • ) tăng nó
  • ! in nó dưới dạng một số nguyên.
  • ' di chuyển trở lại số 10.
  • ; in nó như một nhân vật.

Tôi tin rằng điều này là tối ưu (mặc dù cho đến nay không phải là duy nhất). Tôi đã để tập lệnh bạo lực mà tôi đã viết cho câu trả lời này tìm kiếm các giải pháp 6 byte theo giả định rằng nó sẽ phải chứa ít nhất một trong số đó ;!, (hoặc ), và sẽ không chứa ?, ,hoặc @, và nó đã không chứa tìm bất kỳ giải pháp.


13

Bình thường, 4 byte

.V1b

Giải trình:

.V1    for b in range(1 to infinity):
   b      print b

f!\n( Liên kết TIO ) sẽ hoạt động trong 3 byte, không chắc là có sử dụng bất kỳ tính năng nào đã được thêm sau câu trả lời của bạn hay không.
Sok

@Sok Thông minh. Tuy nhiên, tôi sẽ không thay đổi câu trả lời vì tôi nghĩ đó flà một tính năng của Pyth 4 năm trước.
Jakube

Tôi cũng nghĩ như vậy, đó là lý do tôi rời nó như là một bình luận - tính năng ngôn ngữ mới để đánh bại một câu trả lời cũ luôn cảm thấy giá rẻ IMO
Sok

13

bc, 10

for(;;)++i

Không bình thường mà bcngắn hơn dc.

Từ man bc:

SỰ MIÊU TẢ

bc là ngôn ngữ hỗ trợ các số chính xác tùy ý


Trường hợp này in nó ra?
Bálint

@ Bálint ++ilà một biểu thức, nhưng không phải là một bài tập và có đầu ra rõ ràng. Bạn đã thử chạy nó? echo 'for(;;)++i' | bctrong thiết bị đầu cuối Linux gần nhất của bạn.
Chấn thương kỹ thuật số

Tôi không có một thiết bị đầu cuối Linux nào trong nhà. Tôi chỉ là tò mò thôi.
Bálint

6
@ Bálint Mỗi nhà nên có một thiết bị đầu cuối Linux.
Chấn thương kỹ thuật số

1
@ Bálint Chạy chương trình này là sử dụng của bạn;)
Insane

12

Java, 139 138 127 123 byte

class K{public static void main(String[]a){java.math.BigInteger b=null;for(b=b.ZERO;;)System.out.println(b=b.add(b.ONE));}}

2
Một vòng lặp vô hạn nhỏ hơn trong java là for(;;)cho 3 byte dễ dàng.
ankh-morpork

Bạn cũng có thể lưu 2 cái khác với BigInteger b=null;b=b.ZERO;, thật đáng buồn =nulllà cần thiết, thậm chí nghĩ rằng đó là một truy cập tĩnh.
TWiStErRob

Và sau đó là 9, bởi vì bạn có thể thoát khỏi việc nhập bằng cách tham chiếu BigIntegerbởi FQCN chỉ một lần.
TWiStErRob

@TWiStErRob Bằng cách nào đó, tôi đã không nhận ra rằng nó sẽ ngắn hơn.
SuperJedi224

2
Đối với Java 8 hoặc mới hơn, bạn có thể thay thế lớp bằng interfacevà xóa publickhỏi hàm. Đừng muốn sao chép mã của bạn và gửi nó như một câu trả lời mới.
Luca H

10

Toán học, 22 byte

i=0;While[Echo[++i]>0]

Echo là một chức năng mới trong Mathicala 10.3.


Echođưa ra bốn ký tự phân tách: dòng mới cộng ">> ". Không chắc chắn điều này là hợp lệ - có thể sử dụng Printthay thế? Ngoài ra, lưu một byte với i=0;While[Echo@++i>0].
La Mã

7

Ruby, 15 12 byte

loop{p$.+=1}
  • p, khi được cung cấp một số nguyên, in số nguyên như cũ (lịch sự của @philomory )
  • $.là một biến số ma thuật giữ số lượng dòng đọc từ stdin. Nó rõ ràng được khởi tạo thành 0, và cũng có thể gán :)

@philomory Thông thường người dùng nên để lại nhận xét đề xuất giải pháp tiết kiệm byte của họ. Ngoài ra, tôi muốn xem một lời giải thích cho điều này. c:
Addison Crump

7

Python 3, 33 25 byte

Theo tôi hiểu, số nguyên Pythons có độ chính xác tùy ý và print()tự động tạo ra các dòng mới.

Cảm ơn @Jakub và @ Sp3000 và @wnnmaw! Tôi thực sự không biết nhiều trăn, điều duy nhất tôi nghĩ là nó hỗ trợ các số nguyên kích thước tùy ý =)

k=1
while 1:print(k);k+=1

1là một giá trị trung thực trong Python (và hầu hết các ngôn ngữ khác). Như vậy while 1:là đủ.
Jakube

Ngoài ra, bạn có thể đặt toàn bộ whiletrên một dòng
Sp3000

Bạn có thể lưu một byte bằng cách sử dụng repr(k)chứ không phải print(k). Ngoài ra, tôi đếm kích thước byte của bạn là 25 (không có thay đổi được đề xuất của tôi)
wnnmaw

1
Bạn không thể sử dụng reprthay vì print. reprkhông đầu ra bất cứ điều gì. @wnnmaw
Zach Gates

Làm gì reprsau đó?
flawr

6

Đang xử lý , 95 85 71 byte

java.math.BigInteger i;{i=i.ZERO;}void draw(){println(i=i.add(i.ONE));}

Tôi đã thử một cái gì đó với một vòng lặp while nhưng nó khiến tất cả Quá trình xử lý bị sập, vì vậy tôi sẽ gắn bó với điều này ngay bây giờ.

(Cảm ơn @ SuperJedi224 và @TWiStErRob vì những gợi ý.)


Những gì với không gian? Tôi khá chắc chắn import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}sẽ làm việc.
SuperJedi224

Vâng, chỉ cần sửa nó.
geokavel

Xử lý có cho phép BigInteger.ONEthay đổi thành i.ONE?
SuperJedi224

@ SuperJedi224 Vâng, đúng vậy. Cảm ơn!
geokavel

Được rồi, có một upvote.
SuperJedi224

6

Samau , 2 byte

N)

Giải trình:

N     push the infinite list [0 1 2 ...] onto the stack
 )    increase by 1

Khi đầu ra của một chương trình là một danh sách, các dấu ngoặc ngoài cùng sẽ bị bỏ qua.


Không một danh sách in tất cả nội dung của nó cùng một lúc? Nếu danh sách này là vô hạn , thì nó không thể nằm gọn trong bộ nhớ hoặc trên màn hình của bạn và nó sẽ không bao giờ ngừng được tạo ra, vì vậy nó sẽ không bao giờ được in.
con mèo

1
@cat Samau được viết bằng Haskell, và nó lười biếng . Nó sẽ không tạo ra toàn bộ danh sách trước khi in nó.
alephalpha

Chỉ cần một cái đầu lên. Trên trang GitHub cho Samau, trong phần mô tả @, "đẩy" là sai chính tả.
Carcigenicate

@Carcigenicate Cảm ơn bạn.
alephalpha

6

JavaScript (ES6), 99 94 67 byte

for(n=[i=0];;)(n[i]=-~n[i++]%10)&&alert([...n].reverse(i=0).join``)

alertSTDOUTtương đương được chấp nhận chung cho JavaScript nhưng sử dụng nó có nghĩa là các số liên tiếp được tự động tách ra. Tôi đã cho rằng việc xuất ra một ký tự sau số là không cần thiết vì điều này.


12
Đây là lý do tại sao tôi có một trình chặn cửa sổ bật lên.
Comitern

1
chỉ cần nói: for (i = 0 ;;) alert (i ++) Tôi không nghĩ bạn cần tất cả các điều khiển đó
kéo theo

3
@towc Điều đó không hiệu quả. Tất cả các số là 64 bit nổi trong JavaScript có giá trị số nguyên an toàn tối đa là 2^53nhưng câu hỏi yêu cầu nó phải đi lên 2^128.
dùng81655

1
oh, điểm công bằng ...
kéo dài

5

Matlab, 132 byte

a=0;while 1;b=a==9;n=find(cumsum(b)-(1:numel(b)),1);a(n)=a(n)+1;a(1:n-1)=0;if ~numel(n);a=[0*a,1];end;disp([a(end:-1:1)+'0','']);end

Ok, tôi nghĩ rằng đây là câu trả lời nghiêm túc đầu tiên hoàn thành nhiệm vụ này mà không cần một số nguyên kích thước abitrary dựng sẵn tầm thường. Chương trình này thực hiện một số nguyên kích thước tùy ý như một mảng các số nguyên. Mỗi số nguyên luôn nằm trong khoảng từ 0 đến 9, vì vậy mỗi phần tử mảng đại diện cho một chữ số thập phân. Kích thước mảng sẽ được tăng thêm một lần ngay khi chúng ta ở ví dụ 999. Kích thước bộ nhớ không có vấn đề ở đây, vì 2^128chỉ yêu cầu một mảng có chiều dài 39.

a=0;
while 1
    b=a==9;
    %first number that is not maxed out
    n=find(cumsum(b)-(1:numel(b)),1);
    %increase that number, and sett all maxed out numbers to zero
    a(n)=a(n)+1; 
    a(1:n-1)=0;
    if ~numel(n) %if we maxed out all entries, add another digit
        a=[0*a,1];
    end    
    disp([a(end:-1:1)+'0',''])%print all digits
end

5

C ++, 146 141 138 byte

Sử dụng thư viện bigint tiêu chuẩn có lẽ là hầu hết các cách nhàm chán của việc trả lời câu hỏi này, nhưng ai đó đã phải làm điều đó.

#include<stdio.h>
#include<boost/multiprecision/cpp_int.hpp>
int main(){for(boost::multiprecision::uint512_t i=1;;){printf("%u\n",i++);}}

Ung dung:

#include<cstdio>
#include<boost/multiprecision/cpp_int.hpp>

int main()
{
    for(boost::multiprecision::uint512_t i=1;;)
    {
        std::printf("%u\n", i++);
    }
}

Lý do phiên bản golf sử dụng stdio.hvà không phải cstdiolà để tránh phải sử dụng std::không gian tên.

Đây là lần đầu tiên tôi chơi golf trong C ++, hãy cho tôi biết nếu có bất kỳ thủ thuật nào để rút ngắn điều này hơn nữa.


Có lẽ bạn có thể sử dụng '\n'thay vì std::endl, sẽ giúp bạn tiết kiệm 8 byte. Ngoài ra, có thể có một cách để sử dụng CPP #define để nén một số lần lặp lại,
Kenney

@Kenney Cảm ơn bạn vì điều đó! (Nó chỉ tiết kiệm 5 byte, không phải 8.) Tôi nghĩ rằng tôi có thể đã nghĩ ra một cách để điều chỉnh phần đó thậm chí còn ngắn hơn.
felixphew

Tôi không biết boost (và tôi cũng không nói đó là tiêu chuẩn) nhưng không được ixây dựng mặc định với giá trị 0? Sau đó, bạn có thể loại bỏ định nghĩa và chuyển
postincrement thành preincremet

Làm thế nào về sự phản đối #import?
Connectyourcharger

5

C # .NET 4.0, 111 103 102 97 byte

class C{static void Main(){System.Numerics.BigInteger b=1;for(;;)System.Console.WriteLine(b++);}}

Tôi không tìm thấy câu trả lời C # nào ở đây, vì vậy tôi chỉ phải viết một câu.

Cần có .NET 4.0, vì đây là phiên bản đầu tiên bao gồm BigInteger . Bạn phải tham khảo System.Numerics.dll mặc dù.

Với vết lõm:

class C
{
    static void Main()
    {   
        System.Numerics.BigInteger b = 1;
        for (;;)
            System.Console.WriteLine(b++);
    }
}

Cảm ơn sweerpotato, Kvam, Berend vì đã lưu một số byte


Bạn có thể lưu 8 byte với class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}: ~)!
sweerpotato

1
Di chuyển khai báo của b và Console.WriteLinevào cấu trúc vòng lặp:class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
Kvam

Bạn vẫn cần System. Điều đó tiết kiệm một byte mặc dù!
sweerpotato

Uh, đúng vậy.
Kvam

Nếu bạn thêm using System;(13 byte), bạn có thể loại bỏ System.(7 byte) hai lần, tiết kiệm 1 byte.
Kenney

5

Clojure, 17 byte

(map prn (range))

Trình tự lười biếng và số nguyên chính xác tùy ý làm cho điều này trở nên dễ dàng (như đối với Haskell và CL). prntiết kiệm cho tôi một vài byte vì tôi không cần phải in một chuỗi định dạng. doseqcó lẽ sẽ thành ngữ hơn vì ở đây chúng ta chỉ xử lý các tác dụng phụ; mapkhông có nhiều ý nghĩa để sử dụng vì nó sẽ tạo ra một chuỗi nil(là giá trị trả về của mỗi prncuộc gọi.

Giả sử tôi đếm mãi, chuỗi con trỏ null kết quả từ thao tác này không bao giờ được trả về.


4

MarioLANG , 11 byte

+<
:"
>!
=#

Lấy cảm hứng từ câu trả lời của Martin Büttner trong một câu hỏi khác .


Bạn có chắc chắn điều này hoạt động mà không có vấn đề đến 2 ^ 128?
flawr


@flawr MarioLANG có trình thông dịch Ruby và loại số nguyên của Ruby có độ chính xác tùy ý.
Martin Ender

@flawr Nó phụ thuộc vào người phiên dịch. Trình thông dịch tôi đang sử dụng được viết bằng Ruby và nó hỗ trợ độ chính xác tùy ý.
alephalpha

4

CJam, 7 byte

0{)_p}h

Giải trình:

0         e# Push a zero to the stack
 {        e# Start a block
  )         e# Increment top of stack
   _        e# Duplicate top of stack
    p       e# Print top of stack
     }    e# End block
      h   e# Do-while loop that leaves the condition on the stack

Lưu ý: Phải sử dụng trình thông dịch Java.


4

C, 89 byte

Một cách tiếp cận mới (triển khai bộ tăng bit) trong C:

b[999],c,i;main(){for(;;)for(i=c=0,puts(b);i++<998;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

Ít chơi gôn

int b[999], c, i;
main() {
  for(;;)
    for(i=c=0, puts(b); i++ < 998;)
      putchar(48 + (c ? b[i] : (b[i] = c = !b[i])));
}

Chấm dứt

Phiên bản này có một lỗi nhỏ, rằng nó không chấm dứt (hiện tại không phải là một yêu cầu). Để làm điều này, bạn sẽ phải thêm 3 ký tự:

b[129],c=1,i;main(){for(;c;)for(i=c=0,puts(b);i++<128;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

4
Trong thực tế, nó không nên chấm dứt. Đó là ý nghĩa củaforever
edc65

4

Foo , 6 byte

(+1$i)

Giải trình

(    )    Loop
 +1       Add one to current element
   $i     Output current element as a decimal integer

4

Chồn , 4 byte

1+dN

Hãy thử nó ở đây. (Chà, thực sự, hãy cẩn thận. 3 giây thời gian chạy là đủ để lên tới ~ 40.000.)

1+thêm 1 vào đầu ngăn xếp, dsao chép nó và Nxuất ra đỉnh của ngăn xếp dưới dạng một số nguyên có dấu cách. Vòng lặp này vì Minkolang có hình xuyến, vì vậy khi bộ đếm chương trình đi ra khỏi cạnh phải, nó sẽ xuất hiện lại ở bên trái.


4

Intel 8086+ hội, 19 byte

68 00 b8 1f b9 08 00 31 ff f9 83 15 00 47 47 e2 f9 eb f1

Đây là một sự cố:

68 00 b8                push   0xb800             # CGA video memory
1f                      pop    ds                 # data segment
b9 08 00           L1:  mov    cx, 8              # loop count
31 ff                   xor    di, di             # ds:di = address of number
f9                      stc                       # set carry
83 15 00           L2:  adc    word ptr [di], 0   # add with carry
47                      inc    di
47                      inc    di
e2 f9                   loop   L2
eb f1                   jmp    L1

Nó xuất ra số 128 bit ở 8 vị trí trên cùng bên trái. Mỗi vị trí màn hình chứa một ký tự ASCII 8 bit và hai màu 4 bit.

Lưu ý: nó kết thúc ở mức 2 128 ; chỉ cần thay đổi 8in mov cx, 8để 9hiển thị số 144 bit hoặc thậm chí 80*25để hiển thị số lên tới 2 32000 .

Đang chạy

1.44Mb bzip2 được nén, đĩa mềm có thể khởi động được mã hóa Base64

Tạo hình ảnh đĩa mềm bằng cách sao chép sau đây

QlpoOTFBWSZTWX9j1uwALTNvecBAAgCgAACAAgAAQAgAQAAAEABgEEggKKAAVDKGgAaZBFSMJgQa
fPsBBBFMciogikZcWgKIIprHJDS9ZFh2kUZ3QgggEEh/i7kinChIP7HrdgA=

vào dòng lệnh này:

base64 -d | bunzip2 > floppy.img

và chạy với, ví dụ, qemu -fda floppy.img -boot a

ISO khởi động 1,8Mb

Đây là hình ảnh ISO được nén bzip2 được mã hóa base64. Tạo iso bằng cách dán

QlpoOTFBWSZTWZxLYpUAAMN/2//fp/3WY/+oP//f4LvnjARo5AAQAGkAEBBKoijAApcDbNgWGgqa
mmyQPU0HqGCZDQB6mQ0wTQ0ZADQaAMmTaQBqekyEEwQaFA0AA0AxBoAAA9Q0GgNAGg40NDQ0A0Bi
BoDIAANNAA0AyAAABhFJNIJiPSmnpMQDJpp6nqeo0ZDQaAANB6IA0NAGj1EfIBbtMewRV0acjr8u
b8yz7cCM6gUUEbDKcCdYh4IIu9C6EIBehb8FVUgEtMIAuvACCiO7l2C0KFaFVABcpglEDCLmQqCA
LTCAQ5EgnwJLyfntUzNzcooggr6EnTje1SsFYLFNW/k+2BFABdH4c4vMy1et4ZjYii1FbDgpCcGl
mhZtl6zX+ky2GDOu3anJB0YtOv04YISUQ0JshGzAZ/3kORdb6BkTDZiYdBAoztZA1N3W0LJhITAI
2kSalUBQh60i3flrmBh7xv4TCMEHTIOM8lIurifMNJ2aXr0QUuLDvv6b9HkTQbKYVSohRPsTOGHi
isDdB+cODOsdh31Vy4bZL6mnTAVvQyMO08VoYYcRDC4nUaGGT7rpZy+J6ZxRb1b4lfdhtDmNwuzl
E3bZGU3JTdLNz1uEiRjud6oZ5kAwqwhYDok9xaVgf0m5jV4mmGcEagviVntDZOKGJeLjyY4ounyN
CWXXWpBPcwSfNOKm8yid4CuocONE1mNqbd1NtFQ9z9YLg2cSsGQV5G3EhhMXKLVC2c9qlqwLRlw4
8pp2QkMAMIhSZaSMS4hGb8Bgyrf4LMM5Su9ZnKoqELyQTaMAlqyQ3lzY7i6kjaGsHyAndc4iKVym
SEMxZGG8xOOOBmtNNiLOFECKHzEU2hJF7GERK8QuCekBUBdCCVx4SDO0x/vxSNk8gKrZg/o7UQ33
Fg0ad37mh/buZAbhiCIAeeDwUYjrZGV0GECBAr4QVYaP0PxP1TQZJjwT/EynlkfyKI6MWK/Gxf3H
V2MdlUQAWgx9z/i7kinChITiWxSo

vào

base64 -d bunzip2 > cdrom.iso

và cấu hình một máy ảo để khởi động từ nó.

DOS .COM

Đây là một tệp DOS .COM được mã hóa thực thi: 64 :

aAC4H7kIADH/+YMVAEdH4vnr8Q==

Tạo tệp .COM bằng cách sử dụng

/bin/echo -n aAC4H7kIADH/+YMVAEdH4vnr8Q== | base64 -d > COUNTUP.COM

và chạy nó trong (Miễn phí) DOS.


4

Perl , 34 32 30 28 26 23 byte

-Mbigint -E '{say$_+=1;redo}'

Kiểm tra với

perl -Mbigint -E '{say$_+=1;redo}'

Bạn có thể thay thế for(,,){...}bằng {...;redo}cho hai người.
primo

Có tôi đã thấy (perl 5.18+), nhưng tôi nghĩ rằng nó có thể gian lận; sau đó các câu trả lời sẽ giống nhau Tôi mới ở đây, vì vậy ;-)
Kenney

1
Các tham chiếu vô hướng sẽ được tự động hóa như là SV UNDEF, khi tăng lên sẽ không gây ra BigIntquá tải - bởi vì nó không phải là một BigInt. Chữ nguyên, tuy nhiên, được tạo ra như BigInts. Thực sự không quá kỳ lạ;)
primo

1
Bạn có thể sử dụng $-để giữ nó như một số nguyên và quay trở lại sử dụng ++$-?
Dom Hastings

1
@DomHastings Tôi đã thử nghiệm perl -Mbigint -E '{say++$-;$-+=$-;redo}' | morevà nó kết thúc khoảng 1. Nó vẫn là một int nhưng bigint không bước vào, thật không may.
Kenney

4

Tuyệt vời, 358 byte

..@F..@E..@D..@C..@B..@A..@9..@8..@7..@6..@5..@4..@3..@2..@1..@001@Z01
..AddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddo/\&I
00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I....@Z
@FHd@EHd@DHd@CHd@BHd@AHd@9Hd@8Hd@7Hd@6Hd@5Hd@4Hd@3Hd@2Hd@1Hd@0Hd
0A@N
..&I
@N/\..
:Hd
}0
Hp
}0
..
{<
#include hex_out.mbl
#include arithmetic.mbl

16 nửa cộng được nối với nhau, một nửa bên phải thực hiện N ++ mỗi chu kỳ và mỗi bộ cộng cho phép tràn (00 hoặc 01) sang chuỗi tiếp theo trong chuỗi. Đầu ra là hex.

Trình thông dịch python có một lỗi trong đó đầu ra từ các chức năng ghi nhớ bị mất, vì vậy bạn phải chạy nó với "-m 0" để làm cho nó hoạt động tốt. Nếu không có tham số đó, bạn có thể thấy nó sẽ chạy nhanh như thế nào mà không có lỗi, nhưng đầu ra sẽ không hoạt động đúng.

Lưu ý đến bản thân: sửa lỗi đó trong marbelous.py Lỗi này đã được sửa trong phiên bản mới nhất của marbelous.py


4

R, 52 byte

a=gmp::as.bigz(1);repeat{cat(paste(a,""));a=a+1}

(Lưu ý: gmplà một thư viện bên ngoài, vì vậy bạn có thể phải tải xuống để giải pháp này hoạt động)


1
+1 ... xin lỗi về tất cả các tính năng bổ sung. Để giúp bạn trở lại, bạn có thể thử a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}. Bạn có thể muốn ghi chú gmplà một thư viện bên ngoài có thể cần tải xuống.
MickyT


4

BotEngine, 128 120 112 8x13 = 104

v2 2 01
>e>S SS
   e1e1
   e2 e0 12
   > > S SS P
  ^   <e0e1 R
     ^ < <lC^
^         <

Đầu ra là nhị phân.

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.