Hitung seperti Chuck Norris


58

Seperti diketahui ,

Chuck Norris dihitung hingga tak terbatas. Dua kali

Selain itu ,

Chuck Norris dapat menghitung hingga tak terbatas ke belakang.

Juga, meskipun mungkin kurang dikenal, Chuck Norris dapat berbicara sedikit bahasa Spanyol selain bahasa Inggris.

Tantangan

Tulis program (atau fungsi) yang dapat dijalankan dalam dua bahasa yang berbeda. Dalam satu bahasa program harus menampilkan urutan

1, 1, 2, 2, 3, 3, 4, 4, ...

dan dalam bahasa lain itu harus menghasilkan urutan (termasuk nol terkemuka)

1, 2, ..., 9, 01, 11, 21, 31, ..., 89, 99, 001, 101, 201, ...

Aturan

  • Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang.
  • Versi berbeda dari bahasa yang sama (seperti Python 2/3) tidak dihitung sebagai bahasa yang berbeda. Bahasa terkait (seperti C / C ++ atau Matlab / Oktaf) memang dianggap berbeda.
  • Tidak ada input yang akan diambil.
  • Program harus terus mengeluarkan ketentuan urutan sampai dihentikan oleh pengguna. Karena program tidak akan berhenti dengan sendirinya, output tidak dapat diproduksi pada akhirnya. Itu harus diproduksi saat program berjalan, baik secara terus menerus atau dalam batch.
  • Output dapat menggunakan STDOUT atau yang setara, atau dapat ditampilkan dalam jendela grafik. Pemisah non-numerik antara istilah urutan diizinkan, selama masing-masing istilah dapat dengan jelas dibedakan dari istilah tetangganya. Ini juga dapat diterima jika layar dihapus di antara istilah.
  • Entah urutan dapat dimulai pada 0bukan 1. Dalam hal itu, dalam urutan "dua kali" yang 0harus diulang, sama seperti nomor lainnya.
  • Angka nol di depan penting dalam urutan "mundur". Misalnya, istilah kesepuluh adalah 01; tidak 1juga 001tidak bisa diterima.
  • Jika kedua bahasa menggunakan pengkodean karakter yang berbeda, program ditentukan oleh byte , bukan karakternya. Artinya, byte harus sama dalam dua bahasa.
  • Kode terpendek dalam byte menang.

8
Downvoters, ada saran untuk perbaikan?
Luis Mendo

29
Chuck Norris terlalu kuat untuk menghitung, jika dia melakukannya, angka pertama yang dia hitung akan melebihi tak terbatas dan menghancurkan ranah matematika yang dikenal. Karena itu, saya menolak berkompetisi.
Magic Octopus Urn

11
@carusocomputing, sangat bijaksana mengingat kekurangan push-up di seluruh dunia sejak Chuck Norris melakukan semuanya.
Wossname

33
Chuck Norris dapat menyelesaikan tantangan ini dalam 0 byte. Dia hanya dapat melihat komputer dan komputer melakukan apa pun yang dia inginkan.
Kodos Johnson

17
Chuck Norris tidak mencoba memenangkan tantangan ini, dia hanya membiarkanmu kalah.
Nat

Jawaban:


18

05AB1E / Jelly ,  14  13 byte

-1 byte berkat Adnan (hindari rangkap tiga dengan cetakan non-popping)

Byte mentah (heksadesimal):

31 5b 3d 3d 3e 5d fc 06 b6 3b 87 08 15

Dalam 05AB1E 's kode-halaman :

1[==>]üε¶;‡ηΩ

Cobalah online!

Dalam Jelly 's kode-halaman :

1[==>]‘©Ṛ;⁷®ß

Cobalah online!

Bagaimana?

Program 05AB1E mencetak jumlah ganda dengan setiap entri dipisahkan oleh baris baru:

1[==>]üε¶;‡ηΩ
1             - push 1 onto the stack
 [            - start infinite loop:
  =           - print top of stack
   =          - print top of stack
    >         -   increment the top of the stack (pop(1), x+=1, push)
     ]        - end the infinite loop
      üε¶;‡ηΩ - this code is never executed nor is it parsed

