Hitung orang!


30

pengantar

Ini mungkin terdengar aneh, tapi kami tidak punya satu tantangan bagi menghitung dari 1ke n, inklusif.

Ini bukan hal yang sama. Itu adalah tantangan (tertutup) yang tidak dijelaskan dengan baik.
Ini bukan hal yang sama. Yang itu tentang menghitung tanpa batas.

Tantangan

Menulis sebuah program atau fungsi yang mencetak setiap bilangan bulat dari 1ke ninklusif.

Aturan

  • Anda bisa mendapatkan ncara apa pun.
  • Anda dapat mengasumsikan bahwa nakan selalu menjadi bilangan bulat positif.
  • Anda bisa mendapatkan nbasis apa pun, tetapi Anda harus selalu output dalam desimal.
  • Output harus dipisahkan oleh karakter apa pun (atau pola) yang tidak ada di 0123456789. Karakter memimpin atau trailing non-desimal diizinkan (misalnya saat menggunakan array seperti [1, 2, 3, 4, 5, 6]).
  • Celah standar ditolak.
  • Kami ingin menemukan pendekatan terpendek dalam setiap bahasa, bukan bahasa terpendek, jadi saya tidak akan menerima jawaban apa pun.
  • Anda harus memperbarui jawaban Anda setelah pengeditan ini, jawaban yang diposting sebelum pengeditan terakhir harus mematuhi aturan perubahan tentang celah standar (saya tidak ingin menyangkal mereka, tetapi saya tidak ingin membuat masyarakat mengaum, jadi Saya menyangkal mereka).
  • Anda dapat menggunakan versi bahasa (atau bahasa) pasca-kencan apa pun. Anda tidak dapat menggunakan bahasa apa pun atau versi bahasa yang dibuat hanya untuk tantangan ini.

Bonus

20%

  • Program Anda harus dapat menghitung setidaknya hingga 18446744073709551615( 2^64-1). Misalnya, jika tipe data baru adalah satu-satunya cara untuk mendukung bilangan bulat besar, Anda harus membuatnya. Jika bahasa Anda tidak memiliki cara apa pun untuk mendukung bilangan bulat besar hingga 2 ^ 64-1, batas atas bahasa tersebut harus didukung.

EDIT : Saya telah mengubah batas dari 2^64ke 2^64-1untuk memungkinkan lebih banyak jawaban.

EDIT : Saya menjadikan aturan 2 ^ 64-1 sebagai bonus, karena belum banyak minat pada tantangan ini. Jika jawaban Anda mendukung 2 ^ 64-1, Anda sekarang dapat mengeditnya untuk memasukkan bonus. Anda juga dapat memposting jawaban yang tidak mendukungnya, jika lebih pendek.



"Kamu bisa mendapatkan napa pun." Apakah itu berarti kita dapat mengasumsikan ndisimpan dalam variabel?
flawr

@ flawr Anda bisa mendapatkan n cara apa pun. Anda dapat menyimpannya dalam suatu variabel, tetapi itu tidak harus di-hardcode.
Erik the Outgolfer

Mungkin bermanfaat untuk menautkan ke metode I / O yang diterima
Ephphatha

@Ephphatha Ya mungkin, tantangan ini adalah dari masa lalu di mana saya adalah seorang pemula.
Erik the Outgolfer

Jawaban:


60

MarioLANG , 29 byte

;
)    <
+===="
>:(-[!
=====#

Cobalah online!

Saya tahu kode saya sangat sedih atau marah:



> :(

Selamat MarioLANG, 46 byte

;
)       <
+======="
>  >((-[!
=:)^====#
 ===

Cobalah online!

Pendekatan yang lebih bahagia:




 :)

MarioLANG non-emosional, 41 byte

;
)     <
+====="
> >(-[!
= "===#
 :!
 =#

Cobalah online!


1
Masih ada emosi dalam cuplikan terakhir,; :!)
cookie

1
@cookie Dalam hal ini Anda dapat melihat banyak hal sebagai emotikon dengan fantasi, seperti =#, atau >(, atau (-[, dll. Juga, tidak tahu mengapa, tetapi tampaknya ada daftar halaman emotikon Wikipedia , yang tidak mengandung :!atau salah satu yang saya sebutkan.
Kevin Cruijssen

19 byte terinspirasi oleh pertanyaan lain.
Dorian

28

Pyth, 1 byte

S

Badan harus minimal 30 karakter; Anda memasukkan 14.


2
Anda bilang begitu? Saya berjuang dengan gelar itu!
Erik the Outgolfer

43
Itu karena Anda gagal menambahkan penjelasan. Bagaimana kita bisa memahami kode rumit seperti itu tanpa penjelasan?
Luis Mendo

10
Tidak Kode ini jauh di luar pemahaman saya. Terlalu panjang, saya tidak bisa memahami struktur logis yang rumit seperti ini :-P
Luis Mendo

7
@LuisMendo Saya tahu ... orlp pasti jenius untuk memahami sepotong kode yang panjang dengan logika canggih seperti itu. : P
HyperNeutrino

1
Anda masih pemenang saat ini!
Erik the Outgolfer

16

Cjam, 5 byte

{,:)}

Cobalah online!

Ini adalah blok tanpa nama yang mengharapkan npada tumpukan dan meninggalkan daftar dengan kisaran [1...n]di atasnya.
Bekerja dengan hanya membangun rentang dengan ,dan kemudian menambah setiap elemen rentang dengan :)membuat rentang berbasis satu.


9
+1 untuk smiley yang muncul secara misterius dalam kode::)
user48538

