Tulis program yang menghitung selamanya, mulai dari satu.
Aturan:
- Program Anda harus masuk
STDOUT
atau alternatif yang dapat diterima, jikaSTDOUT
tidak tersedia. - Program Anda harus merupakan program yang lengkap, dapat dijalankan, dan bukan fungsi atau cuplikan.
- Program Anda harus menampilkan setiap angka dengan karakter pemisah di antaranya (baris baru, spasi, tab atau koma), tetapi ini harus konsisten untuk semua angka.
- Anda dapat mencetak angka dalam desimal, unary, atau di dalam 256 di mana setiap digit diwakili oleh nilai byte .
- Program Anda harus menghitung setidaknya sejauh 128 (inklusif) tanpa masalah dan tanpa kehabisan memori pada PC desktop yang wajar. Secara khusus, ini berarti jika Anda menggunakan unary, Anda tidak dapat menyimpan representasi unary dari angka saat ini dalam memori.
Tidak seperti aturan kami yang biasa, jangan ragu untuk menggunakan bahasa (atau versi bahasa) meskipun itu lebih baru daripada tantangan ini. Bahasa yang ditulis khusus untuk mengirimkan jawaban 0-byte untuk tantangan ini adalah permainan yang adil tetapi tidak terlalu menarik.
Perhatikan bahwa harus ada penerjemah agar pengajuan dapat diuji. Diperbolehkan (dan bahkan dianjurkan) untuk menulis sendiri penerjemah ini untuk bahasa yang sebelumnya tidak diterapkan.
- Ini bukan tentang menemukan bahasa dengan solusi terpendek untuk ini (ada beberapa di mana program kosong melakukan trik) - ini adalah tentang menemukan solusi terpendek dalam setiap bahasa. Karenanya, tidak ada jawaban yang akan ditandai sebagai diterima.
Katalog
Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Jawaban:
Labirin , 5 byte
♫ IP dalam kode berputar-putar ♫
Instruksi yang relevan:
sumber
:
dan\
> <> , 8 byte
Langkah:
(Program yang kurang efisien memori (karenanya tidak valid)
llnao
.)sumber
Haskell, 21 byte
Bilangan bulat presisi tak tentu dan daftar tak terbatas memudahkan ini :-)
Untungnya
mapM_
ada di Prelude. JikaData.Traversable
ya, kita bahkan dapat mengecilkannya menjadi 19 byte:sumber
sequence
pada hasil untuk mendapatkan hasil yang benar-benar terjadi.[1..]
diizinkan, karena mencetak semua angka dengan koma di antara saya? atau[
sekrup pertama semuanya?[
juga tidak diizinkan.Gol> <> , 3 byte
Langkah:
sumber
Marbelous ,
114504632 byteMencetak desimal itu menyusahkan !!
Jelas tidak menang dengan yang ini, tapi saya pikir saya akan mencobanya. Saya harap tidak apa-apa karena bantalan output ke 40 nol (agar sesuai 2 ^ 128).
sumber
Ehun
papan yang seharusnya menambah digit berikutnya, tetapi tidak berfungsi dengan baikinclude/
secara defaultC (arsitektur 64-bit saja), 53 byte
Bergantung pada pointer setidaknya 64 bit dan mencetaknya dalam hex menggunakan
%p
specifier. Program akan kembali tepat ketika mencapai 2 ^ 128.sumber
Hexagony ,
1211107 byteTerima kasih kepada alephalpha karena memasukkan kode ke dalam panjang sisi 2.
Dibuka:
Yang ini cukup sederhana.
10
menulis 10, yaitu linefeed ke tepi memori awal. Kemudian})!';
berulang kali dieksekusi dalam satu lingkaran:}
pindah ke tepi memori berikutnya.)
tambahkan itu.!
cetak sebagai integer.'
kembali ke 10.;
cetak sebagai karakter.Saya percaya bahwa ini optimal (walaupun sejauh ini tidak unik). Saya telah membiarkan skrip brute force yang saya tulis untuk pencarian jawaban ini untuk solusi 6-byte dengan asumsi bahwa itu harus mengandung setidaknya satu masing-masing
;
dan!
dan salah satu(
atau)
, dan tidak akan mengandung?
,,
atau@
, dan itu tidak temukan solusinya.sumber
Pyth, 4 byte
Penjelasan:
sumber
f!\n
( TIO link ) akan bekerja selama 3 byte, tidak yakin apakah itu menggunakan fitur apa pun yang telah ditambahkan setelah jawaban Anda.f
adalah fitur Pyth 4 tahun yang lalu.bc, 10
Tidak biasa yaitu
bc
lebih pendek daridc
.Dari
man bc
:sumber
++i
adalah sebuah ekspresi, tetapi bukan sebuah tugas, dan karenanya dikeluarkan secara eksplisit. Apakah Anda mencoba menjalankannya?echo 'for(;;)++i' | bc
di terminal Linux terdekat Anda.Java,
139138127123 bytesumber
for(;;)
untuk 3 byte yang mudah.BigInteger b=null;b=b.ZERO;
, sayangnya=null
dibutuhkan, bahkan berpikir itu adalah akses statis.BigInteger
oleh FQCN hanya sekali.interface
dan menghapuspublic
dari fungsi. Jangan ingin menyalin kode Anda dan mempostingnya sebagai jawaban baru.Mathematica, 22 byte
Echo
adalah fungsi baru di Mathematica 10.3.sumber
Echo
memberikan empat karakter yang terpisah: baris baru plus">> "
. Tidak yakin ini valid - mungkin menggunakanPrint
sebagai gantinya? Juga, simpan byte dengani=0;While[Echo@++i>0]
.Ruby,
1512 bytep
, ketika diberi bilangan bulat, mencetak bilangan bulat apa adanya (milik @ philomory )$.
adalah variabel magis yang menahan jumlah baris yang dibaca dari stdin. Ini jelas diinisialisasi ke 0, dan juga ditugaskan :)sumber
Python 3,
3325 byteSejauh yang saya mengerti, bilangan bulat Python presisi yang sewenang-wenang, dan
print()
secara otomatis menghasilkan baris baru.Terima kasih untuk @ Jakub dan @ Sp3000 dan @wnnmaw! Saya benar-benar tidak tahu banyak python, satu-satunya yang saya tahu adalah itu mendukung bilangan bulat ukuran arbitrer =)
sumber
1
adalah nilai kebenaran dalam Python (dan sebagian besar bahasa lainnya). Jadiwhile 1:
cukup.while
dalam satu barisrepr(k)
daripadaprint(k)
. Juga, saya menghitung ukuran byte Anda sebagai 25 (tanpa perubahan yang saya sarankan)repr
bukanprint
.repr
tidak menghasilkan apa pun. @wnnmawrepr
harus dilakukan?Memproses ,
958571 byteSaya mencoba sesuatu dengan loop sementara tetapi menyebabkan semua Proses macet, jadi saya akan tetap dengan ini untuk saat ini.
(Terima kasih kepada @ SuperJedi224 dan @TWiStErRob untuk saran.)
sumber
import java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}
akan berhasil.BigInteger.ONE
untuk diubahi.ONE
?Samau , 2 byte
Penjelasan:
Ketika output dari sebuah program adalah daftar, tanda kurung dihilangkan.
sumber
@
, "push" salah eja.JavaScript (ES6),
999467 bytealert
adalahSTDOUT
setara yang diterima secara umum untuk JavaScript tetapi menggunakannya berarti bahwa angka berurutan dipisahkan secara otomatis. Saya berasumsi bahwa mengeluarkan karakter setelah nomor tidak perlu karena ini.sumber
2^53
tetapi pertanyaannya mengharuskan untuk naik ke2^128
.Matlab, 132 byte
Ok, saya pikir ini adalah jawaban serius pertama yang menyelesaikan tugas ini tanpa built-in integer ukuran yang sepele. Program ini mengimplementasikan bilangan bulat ukuran arbitrer sebagai array bilangan bulat. Setiap integer selalu antara 0 dan 9, sehingga setiap elemen array mewakili satu angka desimal. Ukuran array akan ditingkatkan satu setelah kita berada di eg
999
. Ukuran memori tidak ada masalah di sini, karena2^128
hanya membutuhkan panjang array 39.sumber
C ++,
146141138 byteMenggunakan perpustakaan bigint standar mungkin merupakan cara paling membosankan untuk menjawab pertanyaan ini, tetapi seseorang harus melakukannya.
Tidak Disatukan:
Alasan penggunaan versi golf
stdio.h
dan bukancstdio
adalah untuk menghindari keharusan menggunakanstd::
namespace.Ini adalah pertama kalinya saya bermain golf di C ++, beri tahu saya jika ada trik untuk mempersingkat ini lebih lanjut.
sumber
'\n'
bukanstd::endl
, akan menghemat 8 byte. Juga mungkin ada cara untuk menggunakan CPP #define untuk mengompres beberapa pengulangan,i
dibangun secara default dengan nilai 0? Anda kemudian dapat menghapus definisi dan beralih postincrement ke preincremet yang akan menghemat 2b#import
?C # .NET 4.0,
11110310297 byteSaya tidak menemukan jawaban C # di sini, jadi saya hanya perlu menulis satu.
.NET 4.0 diperlukan, karena ini adalah versi pertama yang menyertakan BigInteger . Anda harus merujuk System.Numerics.dll .
Dengan lekukan:
Berkat sweerpotato, Kvam, Berend untuk menghemat beberapa byte
sumber
class C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}
: ~)!Console.WriteLine
ke dalam struktur loop:class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
System
. Itu menghemat satu byte sekalipun!using System;
(13 byte) Anda dapat menghapusSystem.
(7 byte) dua kali, menghemat 1 byte.Clojure, 17 byte
Urutan malas dan integer presisi sewenang-wenang membuat ini mudah (seperti untuk Haskell dan CL).
prn
menyelamatkan saya beberapa byte karena saya tidak perlu mencetak string format.doseq
mungkin akan lebih idiomatis karena di sini kita hanya berurusan dengan efek samping;map
tidak masuk akal untuk digunakan karena akan membuat urutannil
(yang merupakan nilai balik dari setiapprn
panggilan.Dengan asumsi saya menghitung selamanya, urutan pointer nol yang dihasilkan dari operasi ini tidak pernah dikembalikan.
sumber
MarioLANG , 11 byte
Terinspirasi oleh jawaban Martin Büttner dalam pertanyaan lain .
sumber
CJam, 7 byte
Penjelasan:
Catatan: Harus menggunakan juru bahasa Java.
sumber
C, 89 byte
Pendekatan baru (menerapkan bitwise incrementer) di C:
Kurang golf
Mengakhiri
Versi ini memiliki sedikit cacat, bahwa itu tidak berakhir (yang bukan keharusan saat ini). Untuk melakukan ini, Anda harus menambahkan 3 karakter:
sumber
forever
Foo , 6 byte
Penjelasan
sumber
Minkolang , 4 byte
Coba di sini. (Yah, sebenarnya, hati-hati. 3 detik waktu menjalankan sudah cukup untuk mendapatkan hingga ~ 40.000.)
1+
menambahkan 1 ke atas tumpukan,d
menggandakannya, danN
menampilkan bagian atas tumpukan sebagai integer dengan ruang tambahan. Ini loop karena Minkolang adalah toroidal, jadi ketika penghitung program berbunyi di tepi kanan, ia muncul kembali di sebelah kiri.sumber
Intel 8086+ Assembly, 19 byte
Berikut ini rinciannya:
Ini menghasilkan angka 128 bit pada posisi layar 8 kiri atas. Setiap posisi layar memegang karakter ASCII 8-bit dan dua warna 4 bit.
Catatan: ia membungkus sekitar 128 ; hanya mengubah
8
dalammov cx, 8
untuk9
menunjukkan sejumlah 144 bit, atau bahkan80*25
untuk menunjukkan angka sampai dengan 2 32000 .Lari
1.44Mb bzip2 dikompresi, image64 floppy bootable dikodekan base64
Hasilkan gambar floppy dengan menyalin-menempel yang berikut ini
ke dalam commandline ini:
dan jalankan dengan, misalnya,
qemu -fda floppy.img -boot a
1.8Mb bootable ISO
Ini adalah image ISO terkompresi bzip2 yang dikodekan base64. Hasilkan iso dengan menempelkan
ke
dan konfigurasikan mesin virtual untuk mem-boot darinya.
DOS .COM
Ini adalah DOS .COM yang dikodekan base64 yang dapat dieksekusi:
Hasilkan file .COM menggunakan
dan jalankan dalam (Gratis) DOS.
sumber
Perl ,
343230282623 byteTes dengan
sumber
for(,,){...}
dengan{...;redo}
untuk dua.SV UNDEF
, yang bila ditambah tidak akan memicuBigInt
kelebihan beban - karena itu bukanBigInt
. Namun demikian, bilangan bulat integer dibuat sebagaiBigInt
s. Tidak terlalu aneh kok;)$-
untuk menyimpannya sebagai integer dan kembali menggunakannya++$-
?perl -Mbigint -E '{say++$-;$-+=$-;redo}' | more
dan membungkus ke 1. Itu tetap int tetapi bigint tidak masuk, sayangnya.Marbelous, 358 byte
16 setengah adders dirantai bersama-sama, yang paling kanan melakukan N ++ setiap siklus dan masing-masing adder memberi makan melimpah (00 atau 01) ke yang berikutnya dalam rantai. Output dalam hex.
Penerjemah python memiliki bug di mana output dari fungsi memoized hilang, jadi Anda harus menjalankan ini dengan "-m 0" untuk membuatnya berfungsi dengan benar. Tanpa parameter itu Anda bisa melihat seberapa cepat ia akan berjalan tanpa bug, tetapi hasilnya tidak akan berfungsi dengan baik.Catatan untuk diri sendiri: perbaiki bug itu di marbelous.pyBug ini telah diperbaiki di versi terbaru dari marbelous.pysumber
R, 52 Bytes
(Catatan:
gmp
adalah perpustakaan eksternal, jadi Anda mungkin harus mengunduhnya agar solusi ini berfungsi)sumber
a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}
. Anda mungkin ingin membuat catatan yanggmp
merupakan perpustakaan eksternal yang mungkin perlu diunduh.BotEngine,
1281201128x13 = 104Output dalam biner.
sumber