Program Jelly mencetak hitungan terbalik dengan setiap entri dipisahkan oleh baris baru.

Parser akan memperlakukan literal yang valid antara [dan ]sebagai literal terlampir, jika byte ini adalah token yang tidak ditentukan dan dengan demikian menjadi setara dengan token yang memisahkan kode menjadi garis-garis. ==>tidak parse sebagai literal, jadi kodenya efektif:

1 - link 1 (not executed but parsed)
1 - literal 1

==> - link 2 (not executed but parsed)
=   - left equals right? (vectorises)
 =  - left equals right? (vectorises)
  > - is greater than the right argument? (vectorises)

‘©Ṛ;⁷®ß - Main link: no arguments
‘       - increment (implicit 0 on left increments to 1 on the first pass)
 ©      - copy the result to the register and yield it
  Ṛ     - reverse, this has an implicit decimal list build, e.g. 142 -> [2,4,1]
    ⁷   - a newline character
   ;    - concatenate, e.g. [2,4,1] -> [2,4,1,'\n']
     ®  - recall the number from the register, e.g. 142
        - The chain has reduced to one item of arity 0, causing a pre-evaluation print:
        -     ...and since the list contains a character it gets smashed together
        -     e.g. [2,4,1,'\n'] prints 241 followed by a newline character
      ß - call this link with the same arity, e.g. as a monad with left = 142

Saya belum memeriksa apakah itu berfungsi untuk Jelly, tetapi jika itu berfungsi, Anda dapat menggantinya Ð,,dengan ==.
Adnan

Itu harus diuraikan dalam Jelly. Saya telah mencari info.txt untuk cetakan yang tidak muncul, dan tidak melihatnya. Terima kasih.
Jonathan Allan

26

Python 2 / C (dentang) , 109 107 100 84 95 88 89 88 87 84 byte

i=0;
#/*
while 1:i+=1L;print`i`[::-1]
'''*/
a(){for(;;)printf("%i %1$i ",++i);}//'''

Python: Coba online!

C: Coba online!

L dalam kode Python adalah bagian dari pembatas.

Penjelasan:

Dalam kode C, Ini pertama menetapkan i ke 0. Kemudian, ia memulai komentar ( #adalah kode yang valid dalam C untuk #includepernyataan) di mana kode Python berjalan. Di akhir komentar, ia mendefinisikan fungsi yang selamanya menambah variabel dan mencetaknya dua kali, dibatasi ruang. Kemudian dimulai komentar.

Dalam kode Python, i=0;set i ke nol. Python mengabaikan baris berikutnya karena #memulai komentar baris tunggal. Kemudian selamanya menambahkannya dan mengubahnya menjadi angka yang panjang dan mencetak representasi string yang terbalik. 'L' dari panjang adalah bagian dari pembatas. Setelah itu, ia memulai string multi-line untuk mengomentari kode C, yang berakhir kemudian.

 

-2 byte terima kasih kepada @LuisMendo. -7 byte terima kasih kepada @ZacharyT. -6 byte lebih banyak berkat @ZacharyT. +11 byte untuk memperbaiki bug berkat @ mbomb007. -7 byte terima kasih kepada @Doorknob. +1 byte untuk memperbaiki bug berkat @Doorknob. -1 byte terima kasih kepada @yoann. -1 byte lebih banyak berkat @yoann. -3 byte terima kasih kepada @Cyoce.


Hmm, saya pikir Anda bisa menggunakan rekursi dalam kode C -a(i){printf("%i %i ",i,i);a(i+1)}
enedil

Mengapa tidak menggunakan whileloop untuk kode C?
enedil

@enedil Dibutuhkan lebih banyak byte.
Kamerad SparklePony

Saya pikir Anda dapat menggunakan `i`sebagai gantinyastr(i)
Cyoce

Anda dapat menggunakan for(;;)printf("%i %1$i ",i++);untuk menyimpan satu byte. The 1$adalah argumen posisional yang memberitahu printfuntuk menampilkan argumen pertama (setelah format string).
yoann

12

Jelly / Pyth, 15 byte

.V1_`b;"1üÉÉ$

Unprintables dirusak oleh perangkat lunak SE, jadi inilah hexdump:

00000000: 2e56 315f 6062 3b22 7f31 fcc9 c924 0b    .V1_`b;".1...$.

Jalankan dengan jelly f filedan pyth filemasing - masing.

Penjelasan

Pertama adalah bagian Pyth. .Vmenjalankan infinite loop di atas urutan yang meningkat mulai dari inputnya, yang ada di sini 1. Kemudian kita membalikkan ( _) `indeks loop yang diikat ( b) dan secara implisit mengeluarkannya. Itu ;ada di sana untuk mengakhiri loop, dan "diperlukan untuk memperlakukan sisa program sebagai string literal sehingga parser tidak tersedak.

Bagian Jelly akan dijelaskan dengan terlebih dahulu menerjemahkan sisa program dari halaman kode Jelly:

¶1‘ṄṄ$¿

The bertindak sebagai pakan garis, efektif mengabaikan bagian pertama dari program ini dengan membuat link yang tidak pernah disebut. Kemudian kita mulai 1dan menjalankan while loop ( ¿) yang menggunakan ṄṄ$(mencetak dua kali) sebagai kondisinya, dan menambah ( ) nilainya sebagai loop body.


Kebetulan, mengganti bagian Pyth dengan 1[DR,>] akan membuat pengiriman Jelly / 05AB1E yang valid dalam 14 byte, tetapi interpeter saat ini berisi bug yang mencegah hal ini.


1
@JonathanAllan Anda benar, itu adalah baris tambahan yang ditambahkan oleh editor teks saya.
Gagang Pintu

11

Perl / JavaScript, 87 byte

s=0;print=console.log;m=s;$_=s=s=s=m;while(++$_){print((m/s,$_+`
`+$_||/&&reverse.$/))}

Perl

s/0;print/console.log;m/s;$_=s/s/s/m;while(++$_){print((/s,$_+`
`+$_||/&&reverse.$/))}

Sebuah mekanisme yang saya gunakan banyak dalam JS / Perl polyglots adalah menyalahgunakan fakta bahwa substitusi dapat menerima hampir semua pembatas, menggunakan =cara saya dapat menggunakan substitusi pointless awal (pertama-tama mengganti 0;printdengan console.log;mflag /sin $_, yang saat ini undef) , lalu atur $_ke hasil penggantian sdengan sdalam mode multiline ( /m), yaitu 0. Sekarang $_adalah 0dan saya memulai whileloop, ini kenaikan kemudian $_. Selanjutnya saya panggil print, menyampaikan ekspresi reguler yang cocok (karena ||pada akhir yang cocok dengan string kosong) dan menggunakan &&operator untuk kemudian mengirim kebalikan dari $_digabungkan dengan baris baru ($/diinisialisasi ke "\n"). Ini penting hingga tak terbatas mundur.

JavaScript

s=0;print=console.log;m=s;$_=s=s=s=m;while(++$_){print((m/s,$_+`
`+$_||/&&reverse.$/))}

Banyak tugas variabel di sini, yang disembunyikan di dalam s///panggilan Perl . Saya mengatur variabel sdan msebagai 0, alias console.loguntuk print, menjalankan beberapa pembagian pointless, setel $_ke 0dan mulai whilepenambahan loop $_, panggilan printlewat 0( m/s, ini memulai panggilan ke mdalam Perl, tetapi diperlakukan sebagai divisi standar di JS) dan string target kami ( $_+"\n"+$_) melalui operator koma, yang mengembalikan item terakhir dalam daftar. Saya menghindari potongan terakhir dari kode Perl ( &&reverse.$/) karena $_+"\n"+$_akan benar dan jadi saya dapat menggunakan ||untuk menghasilkan RegExpobjek yang berisi akhir dari kode Perl yang tidak pernah dievaluasi.

Diuji menggunakan Perl 5 dan Node 6.


8

NodeJS / PHP, 131 106 byte

-25 byte terima kasih kepada @Titus

<!--
printf=(_,i)=>process.stdout.write(i+i),strrev=i=>i+" "//--><?
for($i=0;;)printf("%s ",strrev($i++));

Menggunakan NodeJS alih-alih browser JS untuk pemformatan output yang lebih baik dan penanganan loop tak terbatas yang lebih baik.

Coba JavaScript online
Coba PHP online

Perhatikan bahwa output TIO terputus setelah 128KB.


1
102 byte mulai dari 0: <!--←printf=(_,i)=>process.stdout.write(i),strrev=i=i>>1//--><?←for($i=0;;)printf("%s ",strrev($i++));. 84 byte (tapi tidak sebagus pendekatan Anda): <!--←for(i=1;;)process.stdout.write(i+" "+i+++" ")//--><?for(;;)echo strrev(++$i),_;atau <!--←for(i=1;;)process.stdout.write((++i>>1)++" ")//--><?for(;;)echo strrev(++$i),_;.
Titus

@Itus Ide yang bagus dengan i>>1mengulangi angka, tetapi saya harus mengubah write(i)untuk memasukkan spasi, dan karena write()tidak menerima nomor. Dan Anda memiliki kesalahan ketik ( strrev=i=i>>1-> strrev=i=>i>>1) yang menambahkan byte lain. Akhirnya menjadi lebih pendek untuk dilakukan write(i+i)dan strrev=i=>i+" ".
Justin Mariner

7

V / Brain-flak Classic , 27 , 26 byte

(()){[[({}())[]]]}é1òÙæ_æ

Hexdump:

00000000: 2828 2929 7b5b 5b28 7b7d 2829 295b 5d5d  (()){[[({}())[]]
00000010: 5d7d e931 f2d9 e65f 01e6                 ]}.1..._..

Cobalah online! di V (sedikit dimodifikasi sehingga akan berhenti sehingga Anda dapat melihat hasilnya. Pada TIO, V hanya menghasilkan jika program berakhir)

Cobalah online! di Brain-flak Classic

Ini bukan yang paling menarik dari polyglots, karena kode V tidak berpengaruh pada brain-flak classic, dan sebaliknya, namun sangat menyenangkan untuk menggunakan kedua bahasa saya sendiri pada sebuah tantangan, dan kedua solusi tersebut cukup menarik sendiri.

V Penjelasan:

é1              " Insert a '1'
  ò             "   Recursively:
   Ù            "   Duplicate this number
    æ_          "   Flip this line
      <C-a>     "   Increment the number on this line
           æ    "   Flip it back (the '_' is implicit because it's at the end of the program)

Penjelasan BFC:

#Push a one onto the main stack
(())

#Forever:
{

  #Print twice:
  [[

    #Increment the top of the stack.
    #Evaluates to *i + 1*
    ({}())

    #Minus one
    []
  ]]

#Endwhile
}

3
Segera setelah saya melihat bahasa yang saya tahu Anda memposting yang ini.
Riley

Mengapa "Brain-flak Classic"? Apakah ada Brain-flak yang berbeda?
nmjcman101

@ nmjcman101 Brain-flak classic adalah versi asli Brain-flak. Perbedaannya dijelaskan lebih terinci di sini , tetapi alasan saya memilihnya adalah karena ia memiliki keluaran eksplisit, yang tidak dimiliki oleh otak modern. (memungkinkan untuk keluaran tanpa batas)
DJMcMayhem

4

Retina / Python 2, 61 byte

#{*M`
#*M`
"""

}`$
1
""";i=1
while 1:print str(i)[::-1];i+=1

Retina | Python 2


Saya mencoba mengganti str()dengan ``, tetapi ternyata mengganggu kode Retina. Saya tidak tahu kenapa?
officialaimm

Anda tidak bisa melakukan itu. Jika itu akan membuatnya menjadi banyak dan berfungsi dengan baik, itu harus dilakukan str, jika tidak, Anda akan mendapatkan Lhasilnya. Tapi itu benar - benar bekerja di Retina. Anda pasti telah mengubah lebih dari apa yang Anda katakan Anda lakukan, seperti memindahkan sesuatu ke jalur yang berbeda.
mbomb007

3

R / Oktaf , 83 80 78 71 byte

-3 byte terima kasih kepada Luis Mendo

i=0;
while(1)
#{
print(c(i<-i+1,i))
#}
disp(flip(num2str(i)))
i+=1;
end

#{ }#adalah komentar blok Oktaf dan #kebetulan adalah komentar untuk R. Penerjemah R hanya melihat baris berikutnya sebagai badan whileloop, dan penerjemah Oktaf melompat tepat di depan kode Oktaf

Bagian R mencetak pasangan angka mulai dari 1, dan bagian Oktaf mencetak angka-angka mundur mulai dari 0.

Saya sepenuhnya berharap untuk dikalahkan (bahkan dengan kombinasi bahasa yang sama); Saya baru saja menulis begitu banyak kode Matlab dan R baru-baru ini sehingga saya pikir saya akan mencobanya.

Cobalah online! - Tautan oktaf


Apakah yang teratas perlu i=i+1?
Zacharý

1
@ ZacharyT sayangnya, +=tidak berfungsi di R, jadi ya, memang harus seperti itu.
Giuseppe

Apakah ini endperlu?
BLT

1
@ BLT, ya, itu menandai akhir dari while loop untuk oktaf.
Giuseppe

Ok terima kasih. Saya berpikir bahwa karena itu tidak akan pernah berakhir, while(1)Anda dapat menyimpan byte tersebut.
BLT

3

Ruby / Python2: 68 64 byte

i=0
"#{loop{p i+=1,i}}"
exec('while 1:print str(i)[::-1];i+=1')

Perspektif Ruby

init variabel sederhana:

i = 0

"#{}"adalah sintaks untuk interpolasi string. Saya menggunakannya untuk mengeksekusi ekspresi sebagai gantinya.

"#{loop{p i+=1,i}}"

padalah singkatan untuk puts. loopmenciptakan loop tak terbatas.

Berikutnya ada exechal, tetapi tidak pernah dievaluasi, karena infinite loop adalah definisi infinite. Diperlukan execuntuk tidak menghasilkan kesalahan sintaksis dengan kode Python.

Perspektif python

Dari perspektif Python, ada kesamaan i=0. Selanjutnya, Python memiliki sintaks yang berbeda untuk interpolasi string, jadi baris ini dibuang begitu saja. Berikutnya ada infinite loop yang mirip dengan yang diposkan orang lain.


3

Bash / Periksa , 50 28 byte

Terima kasih kepada @Doorknob karena telah menyimpan banyak byte dengan beralih dari Python ke Bash

#>
#v
 #p<p<)#
seq 1 inf|rev

Untuk Bash:

#>
#v
 #p<p<)#

Ini hanya beberapa komentar, yang diabaikan.

seq 1 inf|rev

Mulai urutan pergi dari 1 hingga tak terbatas, lalu pipa hasilnya rev.

Untuk Memeriksa:

#>

Ini segera beralih ke mode 2D, ke kanan. >mengarahkan hak IP, yang tidak berpengaruh. Ini membungkus ke awal baris dan hits #lagi, yang beralih dari mode 2D. Kemudian hits >dalam mode 1D, yang mendorong 0 ke stack. Karena berada dalam mode 1D, IP membungkus ke baris berikutnya.

#v

#mengalihkan IP ke mode 2D lagi dan vmengarahkannya ke bawah.

 #p<p<)#

Yang pertama #beralih kembali ke mode 1D lagi. pmengeluarkan TOS sebagai angka (tetapi tidak menghapusnya), dan kemudian <mencetak baris baru. Ini dilakukan dua kali, dan kemudian angkanya bertambah ). #beralih ke mode 2D lagi, sehingga IP menutup ke awal baris, menyentuh #untuk beralih ke mode 1D, dll.


1
Bash menggunakan #untuk komentar dan dapat melakukan "terbalik nomor" tugas yang sangat mudah: seq 1 inf|rev.
Gagang Pintu

Kode Ruby i=1;loop{puts i.to_s.reverse;i+=1}lebih pendek satu byte
dkudriavtsev

3

CJam /> <>, 27 23 byte

"la,:naonao
"1{_sW%n)}h

Untuk CJam:

Cobalah online! - perhatikan bahwa Anda harus menunggu hingga batas 60 detik untuk melihat hasilnya, tetapi berfungsi offline.

"la,:naonao
"

Ini mendefinisikan string multi-line literal yang tidak pernah digunakan.

 1{_sW%n)}h

