var QUESTION_ID=93441,OVERRIDE_USER=41723;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Jawaban:
Sesos ,
11 33 byteCobalah online! Periksa Debug untuk melihat kode SBIN yang dihasilkan.
Perakitan Sesos
File biner di atas telah dihasilkan dengan merakit kode SASM berikut.
sumber
Haskell, 19 byte
Menghasilkan daftar tanpa batas
[0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...
Haskell memungkinkan daftar tak terbatas secara asli. Mencetak daftar semacam itu akan mencetak elemen-elemennya satu kali untuk selamanya.
sumber
[n,1-n]
![1-n,n]
akan menghasilkan output yang lebih bagus.concatMap (\n -> [1-n, n]) [1..]
, kan? Bagus!Brainfuck, 6 byte
Ini memanfaatkan pembungkus sel dan mencetak semua nilai yang mungkin. Dalam Brainfuck, representasi integer asli adalah dengan nilai byte .
Cobalah online!
sumber
int
tidak tiba-tiba memiliki bit lebih banyak atau lebih sedikit hanya karena Anda menambahkan atau menghapus beberapa ram.Cubix ,
1412 byteUji secara online! Anda sekarang dapat menyesuaikan kecepatan jika Anda ingin berlari lebih cepat atau lebih lambat.
Bagaimana itu bekerja
Hal pertama yang dilakukan oleh interpreter adalah menghapus semua spasi dan pad kode dengan no-ops
.
sampai cocok di sebuah kubus. Itu berarti bahwa kode di atas juga dapat ditulis seperti ini:Sekarang kodenya dijalankan. IP (penunjuk instruksi) dimulai di sudut kiri atas wajah paling kiri, menunjuk ke timur. Inilah jalur yang dibutuhkan selama menjalankan program:
IP dimulai pada jejak merah di paling kiri gambar. Itu kemudian berjalan
OSo;
, yang melakukan hal berikut:O
Cetak TOS (top-of-stack) sebagai bilangan bulat. Di awal program, tumpukan berisi nol tanpa batas, jadi ini dicetak0
.S
Tekan32
, kode karakter untuk karakter spasi.o
Cetak TOS sebagai karakter. Ini mencetak spasi.;
Pop TOS. Menghapus32
dari tumpukan.Sekarang IP mengenai
?
, yang mengarahkannya ke kiri, kanan, atau lurus tergantung pada tanda KL. Saat ini, TOS-nya0
begitu lurus. Ini adalah jalur biru;.
tidak melakukan apa-apa, dan IP menyentuh panah>
, yang mengarahkannya ke timur di sepanjang jalur merah lagi.~
mengambil BOT bitwise dari TOS, mengubahnya menjadi-1
.Di sini IP mencapai tepi kanan jaring, yang membungkusnya kembali ke kiri; ini lagi mencetak TOS (kali ini
-1
) dan spasi.Sekarang IP mengenai
?
lagi. Kali ini, KL adalah-1
; karena ini negatif, IP belok kiri, mengambil jalur hijau. Cermin\
membelokkan IP ke(
, yang menurunkan TOS, mengubahnya menjadi-2
. Muncul kembali dan mengenai panah;~
Dibutuhkan bitwise TIDAK lagi, memutar-2
ke1
.Sekali lagi, TOS dikeluarkan dan spasi dicetak. Kali ini ketika IP mencapai
?
, TOS adalah1
; karena ini positif, IP berbelok ke kanan, mengambil jalur kuning. Operator pertama yang ditemui adalahS
, mendorong tambahan32
; yang;
muncul sebelum dapat menyebabkan masalah.Sekarang IP kembali ke panah dan melakukan rutinitasnya,
~
mengubah TOS-2
danO
mencetaknya. Karena TOS negatif lagi, IP mengambil jalur hijau sekali lagi. Dan itu terus berputar seperti itu selamanya *: merah, hijau, merah, kuning, merah, hijau, merah, kuning ..., mencetak dalam siklus berikut:TL; DR
Program ini berulang kali melalui 3 langkah mudah ini:
Versi tidak terpisahkan, 6 byte
Menghapus pemisahan menyederhanakan program sehingga bisa masuk ke dalam unit cube:
* Catatan : Tidak ada program yang benar-benar tidak terbatas, karena hanya menghitung hingga 522 (di mana JavaScript mulai kehilangan presisi bilangan bulat).
sumber
MATL , 8 byte
Ini menggunakan tipe data default MATL, yaitu
double
, sehingga berfungsi hingga2^53
dalam nilai absolut. Outputnya adalahCobalah online!
Penjelasan
sumber
@_@XD
alih - alih@_D@D
agar Anda dapat memasukkan 0 pada proses pertama.XD
+1 untuk smileyBahasa Pemrograman Shakespeare , 227 byte
Jelas, jawaban ini sama sekali tidak menang, tetapi saya suka bahwa ini adalah kasus penggunaan yang cocok untuk SPL.
Dijelaskan:
Seperti yang Anda lihat ketika membandingkan kode ini dengan jawaban saya terhadap tantangan terkait untuk menghitung selamanya (yaitu mencetak semua nomor alami), panjang kode SPL tumbuh agak buruk ketika ukuran masalah meningkat ...
sumber
Let us return to scene II.
seharusnyascene I
.$puck
ke 0 dan kemudian menghitung tidak akan berfungsi lagi. Saya menambahkan yang hilangI
dalam kode dan mengoreksi panjang byte (yang agak off anyops oops)Python 2, 27 byte
Cetakan
-1 0 -2 1 -3 2 -4 3 ...
sumber
05AB1E ,
96 byteDisimpan 3 byte berkat Adnan
Cobalah online!
Cetakan
0, -1, 1, -2, 2 ...
dipisahkan oleh baris baru.sumber
[N,N±,
.±
dan berakhir 3 byte lebih lama dari milik Anda.D,
bisa diganti dengan=
menyimpan satu byte.GNU sed, 189 + 2 (rn flags) = 191 byte
Ini kemungkinan merupakan solusi terpanjang, karena sed tidak memiliki tipe integer atau operasi aritmatika. Karena itu, saya harus meniru operator peningkatan ukuran sewenang - wenang menggunakan ekspresi reguler saja.
Lari:
Keluaran:
sumber
Brainfuck, 127 byte
Cobalah online!
Diberikan rekaman tak terbatas secara teoritis akan berjalan selamanya.
Tidak terkompresi
sumber
ShadyAsFuck , 3 byte
Penjelasan:
Ini memanfaatkan pembungkus sel dan mencetak semua nilai yang mungkin. Dalam SAF, representasi integer asli adalah dengan nilai byte .
sumber
R,
2524 byteGolf satu byte berkat @JDL.
Cobalah online!
Contoh output:
sumber
while(1)
denganrepeat
untuk menyimpan char.Batch, 56 byte
Keluaran:
dll. Bekerja hingga 2147483647; 58 byte jika Anda ingin (-) 2147483648 di output:
44 byte jika mencetak semua bilangan bulat positif yang didukung, maka semua bilangan bulat negatif yang didukung, kemudian diulang tanpa henti, dapat diterima:
sumber
Java 7,
151134122118 byte12 byte disimpan berkat @ flawr (dan @xnor secara tidak langsung)
Setelah perubahan peraturan .. (
595663 byte)Karena di Jawa
2147483647 + 1 = -2147483648
, kita tidak bisa begitu saja melakukani++
dan melanjutkan tanpa batas, karena tantangannya adalah mencetak semua angka satu kali. Dengan kode di atas dengan kisaran menambahkan, hal itu malah akan mencetak semua bilangan bulat dari-2147483648
ke2147483647
masing-masing sekali, dengan urutan sebagai berikut:0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648
. Terima kasih kepada @ OlivierGrégoire karena menunjukkan perilaku Java tentangMIN_VALUE-1
/MAX_VALUE+1
. Coba di sini.Tidak digabungkan & kode uji:
Coba di sini - menghasilkan kesalahan runtime
Keluaran:
sumber
int
Program-versi Anda , diberikan waktu tanpa batas, akan mencetak setiap bilangan bulat dalam waktu tanpa batas.MAX_VALUE
, Anda dapat memeriksa jawaban saya (mungkin masih di halaman terakhir)DC (rasa GNU atau OpenBSD) - 16 byte
Versi ini tidak lebih pendek dari versi di bawah ini tetapi harus dapat berjalan tanpa tumpukan meledak di PC Anda. Namun demikian, jumlah besar yang tak terbatas akan memakan banyak memori ... terkadang ...
Karena
r
perintah itu diperlukan GNU-DC atau OpenBSD-DC .Uji:
DC - 16 byte
Sedikit kejam sekarang. ;-)
Versi ini menyalahgunakan panjang tumpukan sebagai penghitung sementara membiarkan tumpukan tumbuh.
Uji:
DC - 17 byte
Tanpa trik kotor.
Uji:
sumber
[-]P
, lakukan45P
. "GNU-Dc atau OpenBSD-Dc" - Apakah ada versi lain yang biasa ditemukan di sana?dc
hanya memiliki beberapa operator. Saya mengembangkannya secara independen dari ini.r
"swap". Terkadang saya bingung ketika melihat versi yang berbeda. Mungkin tidak ada yang mau kode di Dc kuno lagi (danr
akan menghapus tumpukan). Mungkin saya akan mengubah "Dc" menjadi "AT&T dc"? ... dan terima kasih atas45P
petunjuknya ...C # 74 byte
Keluaran:
Cobalah:
dotnetfiddle.net (terbatas hingga 1000)
sumber
public
pengubah dan menyimpan 14 byte. Defaultnya akan melakukan hal yang sama baiknya.Ruby,
26221916 byteMencetak angka yang dipisahkan oleh baris baru. -3 byte dari @manatwork. -3 byte dari @ m-chrzan.
sumber
p
akan melakukannya.0.step{|n|p n,~n}
selama 17 byte.JavaScript,
2926 byteVersi tidak terbatas, 26 byte
Disimpan 3 byte berkat produk ETH
akan menampilkan semua bilangan bulat antara -9007199254740991 dan 9007199254740992.
Versi tak terbatas (ES6),
114112 byteDisimpan 2 byte berkat produk ETH
akan menampilkan semua bilangan bulat, mengingat waktu dan memori yang tidak terbatas.
sumber
n[a,b,c]
kembalin[c]
, sehingga Anda dapat memasukkan tanda kurungn[(a||n.unshift(1),0)]
.1
in untuk loop;for(;;)
berjalan selamanya. Anda dapat menyimpan dua byte lagi denganfor(n=1;;)alert([1-n,n++])
. Juga, ini tidak lagi menggunakan fitur ES6 ;-)> <> ,
1915 byteIni mencetak yang berikut ini:
... dan seterusnya. Pemisah adalah baris baru.
Ditulis ulang setelah membaca jawaban xnor untuk menggunakan versi algoritma itu. Mulai dari
n=1
, program mencetak1-n
dann
, masing-masing diikuti oleh baris baru, sebelum ditambahkann
. Setelah meluap nilai maksimum program akan berakhir dengan kesalahansomething smells fishy...
. Tepat kapan ini akan terjadi tergantung pada implementasi juru bahasa.Versi sebelumnya:
Mulai dari 0, loop program tanpa batas. Pada setiap loop, nilai saat ini dicetak bersama dengan baris baru. Ini kemudian dinegasikan, dan bertambah jika positif.
sumber
Utilitas Bash + GNU, 26
sumber
$[++i]
dilakukan di bash.seq NaN
untuk menjalankan dan setelah 999999 pencetakan dilakukan dalam notasi ilmiah dengan presisi 5 digit. Sehubungan dengan tantangan, nilai itu adalah bilangan bulat terbesar yang Anda cetak, yang baik karena sisanya tidak akan mengulangi angka sebelumnya. Juga perhatikan Anda dapat menjalankan seq denganinf
, case sensitif seperti untuknan
. +1bc,
1716 byteSunting: 1 byte lebih sedikit berkat Digital Trauma .
Menambah keragaman bahasa yang digunakan sejauh ini, saya menyajikan solusi bc yang bekerja dengan bilangan bulat ukuran sewenang - wenang . Baris baru diperlukan setelah kode dan dihitung dalam total byte.
Di iterasi pertama
i
tidak ditentukan, tetapi mencetaknya memberikan 0 kejutan saya.sumber
for(;;){i;-++i}
bc
memilikinya juga.for(;;){i++;-i}
(panjang yang sama).Labirin , 9 byte
Cobalah online!
Ini juga berfungsi dan pada dasarnya sama:
Penjelasan
Aliran kontrol dalam kode ini agak lucu. Ingat bahwa penunjuk instruksi (IP) dalam program Labirin mengikuti jalur karakter non-spasi dan memeriksa bagian atas tumpukan di persimpangan mana pun untuk memutuskan jalur mana yang akan diambil:
Ketika IP menemui jalan buntu, berbalik (mengeksekusi perintah di akhir hanya sekali). Dan IP dimulai di sudut kiri atas bergerak ke timur. Perhatikan juga bahwa tumpukan secara implisit diisi dengan jumlah nol yang tidak terbatas untuk memulai.
Program dimulai dengan bit pendek ini:
Sekarang IP berada di persimpangan yang relevan dan bergerak lurus ke depan ke
(
mana mengurangi bagian atas tumpukan-1
. IP mencapai jalan buntu dan berbalik.:
menggandakan bagian atas tumpukan sekali lagi. Sekarang bagian atas tumpukan negatif dan IP belok kiri (barat). Kami sekarang menjalankan satu iterasi lagi dari loop utama:Kali ini, bagian atas tumpukan positif, sehingga IP berbelok ke kanan (barat) dan segera menjalankan iterasi lain dari loop utama, yang mencetak
1
. Kemudian setelah dinegasikan lagi, kita memukul:
dengan-1
pada stack.Kali ini IP belok kiri (timur). Ini
"
hanya no-op dan IP berbalik di jalan buntu.:
membuat salinan lain dan kali ini IP berbelok ke selatan.(
mengurangi nilai-2
, IP berbalik lagi. Dengan bagian atas tumpukan masih negatif, IP sekarang berubah ke barat pada:
dan melakukan iterasi berikutnya dari loop utama.Dengan cara ini, IP sekarang akan beralih antara iterasi loop ketat, mencetak angka positif, dan iterasi yang melewati kedua jalan buntu untuk mengurangi nilai sebelum mencetak angka negatif.
Anda mungkin bertanya pada diri sendiri mengapa ada di
"
baris kedua jika tidak benar-benar melakukan apa-apa: tanpanya, ketika IP mencapai:
nilai negatif, itu tidak bisa berbelok ke kiri (timur) sehingga akan berbelok ke kanan (barat) sebagai gantinya (sebagai aturan praktis, jika arah biasa di persimpangan tidak tersedia, IP akan mengambil arah yang berlawanan). Itu berarti IP juga tidak akan pernah mencapai(
bagian bawah dan kami tidak dapat membedakan iterasi positif dan iterasi negatif.sumber
JavaScript (ES5),
32313029 byteCetakan
0 -1 1 -2 2 -3 3 -4 4 -5 5 ...
Disimpan 1 byte berkat Patrick Roberts! Disimpan 2 byte berkat Conor O'Brien!
sumber
[i++,-i].map(alert)
bukanalert(i++),alert(-i)
?for(;;)
lebih pendek satu byte dariwhile(1)
map
adalah ES6i=0;
bit di dalam for loop untuk menyimpan byte.Java,
6554 byteKode tes tidak digabungkan
sumber
biggest magnitude of the standard integer type of your language
int
adalah tipe integer standar Java.()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};
( 53 byte )C #, 83 byte
Tidak Disatukan:
Output:
sumber
void f(){code_present_in_main}
sudah cukup untuk byte-count. Adapun kode itu sendiri, Anda dapat golf lagi seperti ini:void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}
( 61 bytes )decimal n=0
dann++;
di dalam for-loop:void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}
:)C #
8666 byteJawaban baru:
Bersih:
Jawaban lama (86 byte):
Tidak Disatukan:
sumber
Enumerable.Range
dan satu sebelumnyaint.MaxValue
.void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}
( 57 byte ) .J, 25 byte
Bekerja di situs online , tetapi saya belum dapat memverifikasinya di komputer. Mencetak angka seperti:
dll.
sumber
Powershell,
201918 byteDiperbaiki dengan mencuri tanpa malu-malu dari jawaban TimmyD
Keluaran:
Versi lama:
Tidak yakin mengapa tbh, tetapi - variabel yang tidak dideklarasikan (atau - $ nol) dievaluasi sebagai 0, yang menyelamatkan kami 2 byte dalam versi ini ...
sumber
Pyke ,
72 byteCoba di sini!
7 byte
Coba di sini!
Jika pencetakan + -0 ok,
oD_r
sumber
Brachylog , 2 byte
Cobalah online!
Karena program tidak diberi input, variabel input predikat utama dibiarkan tidak dibatasi. Pada awalnya, diasumsikan 0, tetapi ketika eksekusi berhasil
⊥
, ia akan kembali ke satu-satunya titik kegagalan: pilihan nilai untuk variabel input. Maka ia mencoba 1, dan -1, dan setiap bilangan bulat lainnya, mencetak masing-masing dipisahkan oleh baris baru selamanya karena⊥
selalu memaksa mundur, dan efekẉ
dieksekusi segera.sumber