1
@ zyabin101 wajah tersenyum adalah kejadian CJam yang sangat umum!
A Simmons

4
@ASimmons menyimpulkan Cjam senang?
Erik the Outgolfer

14

Mathematica, 5 byte

Range

Cukup sederhana.


33
Tidak sederhana ketika Anda harus MEMBAYAR untuk membayar bahasa ini :(
Erik the Outgolfer

1
@ ΈρικΚωνσταντόπουλος Saya berpendapat sekarang bahwa orang kaya lebih mudah, tetapi Anda berhasil mengalahkan jawaban ini dengan 4 byte;)
Sebb

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Saya tahu ini sudah lama setelah komentar Anda, tetapi Anda tidak membayar untuk membayar bahasa, Anda membayar untuk bahasa.
NoOneIsHere

@NoOneIsHere untuk membeli berarti mengklaim kepemilikan atas sesuatu dengan membayar. Saya pikir maksud Anda ada langganan alih-alih pembayaran satu kali.
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Ada pembayaran satu kali ~ $ 150, tetapi untuk terus berdebat, mari pergi mengobrol .
NoOneIsHere

14

Hexagony, 19

$@?!{M8.</(=/>').$;

Atau dalam format segi enam yang diperluas:

  $ @ ?
 ! { M 8
. < / ( =
 / > ' ) 
  . $ ;

Terima kasih banyak untuk Martin karena pada dasarnya membuat program ini, saya hanya memasukkannya agar sesuai dengan segi 3 panjang sisi.

Cobalah online!

Saya tidak memiliki program Hexagony yang fantastis dari Timwi, jadi penjelasan ini tidak akan sangat berwarna. Sebaliknya, Anda bisa membaca gumpalan besar teks. Bukankah itu bagus?

Bagaimanapun, IP dimulai di sudut kiri atas, di $, bergerak ke arah Timur jika Anda membayangkan program ini ditempatkan dengan North menghadap ke atas pada peta. The $menyebabkan kita melewatkan instruksi berikutnya, yang akan @, yang akan mengakhiri program. Sebagai gantinya, kami mengeksekusi ?yang menetapkan tepi memori saat ini menjadi nomor input. Sekarang kita mencapai ujung barisan, yang membawa kita ke barisan tengah segi enam, masih bergerak ke arah Timur.

Sebagian besar sisa program adalah loop. Kita mulai dengan .yang merupakan no-op. Selanjutnya kita menemukan garpu di ... eh ... segi enam ... <instruksi menyebabkan IP berputar 60 derajat ke kanan jika tepi memori saat ini positif, jika tidak kita putar 60 derajat ke kiri. Karena kami bergerak ke arah Timur, kami akhirnya menuju ke Selatan atau Timur Laut. Karena input lebih besar dari nol (dan karenanya positif) kami selalu memulai dengan pergi ke Tenggara.

Selanjutnya kita tekan >yang mengarahkan kita ke arah Timur; operator ini hanya memotong jika Anda menekan bagian garpu. Lalu kami menekan 'yang mengubah tepi memori apa yang kita lihat. Lalu kami menekan )yang menambah nilai tepi memori saat ini. Karena semua tepi memori mulai dari 0, pertama kali kita melakukan ini, kita mendapatkan nilai 1. Selanjutnya kita melompat ke baris kedua ke atas dan menjalankan !yang mencetak nomor kita. Kemudian kita pindah ke sisi lain dengan {dan menyimpan nilai ASCII dari M dikalikan dengan 10 ditambah 8 (778). Lalu kita melompat kembali ke baris kedua ke terakhir dari segi enam, dan tekan tombol /. Ini mengakibatkan kami pindah ke Barat Laut. Kami melewati .di baris tengah, dan keluar di;di kanan bawah. Ini mencetak tepi memori saat ini mod 256 sebagai ASCII. Ini kebetulan merupakan baris baru. Kita menekan 'yang membawa kita kembali ke tepi pertama yang memiliki nilai yang kita baca. Kita memukul /yang membuat kita bergerak ke arah timur lagi. Lalu kami menekan (yang menurunkan nilai. =menyebabkan kita menghadapi arah yang benar lagi untuk lompatan tepi memori di masa depan.

Sekarang, karena nilainya positif (kecuali nol) kita kembali ke bagian bawah segi enam. Di sini kita menekan .lalu kita melompati ;sehingga tidak ada yang terjadi, dan kita kembali ke awal perulangan. Ketika nilainya nol kita kembali ke awal program, di mana hal yang sama terjadi lagi tetapi ?gagal menemukan nomor lain, dan kita mengambil jalur percabangan lainnya. Jalur itu relatif sederhana: kami menekan {yang mengubah tepi memori, tetapi kami tidak peduli lagi, lalu kami menekan @yang mengakhiri program.



11

GNU Coreutils, 6 byte

seq $1

pisahkan jawaban untuk bash murni, lihat di bawah ...


1
bagi saya, jawaban terbaik untuk bash / etc ^^ rasio tool-to-job sempurna
Olivier Dulac

10

R, 13 byte

cat(1:scan())

Badan harus minimal 30 karakter.


Saya tidak dapat mengedit jawaban Anda, lol.
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλος Anda hanya dapat menyarankan suntingan, yang harus disetujui, dengan reputasi Anda saat ini. Dan harap dicatat bahwa kode pengeditan tidak diterima di sini. Jika Anda memiliki saran bermain golf, tulis komentar sehingga penulis dapat mengujinya sebelum memperbarui solusinya.
Denker

@DenkerAffe Maksud saya tombol edit berwarna abu-abu sebelumnya.
Erik the Outgolfer

1
Saya lakukan jika saya ingin menulisnya bahkan ketika Anda memanggil skrip.
Masclins

9
Saya pikir CAT Scan paling cocok untuk melihat cedera tulang, mendiagnosis masalah paru-paru dan dada, dan mendeteksi kanker, bukan menghitung.
Stewie Griffin

10

Javascript 182 177 160 154 139 138 132 byte (valid)

1 byte disimpan berkat @ShaunH

n=>{c=[e=0];for(;c.join``!=n;){a=c.length-1;c[a]++;for(;a+1;a--){c[a]+=e;e=0;if(c[a]>9)c[a]=0,e++;}e&&c.unshift(1);alert(c.join``)}}

Presisi arbiter untuk penyelamatan!

Karena javascript hanya dapat menghitung hingga 2 ^ 53-1 (Terima kasih kepada @ MartinBüttner karena menunjukkannya), saya perlu membuat presisi arbiter untuk melakukan ini. Ini menyimpan data dalam sebuah array, dan setiap "centang" itu menambahkan 1 ke elemen terakhir, kemudian pergi melalui array, dan jika sesuatu melebihi 9, itu menetapkan elemen itu ke 0, dan menambahkan 1 ke yang di sebelah kiri.

Coba di sini! Catatan: tekan F12, untuk benar-benar melihat hasilnya, karena saya tidak ingin membuat Anda menunggu kotak teks.

BTW .: Saya adalah satu-satunya, yang tidak tahu, operator ternary sangat berguna dalam codegolf?

if(statement)executeSomething();

lebih panjang dari

statement?executeSomething():0;

dengan 1 byte.

Javascript, 28 byte (tidak valid - tidak dapat dihitung hingga 64 )

n=>{for(i=0;i++<n;)alert(i)}

2
Yap, kamu satu-satunya: P
Erik the Outgolfer

Bisakah versi yang tidak valid dihitung hingga 2 ^ 64-1? Jika demikian, itu valid berkat aturan baru.
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλος Tidak, hanya hingga 2 ^ 53-1
Bálint

Karena jika tidak ada yang &&bisa bermanfaat juga, hanya harus berhati-hati tentang kohersi. condition&&action()
Shaun H

1
e?c.unshift(1):0untuk e&&c.unshift(1)menyimpan byte
Shaun H

9

Java 8, 43/69/94 byte

Dicoret 44 masih tetap 44 - tunggu, saya tidak mencoretnya, saya hanya menggantinya :(

Jika saya dapat mengembalikan LongStream: ( 43 bytes)

n->java.util.stream.LongStream.range(1,n+1)

Ini adalah lambda untuk a Function<Long,LongStream>. Secara teknis, saya harus menggunakan rangeClosedbukan range, karena saya memotong satu dari input maksimum saya dengan cara ini, tetapi rangeClosedlebih lama dari itu range.

Jika saya harus mencetak dalam fungsi: ( 69 bytes)

n->java.util.stream.LongStream.range(1,n+1).peek(System.out::println)

Ini adalah lambda untuk a Consumer<Long>. Secara teknis saya menyalahgunakan peek, karena ini adalah operasi perantara , yang berarti lambda ini secara teknis mengembalikan LongStreamseperti contoh pertama; Saya harus menggunakan forEachsebagai gantinya. Sekali lagi, golf bukan kode yang bagus.

Sayangnya, karena longrange adalah integer 64-bit yang ditandatangani , ia tidak mencapai yang diminta 2^64-1, tetapi hanya 2^63-1.

Namun , Java SE 8 menyediakan fungsionalitas untuk mengobati longs seakan mereka unsigned, dengan memanggil metode tertentu di Longkelas secara eksplisit. Sayangnya, karena Java masih Java, ini agak bertele-tele, meskipun lebih pendek dari versi BigInteger yang digantikannya. ( 94 bytes)

n->{for(long i=0;Long.compareUnsigned(i,n)<0;)System.out.println(Long.toUnsignedString(++i));}

Ini adalah Consumer<Long>, seperti sebelumnya.

Dan terlalu lama untuk menghindari gulir.


2 ^ 64-1 batas berubah: D
Erik the Outgolfer

1
Shouldn't the first function be n->java.util.stream.LongStream.range(1,n+1)?
Mego

2
@zyabin101 >.> you saw nothing
CAD97

1
@KevinCruijssen Ini akan membantu, kecuali alasan untuk menggunakan BigIntegeradalah bahwa menggunakan int(atau bahkan long) untuk iterator tidak cukup besar.
CAD97

1
Saya salah; J8 menyediakan metode untuk digunakan longdengan cara yang tidak ditandatangani, jadi menggunakan itu lebih pendek dari BigIntegerpendekatan. (Itu tidak akan terjadi seandainya kita harus menerapkan perlakuan lama tanpa tanda tangan kita sendiri seperti yang Anda harus lakukan sebelum J8.)
CAD97


7

MATLAB, 7 bytes

Fungsi anonim tanpa nama:

@(n)1:n

Jalankan sebagai:

ans(10)
ans =
     1     2     3     4     5     6     7     8     9    10

Uji di sini!


If a full program is required, 17 bytes:

disp(1:input(''))
10
     1     2     3     4     5     6     7     8     9    10

Test it here!


7

Haskell, 10 bytes

f n=[1..n]

Usage example: f 4-> [1,2,3,4].


You must not hardcode n, you must take n.
Erik the Outgolfer

4
@ΈρικΚωνσταντόπουλος n isn't hardcoded here - it's a function argument. Haskell syntax can be strange to people used to C-like syntax.
Mego

@Mego Oh, I was confused with the usage example.
Erik the Outgolfer

7

MarioLANG, 19 bytes

;
)<
+"
:[
(-
>!
=#

Try it online!

Vertical programs are usually more golfable for simple loops in MarioLANG. I'm not sure what the interpreter does when encountering [ inside an elevator, but it seems to terminate the program when the current cell is 0. That's probably a useful trick in general.

Explanation

MarioLANG is a Brainfuck-like language (with an infinite memory tape of arbitrary-precision integers) where the instruction pointer resembles Mario walking and jumping around.

Mario starts in the top left corner and falls downward. ; reads an integer from STDIN and places it in the current memory cell. Now note that = is a ground cell for Mario to walk on, the " and # form an elevator (with # being the start) and ! makes mario stop on the elevator so that he doesn't walk off right away. The > and < set his movement direction. We can see that this gives a simple loop, containing the following code:

)   Move memory pointer one cell right.
+   Increment (initially zero).
:   Print as integer, followed by a space.
(   Move memory pointer one cell left.
-   Decrement.
[   Conditional, see below.

Now normally [ would conditionally make Mario skip the next depending on whether the current cell is zero or not. That is, as long as the counter is non-zero this does nothing. However, it seems that when Mario encounters a [ while riding an elevator and the current cell is 0, the program simply terminates immediately with an error, which means we don't even need to find a way to redirect him correctly.


It terminates the program because it "falls" I think.
Erik the Outgolfer

You chose 56 too?
Erik the Outgolfer

@ΈρικΚωνσταντόπουλος I can't seem to find any place Mario falls to. It looks like the interpreter just terminates with an error right at the [, which is actually even more convenient.
Martin Ender

TIO has a tendency not to show error messages (STDERR) without Debug enabled. It seems it is indeed an error.
Erik the Outgolfer

@ΈρικΚωνσταντόπουλος Yeah, and that's actually good, because STDERR is ignored unless specified otherwise.
Martin Ender

6

Joe - 2 or 6

While you can use the inclusive variant of the range function..

1R

..that's boring! Let's instead take the cumulative sum (\/+) of a table of ones of shape n (1~T).

\/+1~T

Can you provide a link to the language
Downgoat


4

Pyth - 3 2 bytes

1 bytes saved thanks to @DenkerAffe.

Without using the builtin.

hM

Try it online.


hM if you wanna get real fancy :)
Denker

@DenkerAffe oh yeah, true.
Maltysen

You forgot to update your byte count.
Conor O'Brien

@CᴏɴᴏʀO'Bʀɪᴇɴ -.-
Maltysen

@ΈρικΚωνσταντόπουλος orlp already did the builtin answer.
Maltysen


4

dc, 15

?[d1-d1<m]dsmxf

Input read from stdin. This counts down from n, pushing a copy of each numbers to the stack. The stack is then output as one with the f command, so the numbers get printed in the correct ascending order.

Because all the numbers are pushed to the stack, this is highly likely to run out of memory before getting anywhere near 2^64. If this is a problem, then we can do this instead:


dc, 18

?sn0[1+pdln>m]dsmx

Maybe it works with 2^64-1 (the new limit).
Erik the Outgolfer

The first one will run out of memory long before you reach 2^64-1. The second will keep on happily going until our sun goes supernova
Digital Trauma

@DigitalTraumaskcsockso I meant that you can edit your second answer if it's shorter for 2^64-1.
Erik the Outgolfer

@ΈρικΚωνσταντόπουλος dc, like bc, uses arbitrary precision math by default, and thus such boundaries are irrelevant for this language.
Digital Trauma

4

ArnoldC, 415 bytes

IT'S SHOWTIME
HEY CHRISTMAS TREE n
YOU SET US UP 0
GET YOUR ASS TO MARS n
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE x
YOU SET US UP n
STICK AROUND x
GET TO THE CHOPPER x
HERE IS MY INVITATION n
GET DOWN x
GET UP 1
ENOUGH TALK
TALK TO THE HAND x
GET TO THE CHOPPER x
HERE IS MY INVITATION n
GET DOWN x
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED

The only thing of interest is to use n-x (where n is the goal and x the incremented variable) to test the end of the while loop instead of having a dedicated variable, so I end up having n-x and n-(n-x) = x in each loop run

Note: I can only count to 2^31-1. Well I guess the Terminators are not a real danger after all.


3
Of course there is a programming language designed around Arnold Schwarzenegger memes...
Nzall

4

Piet, 64 Codels codelsize 1

With codelsize 20:

codelsize 20

Npiet trace images

First loop:

tracestart

Remaining trace for n=2:

traceend

Notes

  • Belum ada jawaban Piet? Biarkan saya memperbaikinya dengan program Piet pertama saya! Ini mungkin bisa lebih pendek dengan gulungan yang lebih baik dan manipulasi pointer ...

  • Batas yang didukung atas tergantung pada implementasi penerjemah. Secara teori dimungkinkan untuk mendukung jumlah besar yang sewenang-wenang dengan juru bahasa yang tepat.

  • Delimeter adalah ETX(Ascii 3), namun ini tidak dapat ditampilkan dengan benar dalam jawaban ini jadi saya hanya akan mengabaikannya. Ini bekerja di konsol:

enter image description here

Keluaran

Input:  1
Output: 1

Input:  20
Output: 1234567891011121314151617181920

Input:  100
Output: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100

Undefined behaviour:

Input:  -1
Output: 1

Input:  0
Output: 1

Jejak npiet untuk n=2

trace: step 0  (0,0/r,l nR -> 1,0/r,l lB):
action: in(number)
? 2
trace: stack (1 values): 2

trace: step 1  (1,0/r,l lB -> 2,0/r,l nB):
action: push, value 1
trace: stack (2 values): 1 2

trace: step 2  (2,0/r,l nB -> 3,0/r,l nG):
action: duplicate
trace: stack (3 values): 1 1 2

trace: step 3  (3,0/r,l nG -> 4,0/r,l dY):
action: out(number)
1
trace: stack (2 values): 1 2

trace: step 4  (4,0/r,l dY -> 5,0/r,l lY):
action: push, value 1
trace: stack (3 values): 1 1 2

trace: step 5  (5,0/r,l lY -> 6,0/r,l lG):
action: add
trace: stack (2 values): 2 2

trace: step 6  (6,0/r,l lG -> 7,0/r,l lR):
action: duplicate
trace: stack (3 values): 2 2 2

trace: step 7  (7,0/r,l lR -> 10,0/r,l nR):
action: push, value 3
trace: stack (4 values): 3 2 2 2

trace: step 8  (10,0/r,l nR -> 12,0/r,l dR):
action: push, value 2
trace: stack (5 values): 2 3 2 2 2

trace: step 9  (12,0/r,l dR -> 13,0/r,l lB):
action: roll
trace: stack (3 values): 2 2 2

trace: step 10  (13,0/r,l lB -> 14,0/r,l lG):
action: duplicate
trace: stack (4 values): 2 2 2 2

trace: step 11  (14,0/r,l lG -> 15,2/d,r nG):
action: push, value 3
trace: stack (5 values): 3 2 2 2 2

trace: step 12  (15,2/d,r nG -> 15,3/d,r dG):
action: push, value 1
trace: stack (6 values): 1 3 2 2 2 2

trace: step 13  (15,3/d,r dG -> 14,3/l,l lR):
action: roll
trace: stack (4 values): 2 2 2 2

trace: step 14  (14,3/l,l lR -> 13,1/l,r lC):
action: greater
trace: stack (3 values): 0 2 2

trace: step 15  (13,1/l,r lC -> 11,1/l,r nC):
action: push, value 3
trace: stack (4 values): 3 0 2 2

trace: step 16  (11,1/l,r nC -> 10,1/l,r lB):
action: multiply
trace: stack (3 values): 0 2 2

trace: step 17  (10,1/l,r lB -> 9,1/l,r nY):
action: pointer
trace: stack (2 values): 2 2

trace: step 18  (9,1/l,r nY -> 7,1/l,r dY):
action: push, value 2
trace: stack (3 values): 2 2 2

trace: step 19  (7,1/l,r dY -> 6,1/l,r lY):
action: push, value 1
trace: stack (4 values): 1 2 2 2

trace: step 20  (6,1/l,r lY -> 5,1/l,r nM):
action: roll
trace: stack (2 values): 2 2

trace: step 21  (5,1/l,r nM -> 4,1/l,r dM):
action: push, value 3
trace: stack (3 values): 3 2 2

trace: step 22  (4,1/l,r dM -> 3,1/l,r lG):
action: pointer
trace: stack (2 values): 2 2

trace: step 23  (3,1/d,r lG -> 2,3/l,l nG):
action: push, value 3
trace: stack (3 values): 3 2 2

trace: step 24  (2,3/l,l nG -> 2,2/u,r lY):
action: out(char)

trace: stack (2 values): 2 2
trace: white cell(s) crossed - continuing with no command at 2,0...

trace: step 25  (2,2/u,r lY -> 2,0/u,r nB):

trace: step 26  (2,0/u,r nB -> 3,0/r,l nG):
action: duplicate
trace: stack (3 values): 2 2 2

trace: step 27  (3,0/r,l nG -> 4,0/r,l dY):
action: out(number)
2
trace: stack (2 values): 2 2

trace: step 28  (4,0/r,l dY -> 5,0/r,l lY):
action: push, value 1
trace: stack (3 values): 1 2 2

trace: step 29  (5,0/r,l lY -> 6,0/r,l lG):
action: add
trace: stack (2 values): 3 2

trace: step 30  (6,0/r,l lG -> 7,0/r,l lR):
action: duplicate
trace: stack (3 values): 3 3 2

trace: step 31  (7,0/r,l lR -> 10,0/r,l nR):
action: push, value 3
trace: stack (4 values): 3 3 3 2

trace: step 32  (10,0/r,l nR -> 12,0/r,l dR):
action: push, value 2
trace: stack (5 values): 2 3 3 3 2

trace: step 33  (12,0/r,l dR -> 13,0/r,l lB):
action: roll
trace: stack (3 values): 2 3 3

trace: step 34  (13,0/r,l lB -> 14,0/r,l lG):
action: duplicate
trace: stack (4 values): 2 2 3 3

trace: step 35  (14,0/r,l lG -> 15,2/d,r nG):
action: push, value 3
trace: stack (5 values): 3 2 2 3 3

trace: step 36  (15,2/d,r nG -> 15,3/d,r dG):
action: push, value 1
trace: stack (6 values): 1 3 2 2 3 3

trace: step 37  (15,3/d,r dG -> 14,3/l,l lR):
action: roll
trace: stack (4 values): 2 3 2 3

trace: step 38  (14,3/l,l lR -> 13,1/l,r lC):
action: greater
trace: stack (3 values): 1 2 3

trace: step 39  (13,1/l,r lC -> 11,1/l,r nC):
action: push, value 3
trace: stack (4 values): 3 1 2 3

trace: step 40  (11,1/l,r nC -> 10,1/l,r lB):
action: multiply
trace: stack (3 values): 3 2 3

trace: step 41  (10,1/l,r lB -> 9,1/l,r nY):
action: pointer
trace: stack (2 values): 2 3
trace: white cell(s) crossed - continuing with no command at 9,3...

trace: step 42  (9,1/d,r nY -> 9,3/d,l nR):

Apakah ada byte nol di antara angka?
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλος apa maksudmu? Di konsol, Anda dapat melihat ETXkarakter (Ascii 3) membagi output, karakter ETX tidak dapat ditampilkan di situs ini.
Marv

4

JavaScript (ES6), 77 76 63 59 58 Bytes

n=>{for(s=a=b=0;s!=n;console.log(s=[a]+b))a+=!(b=++b%1e9)}

Mengambil input nsebagai string, harus mendukung hingga 9007199254740991999999999

Dijelaskan:

n=>{ //create function, takes n as input
    for( //setup for loop
        s=a=b=0; //init s, a, and b to 0
        s!=n; //before each cycle check if s!=n
        console.log(s=[a]+b) //after each cycle concat a and b into to s and print
    )
        a+=!(b=++b%1e9) //During each cycle set b to (b+1)mod 1e9, if b == 0 and increment a
} //Wrap it all up

Mohon penjelasannya.
Bálint

2^64-1baik-baik saja saya telah mengubah spec.
Erik the Outgolfer

1
Menarik, saya tidak berpikir hanya menggabungkan dua angka untuk mencapai nilai minimum. BTW, Anda bisa menyimpan banyak byte dengan menggunakan dua variabel, bukan array:n=>{for(a=b="";a+""+b!=n;console.log(a+""+b))++b-1e9||(++a,b=0)}
user81655

Terima kasih untuk itu @ user81655, otak saya suka array untuk beberapa alasan
Shaun H

1
Anda dapat menyimpan byte dengan mengubah a+""+bke[a]+b
Bassdrop Cumberwubwubwub

3

GNU bc, 23

n=read()
for(;i++<n;)i

Input read from stdin. bc handles arbitrary precision numbers by default, so the 2^64 max is no problem.


3

Actually, 1 byte

R

Boring builtin is boring. Requires a 64-bit version of Python 3 to get all the way up to 2**64.

Try it online! (due to memory and output length restrictions, the online interpreter can't go very high).

Here's a 5-byte version that doesn't require 64-bit Python 3 and is a little nicer on memory usage:

W;DWX

Try it online! (see above caveats)


@StewieGriffin The issue is with addressable RAM, not integer limits (Python seamlessly transitions between native ints and big integers). I tested it with both 32-bit Python 3 and 64-bit Python 3. 32-bit failed, 64-bit didn't.
Mego

@Mego I have changed the limits, although I don't think 32-bit Python supports 2^64-1, I think it supports up to 2^32-1, so I encourage for the latter to be used in the Python case.
Erik the Outgolfer

Why do you call Seriously Actually?
Erik the Outgolfer

@ΈρικΚωνσταντόπουλος Like I mentioned to Stewie, the issue isn't 64-bit ints, but memory addressing. Because of how inefficient Seriously and Actually are at memory usage, they very quickly exhaust the memory limit of 32-bit processes. And Actually and Seriously are different languages - Actually is the successor to Seriously.
Mego

@Mego Oh, I once clicked a link for Actually and it linked me directly to Seriously.
Erik the Outgolfer

3

Fuzzy-Octo-Guacamole, 7 bytes

^!_[+X]

Explanation:

^ get input to ToS
! set for loop to ToS
_ pop
[ start for loop
+ increment ToS (which aparently happens to be 0)
X print ToS
] end for loop

Also, X works instead of o;, for 7 bytes.
Rɪᴋᴇʀ

Wouldn't that print [n]?
Bald Bantha

rather than n
Bald Bantha

No. : prints the full stack. X is new.
Rɪᴋᴇʀ

Also, another 7 byte solution: ^!$[_;]. $ is range.
Rɪᴋᴇʀ

3

Oration, 31 bytes (non competing)

literally, print range(input())

Is this python with literally, in front of every statement? (Question 2: Pre-dates or post-dates if it's yours? both are acceptable unless you made this for this challenge, in which case it's a loophole)
Erik the Outgolfer

@EʀɪᴋᴛʜᴇGᴏʟғᴇʀ I believe Oration is by ConorO'Brien. github.com/ConorOBrien-Foxx/Assorted-Programming-Languages/tree/… Also, if this language was invented after the challenge, (which it wasn't) it wold be non-competing but still a valid answer. I'm not a big fan of the "Your language must pre-date the challenge" rule. I think if someone invents a 0 or 1 byte solution to a challenge, that's clearly against the rules, but using a new real language should be allowed.
DJMcMayhem

@EʀɪᴋᴛʜᴇGᴏʟғᴇʀ this is what Dr Green Eggs said. I'm actually Easterlyirk's chatbot.
Żáłģó

So no review for you?
NoOneIsHere

@NoOneIsHere what?
Żáłģó

3

QBASIC, 43 bytes

1 INPUT a
2 FOR b=1 TO a
3 PRINT b
4 NEXT b

Do you really need INPUT e;a or INPUT a is enough? I don't see you re-using e.
Erik the Outgolfer

good point, not sure why that was there.
Michelfrancis Bustillos

Also, do you really need the spaces between the line number and letters and between 1 TO?
Erik the Outgolfer

Yes, those are necessary
Michelfrancis Bustillos

What version of QBasic is this? Can you use : between statements instead of a return and a line number? QB4.5 lets me do this: INPUT a: FOR b=1 TO a (\n) ?b:NEXT
steenbergh

3

Cubix, 17 bytes

..U;I0-!@;)wONow!

Try it here

Cubix is a 2D language created by @ETHProductions where the commands are wrapped onto a cube. This program wraps onto a cube with an edge length of 2 as follows.

    . .
    U ;
I 0 - ! @ ; ) w
O N o w ! . . .
    . .
    . .
  • I gets the integer input
  • 0 push 0 to the stack
  • - subtract top items of stack
  • ! if truthy jump the next command @ terminate
  • ; pop the subtraction result from the stack
  • ) increment top of stack
  • w move ip to the right and carry on. This causes it to drop to the next line
  • O output the top of stack as a number
  • N push linefeed (10) to the stack
  • o output a linefeed
  • w move ip to the right and carry on. This causes it to drop to the next face
  • ! because TOS truthy, jump the @ terminate
  • ; pop the linefeed from the stack
  • U uturn to the left onto the - subtraction and resume from there

2

Python 2, 37 33 32 33 bytes

for i in xrange(input()):print-~i

Presumably works up to 2**64 and beyond.

Shot down four bytes thanks to @dieter, and another thanks to @orlp. But apparently, as @Sp3000 found out, range() might have issues with higher values, so the function was changed to xrange(). Note: even xrange() might have issues, at least in 2.7.10.


1
Python 2, to be exact :)
Erik the Outgolfer

33 bytes -> for i in range(input()):print i+1
dieter

2
32 bytes -> for i in range(input()):print-~i
orlp

1
"Presumably works up to 2**64 and beyond." - doubt it in Python 2, but it might with xrange (edit: even xrange might have issues, at least in 2.7.10)
Sp3000

How does -~ work? Edit: I figured it out. Also, nice trick!
Erik the Outgolfer

2

Zsh, 12 bytes

echo {1..$1}

This works because variables are expanded before the braces.


2
I'm not sure you can count up to 2^64 (or even quite a bit less) ?
Olivier Dulac

@OlivierDulac 2^64-1 is fine now.
Erik the Outgolfer

1
zsh's maximum is 2^63 - 1
joeytwiddle

2

V, 11 Bytes

é1@añYpñdd

Since this contains nasty UTF-8 and unprintables, here is a reversible hexdump:

00000000: e931 4061 f159 7001 f164 64              .1@a.Yp..dd

V is an unfinished language I wrote, but this is working as of commit 19. This answer was a little more verbose than I'd like, but that's mostly because V has no knowledge of integers, only strings. So it's a decent answer! This will work up to 2^64, but it will probably take a very long time.

To make my explanation easier to read/write, I will work with this "Human readable form", which is actually how you would type this in vim.

<A-i>1@a<A-q>Yp<C-a><A-q>dd

Explanation:

'Implicit: register "a" == arg 1, and any generated text is printed. 

<A-i>1                       'Insert a single character: "1"
      @a                     ' "a" times, 
        <A-q>       <A-q>    'Repeat the following:
             Yp<C-a>         'Duplicate the line, and increment it
                         dd  'Delete the last line, since we have one too many.

If loopholes are allowed, here's a shorter version that prints 1 to n, but also prints a 0 (8 bytes):

é0@añYp

And in readable form:

<A-i>1@a<A-q>Yp<C-a>

This is shorter because the <A-q> at the end is implicit, so we don't need it if we don't have to delete the last line.


It can take as long as it wants. Glad to see an answer to work with 2^64, especially with an unfinished language. +1
Erik the Outgolfer

I have changed the limit to 2^64-1 because standard loopholes are disallowed now, and I don't want to cut answers out too much.
Erik the Outgolfer
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.