Baris kedua berbunyi seperti ini:

1     e# Push 1:               | 1 
{     e# Forever:              | 1
  _   e#   Duplicate:          | 1 1
  s   e#   Convert to string:  | 1 "1"
  W%  e#   Reverse:            | 1 "1"
  n   e#   Print with newline: | 1
  )   e#   Increment:          | 2
}h    e# End loop

Ke> <>:

"

Mulai string literal.

 la,:naonao

Konten string literal. Setiap kode karakter didorong secara individual ke tumpukan.

"

IP membungkus untuk mencapai "lagi, yang mengakhiri mode string.

 la,

lmengambil panjang tumpukan, amendorong 10, dan ,membagi. Ini memberi kita panjang tumpukan / 10.

    :nao

:duplikat, ncetak sebagai angka, atekan 10, dan ocetak sebagai kode karakter (baris baru).

        nao

Hal yang sama. Cetak nomor yang diikuti oleh baris baru. Stack sekarang memiliki panjang 10 lagi (konten literal string asli ada di stack).

IP kemudian membungkus ke sekitar "lagi, mengarah ke 10 elemen lagi untuk didorong. Lain kali, lmengembalikan 20, jadi 2 dicetak, dll.

Baris kedua tidak pernah disentuh oleh IP.


2

Röda / C (gcc) , 90 byte

main(){f(0);}f(a){a=1//1{[` $a`[::-1]];a++}while[]/*
;for(;;a++)printf("%d %d ",a,a);/**/}

Röda: Cobalah online!

C: Coba online!

Penjelasan

Ini menyalahgunakan fakta yang //merupakan divisi int di Röda tetapi komentar garis dalam C.

Dalam kedua bahasa, main(){}menunjukkan program utama, dan keduanya memanggil fungsi fdengan argumen dummy 0.

Dalam Röda, a=1//1tidak divisi int dan memberikan hasil 1untuk a. C melihat a=1dan melakukan hal yang sama, tetapi semuanya setelah penugasan itu adalah komentar untuk C. Dari sana, kedua bahasa bercabang.

Raeda

Kami memiliki loop tanpa batas dengan while[]( kondisi kosong adalah benar ). Di dalamnya, ` $a`mengkonversi bilangan bulat amenjadi string (dengan spasi di depan) dan kemudian [::-1]membalikkannya (dan output dengan spasi di belakang). Kemudian nilai abertambah satu.

Di luar loop sementara, komentar multiline dimulai /*dan berakhir tepat sebelum akhir fungsi.

C

Setelah mengabaikan sisa baris, program menuju baris kedua. Kami mulai dengan titik koma karena a=1pernyataan itu perlu diakhiri. Setelah itu, kami menemukan loop sederhana untuk mencetak variabel iterasi a,, dua kali pada setiap iterasi.

Di luar for for, /*hanya ada untuk mengabaikan */komentar akhir Röda .


2

QBIC / QBasic 4.5 , 58 byte

do
p=p+1
if q then
'?`_f!p$|
else
?p,p,
end if
loop

Ini sangat menyalahgunakan fakta bahwa semua huruf kecil dipandang sebagai kode QBasic literal oleh penerjemah QBIC dan karenanya hanya diteruskan ke lapisan QBasic QBIC. Bagaimana kedua bahasa melihat kode ini, berdampingan:

LOC         QBasic                    QBIC
-------------------------------------------------------
do                   Start an infinite loop
p=p+1                Increment p, starts off as 0
if q then    q = 0, goto ELSE         q = 1, execute IF
'?`_f!p$|    ' = comment, invalid     '?` is a 'code literal', passing PRINT to QBASIC
             syntax is ignored        followed by QBIC code to flip p cast as string.
else         q=0, execute             q=1, so ignored
?p,p,        PRINT p twice,
             separated by tab
end if               End of the branching logic
loop                 Wrap around for the next pass

2

laserLANG / > <> , 163 byte

!\0 \
/:+1/!   ]oo\
\:a( ?\:a%$a ,!
/r[-1l//" ,"/
/!n-%1:\?(1l
 \ --\/ <<---\
/----/'
\----  v
/>>--\#>---->/
\     /
/----<
\  \
/ -<< \
 /<< \
 "
">=>= /
\>=>=/

Pertama kali bermain golf, jadi ini sedikit lebih besar dari yang mungkin bisa terjadi. Saya ingin menggunakan> <>, tetapi karena beberapa orang sudah menggunakannya untuk membuat urutan kedua, saya memutuskan ingin memberikan pembuatan urutan pertama.

Coba> <> online!
Untuk laserLANG, juru bahasa offline diperlukan untuk mencobanya. Itu dapat ditemukan di sini .

laserLANG

!\
 \ --\/ <<---\
/----/'
\----  v
/>>--\#>---->/
\     /
/----<
\  \
/ -<< \
 /<< \
 "
">=>= /
\>=>=/

eksekusi dimulai di !mana diabaikan sepenuhnya. kemudian mencapai \dan mulai berjalan melewati beberapa karakter yang benar-benar diabaikan. Akhirnya mencapai yang lain \dan kesenangan dimulai. Saya pada dasarnya mengambil ide di balik "Halo, Dunia!" lingkaran dan kental sebaik mungkin. Itu sedikit tantangan berurusan dengan fakta bahwa laserLANG hanya akan mengurangi / menambah penghitung memori ketika penghitung program akan kiri / kanan masing-masing. Saya merasa sebagian besar byte dapat disimpan di sini dengan melakukan beberapa trik yang belum saya pikirkan.

> <>

!\0 \
/:+1/!   ]oo\
\:a( ?\:a%$a ,!
/r[-1l//" ,"/
/!n-%1:\?(1l

Eksekusi dimulai !yang menyebabkannya melompati \. Kemudian berlanjut seolah-olah kode laserLANG tidak ada di sana. Saya tidak menyadari> <> hanya memiliki dukungan untuk divisi float, jadi pemotongan pendek dan sederhana agak membingungkan pada awalnya.


2

Befunge-98 / > <> , 32 byte

\r.#%a/# :_::p#+a#1,#
>l::naonao

Tulis ini sebelum saya melihat berapa banyak ><>jawaban di sana. Beberapa latar belakang: \adalah operator pengubah arah dalam> <>, dalam hal ini mendorongnya ke bawah, sementara di Befunge ia menukar dua item teratas di tumpukan. Kode Befunge terlihat seperti:

\r.#%a/# :_::p#+a#1,#

Cobalah online!

Mencetak angka mundur yang dipisahkan oleh baris baru. Befunge mencetak spasi secara otomatis setelah setiap angka, sehingga setiap digit dipisahkan oleh spasi. Berulang-ulang mendapatkan digit terakhir, mencetaknya dan membaginya dengan 10 sampai angka 0. Kemudian naikkan dan ulangi.

Kode> <> langsung turun ke baris kedua.

>l::naonao

Cobalah online!

Dan itu sangat sederhana. Dapatkan panjang tumpukan, cetak dua kali dengan baris baru dan tinggalkan salinan panjangnya pada tumpukan untuk loop berikutnya.


1

Ruby / Stacked , 37 byte

0#/0[1+:tostr rev out]
loop{p p$.+=1}

Cobalah online!

Ini mencetak 1 1 2 2... di Ruby dan 1 2 3 ... 01 11 21...di Stacked.

Penjelasan

Di Ruby:

0#/0[1+:tostr rev out]
loop{p p$.+=1}

Setelah menghapus komentar, ini menjadi:

0
loop{p p$.+=1}

Satu-satunya baris yang relevan di sini adalah yang terakhir. pmengembalikan argumennya, jadi p pcetak argumennya dua kali. $.mulai dari 0, jadi $.+=1kenaikan $., mengembalikan nilai tambah. Oleh karena itu, ini mencetak setiap angka dari 1dua kali.

Di Stacked:

0#/0[1+:tostr rev out]
loop{p p$.+=1}

Ini sama dengan token berikut:

0 #/ 0 [ 1 + : tostr rev out ] loop { p p $ . + = 1 }

Dua yang pertama tidak relevan (pada dasarnya, mentransformasikannya 0menjadi pengurangan F). Kemudian, 0didorong ke tumpukan. Setelah itu, fungsi [1+:tostr rev out]didorong ke tumpukan. loopmuncul fungsi ini dan jalankan tanpa batas.

Bagian dalam fungsi menambah bagian atas tumpukan ( 1+), menduplikatnya ( :), mengubahnya menjadi string ( tostr), membalikkannya ( rev) dan mengeluarkannya ( out). Proses ini diulang tanpa batas. Karena loop tidak terbatas, segala sesuatu yang muncul setelah token itu pada dasarnya diabaikan oleh penerjemah.


1

> <> / Jelly , 37 byte (25 dalam codepage Jelly)

01+:nao:nao!
DU;⁷Ṙ€
®‘©Çß

Coba> <> online!

Coba Jelly online!

> <> mencetak urutan hingga tak terbatas dua kali, Jelly menghitung mundur.

> <> hanya peduli dengan baris teratas:

Dan terima kasih kepada @ Challenger5 untuk menghemat beberapa byte di sini di linefeed

01+:nao:nao!                           Stack at: 1st run   2nd run ...
0                 Push a 0             0         -
 1                Push a 1             0,1       1,1   
  +               Pop 2, add them      1         2 
   :              Duplicate top item   1, 1      2, 2
    n             Pop top, show as num 1         2
     a            Push the number 10   1, 10     2, 10
      o           Pop and show 10 as an ACII char (ie '\lf')
                                       1         2
         :nao     And again, for repetition
             !    ><> wraps around; this skips pushing a 0 again.

Jelly mengeksekusi kode-nya dari bawah ke atas. Hanya 2 baris terakhir yang relevan.

®‘©Çß       main link, keeps track of the current number

®           Get a number from the register (0 on first run)
 ‘          Increment that by 1
  ©         Store in register
   Ç        Call helper (printer) link
    ß       Call this link again

DU;⁷Ṙ€      Printer

            (Say we are at number 21)
D           Break into digits         [2, 1]
 U          Reverse array             [1, 2]
  ;⁷        Append a line break       [1, 2, \n]
    Ṙ€      Print each char in array

@LuisMendo Karakter yang digunakan dalam ><>kode ini memiliki poin kode ASCII yang sesuai dengan Codepage Jelly. Saya tidak tahu terlalu banyak tentang bisnis codepage ini, tapi saya pikir ini akan menghasilkan byte yang sama dengan yang digunakan untuk mewakili kode. Karakter pada baris bawah diabaikan oleh ><>jadi tidak masalah jika mereka persis sama antara codepages. Hitungan byte diambil dari ><>tautan TIO.
steenbergh

Bukankah ini dicetak tanpa pemisah di> <>?
Buah Esolanging

@ Challenger5 Anda benar; tetap.
steenbergh

Ikan tidak memiliki tipe karakter; ","hanya mendorong nilai ASCII ,ke stack, jadi Anda dapat menggunakannya asebagai pemisah baris baru.
Buah Esolanging

Sepertinya koma masih ada di baris pertama penjelasan> <>.
Buah Esolanging

1

C (gcc) / PHP , 102 86 80 byte

#//\
for(;;)echo strrev(++$i).'
int main(i){for(;;i++)printf("%d %d ",i,i);}//';

Menghasilkan urutan ganda dalam C dan urutan terbalik dalam PHP.

Coba di C!

Coba di PHP!

Penjelasan

C

Dalam C, #bentuk hal-hal preprosesor. Saya tidak benar-benar tahu banyak tentang C tetapi tidak mengeluh ketika ada garis kosong untuk hal ini. The //bentuk komentar line. A \pada akhir baris pada dasarnya "melarikan diri" baris baru dan membuat dua baris diperlakukan sebagai satu. Ini juga berfungsi untuk komentar baris, sehingga baris kedua dilihat sebagai komentar dalam C. Baris ketiga melakukan pekerjaan mengeluarkan angka-angka dengan sederhana untuk loop. Setelah itu, hanya ada komentar.

PHP

Di PHP, #bentuk komentar garis, sehingga baris pertama diabaikan seluruhnya. Baris kedua mencetak angka-angka yang dibalik dengan for for, dan memisahkannya dengan \nint main(i){for(;;i++)printf("%d %d ",i,i);}//(kode C yang dibungkus dengan string).

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.