Output dengan panjang yang sama dengan kode


97

Dalam tantangan ini, Anda harus menulis sebuah program atau fungsi yang tidak mengambil input dan mencetak atau mengembalikan string dengan jumlah byte yang sama dengan program itu sendiri. Ada beberapa aturan:

  • Anda hanya dapat menghasilkan byte dalam rentang ASCII yang dapat dicetak (0x20 hingga 0x7E, inklusif), atau baris baru (0x0A atau 0x0D).
  • Kode Anda tidak boleh berupa quine, jadi kode dan outputnya harus berbeda setidaknya satu byte.
  • Panjang kode Anda harus minimal satu byte.
  • Jika output Anda mengandung trailing baris baru, itu adalah bagian dari jumlah byte.
  • Jika kode Anda memerlukan tanda baris perintah non-standar, hitung seperti biasa (yaitu dengan menambahkan perbedaan pada permintaan standar implementasi bahasa Anda ke jumlah byte), dan panjang output harus sesuai dengan skor solusi Anda. Misalnya, jika program Anda adalah abdan membutuhkan tanda non-standar -n(kami akan menganggapnya tidak dapat digabungkan dengan tanda standar, jadi ini 3 byte), Anda harus menghasilkan total 5 byte.
  • Output tidak selalu harus sama, selama Anda dapat menunjukkan bahwa setiap output yang mungkin memenuhi persyaratan di atas.
  • Aturan quine biasa tidak berlaku. Anda dapat membaca kode sumber atau ukurannya, tetapi saya ragu ini akan lebih pendek daripada hardcoding di sebagian besar bahasa.

Anda dapat menulis program atau fungsi dan menggunakan salah satu metode standar untuk memberikan hasil. Perhatikan bahwa jika Anda mencetak hasilnya, Anda dapat memilih untuk mencetaknya ke output standar atau aliran kesalahan standar, tetapi hanya satu di antaranya yang diperhitungkan.

Anda dapat menggunakan bahasa pemrograman apa pun , tetapi perhatikan bahwa celah ini dilarang secara default.

Ini adalah , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.

Papan peringkat



18
"Kode Anda bukan quine" tapi ... tapi ... itu tag quine
Okx

4
@Okx Karena ini adalah quine umum, yaitu output yang diperlukan tergantung pada kode sumber.
Martin Ender

4
@ MartinEnder Anda mungkin harus melarang output dengan kode keluar, yang merupakan default. Jika Anda mengizinkannya, hampir setiap program satu byte di hampir setiap bahasa diperbolehkan. Seorang pengguna telah melakukan ini
Wisaya Gandum

2
@WheatWizard output dengan kode keluar bukan string, jadi tidak berlaku di sini.
Martin Ender

Jawaban:


204

C (Linux modern), 19 byte

main(){puts('s');}

Saat dikompilasi dan dijalankan, ini mencetak:

Segmentation fault

20
Ini luar biasa: D
Beta Decay

4
ini lebih mirip "C + bahasa Inggris unix / posix OS;)"
Florian Castellane

5
Saya pikir akan lebih baik untuk menulis "C, Linux modern" daripada hanya "C": Di bawah Windows pesan kesalahannya berbeda dan di masa lalu program-program Linux bahkan dikompilasi sedemikian rupa sehingga alamat 0x73 ('s') dapat dibaca jadi tidak terkecuali disebabkan.
Martin Rosenau

9
Saya bergabung dengan situs ini hanya untuk meningkatkan jawaban ini.
Nitish

7
Sehebat ini, sebenarnya bukan program C yang mencetak output, tetapi shell yang menjalankannya.
Dennis

80

Excel, 11 byte

Versi bahasa Norwegia:

=SMÅ(13^9)

Versi bahasa Inggris (12 byte):

=LOWER(17^9)

Menghasilkan nomor n-digit dan mengonversi ke teks dengan mengonversi ke huruf kecil.


106
Ini memberi arti baru untuk "memilih bahasa yang tepat untuk pekerjaan itu".
Martin Ender

4
Ini ide yang bagus. Akan lebih singkat untuk melakukan =9^7&""yang menghasilkan angka 7 digit dalam bahasa apa pun dan hanya 7 byte.
OpiesDad

@OpiesDad Solusi yang bagus, saya pikir Anda harus mempostingnya sebagai jawaban, jadi saya dapat memperbaiki.
pajonk

4
@ MartinEnder Ini menghibur saya bagaimana spekulasi / potensi lelucon Anda lebih terangkat daripada jawaban ini (meskipun sudah dekat).
HyperNeutrino

55

Labirin , 4 byte

!!>@

Cobalah online!

Cetakan 0000

Penjelasan

!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
>   Rotate the source code right by one cell, so the code now becomes

    @!!>

    The IP is moved along, so it's now at the end of the line, which is 
    a dead end. So the IP turns around and starts moving left.
!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
@   Terminate the program.

6
Itu terlalu pintar. Miliki +1, di rumah!
caird coinheringaahing


40

Retina , 2 byte

no

Cobalah online!

Cetakan 0dan umpan baris.

Ada banyak solusi 2-byte, tetapi saya percaya ini optimal. Retina secara default selalu mencetak baris baru dan menghilangkannya membutuhkan terlalu banyak byte. Jadi kita harus menemukan program 1-byte yang membiarkan input kosong tidak berubah. Saya percaya satu-satunya program yang melakukan ini adalah program yang berisi satu linefeedfeed, yang karena itu sama dengan output dan karenanya tidak diizinkan oleh tantangan.

Hal paling sederhana berikutnya yang harus dilakukan adalah hidup dengan Retina mengeluarkan satu digit (jumlah kecocokan beberapa regex terhadap input kosong), dan kita dapat melakukannya dengan banyak pola 2-byte yang gagal (atau cocok).


27
+1 Untuk kode yang memberitahu saya untuk tidak menjalankannya: P
Christopher

33

Mathematica, 2 byte

4!

faktorial

24


1
Gah! terlalu pintar
tuskiomi

2
kalahkan aku untuk itu! +1. ( Saya pikir Anda harus menyebutkan bahwa ini dalam versi REPL dari Mathematica.)
Greg Martin

Jika ini adalah jawaban yang masuk akal, bukankah jawaban "1" juga menjadi jawaban yang masuk akal? (Menempatkan '1' ke dalam REPL Mathematica akan mengembalikan '1' juga ...)
Mark Segal

3
@MarkSegal Itu akan melanggar aturan no-quine.
AlexR

6
Aturan: ... "... kode dan output harus berbeda setidaknya dalam satu byte"
J42161217

29

C, 20 byte

f(){printf("%20d");}

Output beberapa nomor, diisi dengan spasi hingga 20. (Nomor berapa? Apa pun yang terjadi selanjutnya dalam memori.)

Beberapa sampel berjalan di sistem saya:

llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           -666605944
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
          -1391039592
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1727404696
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
             10717352
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1485936232

Sayang sekali bahwa output tidak dapat byte acak, karena itu akan memungkinkan solusi 19 byte ini:

f(){write(1,f,19);}

yang menghasilkan 19 byte sampah, mulai fdari alamat.


Saya senang melihat jawaban yang menggunakan aturan beragam-keluaran. :)
Martin Ender

Tidak bisakah segfault ini?
Daniel

Di mana tautan TIO?
CalculatorFeline

@Aniel Tidak, nomor yang dicetak akan berasal dari isi %esiregister sebelumnya.
Gagang Pintu

8
@ Doorknob tapi itu masih perilaku yang tidak terdefinisi, oleh karena itu kompiler yang lebih sadis mungkin melakukan sesuatu yang sama sekali berbeda di sini
Sarge Borsch

29

Bash di Linux, 6

uname

(diikuti oleh baris baru)

Output Linuxdiikuti oleh baris baru.


2
Secara teknis unamebukan bash builtin - ini adalah executable terpisah
Jason Musgrove


@GammaFunction Di mana Anda melihat unamebash builtin? Setiap distro yang saya dapat meletakkan tangan saya pada saat ini adalah biner yang terpisah, termasuk TIO . Sebaliknya, seperti yang ditunjukkan oleh jawaban tertaut Anda, umaskadalah bawaan di sebagian besar / semua shell.
Digital Trauma

Saya tidak melihat unamesebagai builtin. Ketika saya mengatakan "-1, dan sebenarnya adalah builtin", saya bermaksud "Jawaban ini menggunakan umask-1 byte, dan umasksebenarnya adalah builtin".
GammaFunction

@GammaFunction Maaf - Saya salah mengerti arti dari "-1" di komentar Anda - Saya sudah terbiasa dengan arti downvote dan komentar yang menjelaskan alasannya.
Digital Trauma

27

Javascript ES6, 9 byte

Menggunakan String Template

_=>`${_}`

f=

_=>`${_}`

console.log(f());
console.log(typeof f());


Apakah undefineddianggap sebagai string?
Shaggy

3
@ Shaggy Lihat hasil edit. Saya menggunakan interpolasi String
Weedoze

Wow ini posting kedua saya di PPCG dan 14 upvotes! Terima kasih
Weedoze

1
Mengapa Anda dapat membuatnya sulit? (_=>_+'').
GOTO 0

1
@ GOTO0 Oh, baiklah, Anda tetap memegang tanda kurung. Ini adalah pilihan lain. Saya pribadi lebih suka milik saya hehe
Weedoze

24

Skema Piramida , 74 43 42 byte

Disimpan 31 byte berkat Khuldraeseth na'Barya! Disimpan 1 byte berkat solusi yang dirancang ulang JoKing!

  ^
 /^\
^---^
-^ ^-
 -^-
 /2\
/ 8 \
-----

Cobalah online! Menghasilkan angka 41 digit 28^28 = 33145523113253374862572728253364605812736, diikuti oleh baris baru.


Versi lama

  ^
 / \
/out\
-----^
    /^\
   ^---^
  /1\ /9\
 /606\---
/51015\
-------

Cobalah online!

Output 71277303925397560663333806233294794013421332605135474842607729452115234375= 160651015 ** 9, atau sekitar 10 74 .


6
Hei, apakah Anda mencoba menjual bahasa Anda? Jika demikian, Anda ditahan. - Polisi
NoOneIsHere

2
@Tidak Ada Maaf?
Conor O'Brien

3
Maaf, ini disebut Skema Piramida, yang juga merupakan nama jenis penipuan.
NoOneIsHere

1
ohhhhhhhhhhhh rofl
Conor O'Brien

1
Output implisit membuat Anda turun ke 43 byte .
Khuldraeseth na'Barya

23

Python 2 , 9 byte

print{+1}

Ini mencetak set([1])dan linefeed.

Cobalah online!


11
Dari program brute-forcing yang dimulai dengan print, tidak ada solusi yang lebih pendek, dan yang hanya 9-byte adalah varian dari ini dan Luis Mendo print 1e5 .
xnor

23

Python 2 , 9 byte

print 1e5

Output yang ditampilkan berisi baris tambahan.

Cobalah online!


Apakah mengikuti baris baru dianggap sebagai karakter sejauh output? Jika tidak, ini akan mencetak delapan byte.
OldBunny2800

@ OldBunny2800 Ya, tantangannya mengatakan Jika output Anda mengandung baris baru, itu adalah bagian dari jumlah byte . Bagaimanapun, saya akan mengklarifikasi hal itu dalam jawaban saya
Luis Mendo

18

brainfuck , 25 byte

--[-->+<]+++++[->-.....<]

Cobalah online! Catatan: Memerlukan implementasi dengan sel unsigned 8-bit

Keluaran:

~~~~~}}}}}|||||{{{{{zzzzz

Penjelasan

--[         254
 -->+<]      /2 = 127 into the second cell
+++++[      Five times
 ->-.....<]  Print the second cell - 1 five times

4
Ada banyak variasi BF seperti sel infite sel 8-bit. atau selotip terbatas dan tak terbatas. Saya cukup yakin bahwa Anda adalah model sel 8-bit yang tidak ditandatangani, tetapi saya pikir akan lebih baik jika Anda memasukkannya ke dalam jawaban Anda.
Roman Gräf

@ RomanGräf Poin bagus! Saya biasanya memasukkan informasi itu jika implementasi non-standar diperlukan. Jawaban ini harus bekerja pada implementasi standar apa pun (sel 8-bit yang tidak ditandatangani, rekaman apa pun), tetapi saya akan menambahkan catatan untuk menjelaskan.
Zack C.

Tidak bisakah Anda memiliki program 1 byte .yang mencetak NULLkarakter yang tidak patut dicetak ?
Graviton

@Graviton Itu akan melanggar aturan pertama dari tantangan ini. Namun, itu solusi yang valid dalam turunan BF yang secara default menjadi nilai yang dapat dicetak (lihat: jawaban brainbool saya ).
Zack C.


16

C (Ideone), 14 byte

f(){warn(0);}

Pada Ideone , yang menamai executable-nya prog, ini menghasilkan yang berikut dengan baris baru tambahan.

prog: Success

C (GCC), 15 byte

f(){warn(00);}

Karena GCC menulis sebuah executable yang dinamai a.outsecara default (dengan tidak adanya flag tambahan yang akan menelan biaya byte), ini menghasilkan yang berikut dengan baris baru tambahan.

a.out: Success

7
@ MDXF Spec mengatakan program atau fungsi, sehingga pengiriman fungsi sangat valid. Karena nama file tidak dipilih oleh pengguna di sini (baik Ideone dan gcc memiliki default), saya pikir ini baik-baik saja (pendapat pribadi).
Dennis

15

C (gcc) , 18 17 byte

f(){puts('@C');}

Perhatikan bahwa ada byte STX ( 0x02 ) antara @dan C.

Cobalah online!

Portabilitas

Ini telah diuji dengan gcc 6.3.1 dan clang 3.9.1 pada Fedora 25, gcc 4.8.4 pada Ubuntu 14.04.4, dan gcc 4.8.3 pada openSUSE 13.2, di mana ia mencetak output berikut.

inux-x86-64.so.2

Saya berharap ini menghasilkan output yang sama dengan semua versi gcc, asalkan dikompilasi ke executable dari tipe berikut.

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2

Platform yang berbeda akan membutuhkan alamat memori yang berbeda dan mungkin urutan yang berbeda untuk byte dalam konstanta karakter multi-karakter.

Misalnya, mengganti @\2Cdengan @\2\4cetakan exec/ld-elf.so.1dan baris baru pada FreeBSD 11 dengan dentang 3.8.0.

Verifikasi offline

$ printf "%b\n" "f(){puts('@\2C');}main(){f();}" > quine.c
$ gcc -w -o quine quine.c
$ ./quine
inux-x86-64.so.2
$ ./quine | wc -c
17

Bagaimana itu bekerja

Secara default, ld menggunakan 0x400000 sebagai alamat dasar segmen teks, artinya kita dapat menemukan konten ELF mulai dari alamat memori 0x400000 .

640 byte pertama dari ELF sebagian besar independen dari kode sumber yang sebenarnya. Sebagai contoh, jika deklarasi f diikuti oleh main(){f();}dan tidak ada yang lain, mereka terlihat sebagai berikut.

00000000: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010: 02 00 3e 00 01 00 00 00 00 04 40 00 00 00 00 00  ..>.......@.....
00000020: 40 00 00 00 00 00 00 00 e8 19 00 00 00 00 00 00  @...............
00000030: 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1b 00  ....@.8...@.....
00000040: 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00  ........@.......
00000050: 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00  @.@.....@.@.....
00000060: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000070: 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00  ................
00000080: 38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00  8.......8.@.....
00000090: 38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00  8.@.............
000000a0: 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
000000b0: 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00  ................
000000c0: 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00  ..@.......@.....
000000d0: 04 07 00 00 00 00 00 00 04 07 00 00 00 00 00 00  ................
000000e0: 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00  .. .............
000000f0: 08 0e 00 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..........`.....
00000100: 08 0e 60 00 00 00 00 00 1c 02 00 00 00 00 00 00  ..`.............
00000110: 20 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00   ......... .....
00000120: 02 00 00 00 06 00 00 00 20 0e 00 00 00 00 00 00  ........ .......
00000130: 20 0e 60 00 00 00 00 00 20 0e 60 00 00 00 00 00   .`..... .`.....
00000140: d0 01 00 00 00 00 00 00 d0 01 00 00 00 00 00 00  ................
00000150: 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00  ................
00000160: 54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00  T.......T.@.....
00000170: 54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00  T.@.....D.......
00000180: 44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00  D...............
00000190: 50 e5 74 64 04 00 00 00 b0 05 00 00 00 00 00 00  P.td............
000001a0: b0 05 40 00 00 00 00 00 b0 05 40 00 00 00 00 00  ..@.......@.....
000001b0: 3c 00 00 00 00 00 00 00 3c 00 00 00 00 00 00 00  <.......<.......
000001c0: 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00  ........Q.td....
000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00  ................
00000200: 52 e5 74 64 04 00 00 00 08 0e 00 00 00 00 00 00  R.td............
00000210: 08 0e 60 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..`.......`.....
00000220: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000230: 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c  ......../lib64/l
00000240: 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73  d-linux-x86-64.s
00000250: 6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00  o.2.............
00000260: 47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00  GNU.............
00000270: 20 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00   ...............

Menggunakan, misalnya, main(int c, char**v){f();}sebagai gantinya mengubah beberapa byte, tetapi bukan offset dari string /lib64/ld-linux-x86-64.so.2, yang akan kita gunakan untuk menghasilkan output.

Offset string tersebut adalah 0x238 dan panjangnya 27 byte. Kami hanya ingin mencetak 17 byte (dan yang terakhir akan menjadi baris baru jika kami gunakan puts), jadi kami menambahkan 11 ke offset untuk mendapatkan 0x243 , offset dari inux-x86-64.so.2. Menambahkan 0x400000 dan 0x243 memberi 0x400243 , lokasi memori inux-x86-64.so.2.

Untuk mendapatkan alamat memori ini, kita bisa menggunakan konstanta karakter multi-karakter, yang memperlihatkan perilaku yang ditentukan implementasi. 0x400243 adalah (64) (2) (67) dalam basis 256 dan konstanta karakter multi-karakter gcc menggunakan urutan byte big-endian, sehingga '@\2C'menghasilkan alamat memori dari string yang diinginkan.

Akhirnya, putsmencetak sengatan (null-dihentikan) di lokasi memori dan baris baru, menghasilkan 17 byte output.


Ini sihir ... apakah ini mengasumsikan urutan byte dari rakitan yang dikompilasi atau sesuatu?
Patrick Roberts

Output pada sistem saya (Linux dengan GCC 6.3.1): Usaat dikompilasi dengan -Df=main. Usaat dikompilasi dengan main(){f();}.
MD XF

@ PatrickRoberts Pada titik ini, saya tidak begitu yakin apa asumsinya. Karena muncul di dalam file ELF yang dirakit, itu sangat tergantung pada semua yang ditulis oleh kompiler sebelum kode aktual.
Dennis

@ MDXF Menemukan cara yang lebih pendek untuk mendapatkan alamat memori yang sesuai. Ini berfungsi di Ubuntu 14,04 VPS saya sekarang, tetapi ymmv.
Dennis

@ Dennis Bekerja dengan baik sekarang (dang it). Bounty adalah milik Anda jika pada akhir minggu tidak ada yang menemukan solusi yang lebih pendek.
MD XF

13

Brainfuck yang memodifikasi sendiri , 5 byte

<[.<]

Cobalah online!

Keluaran:

]<.[<

Penjelasan:

Sangat sederhana, mencetak sumber secara terbalik. Dalam SMBF, isi program disimpan pada kaset, di sebelah kiri posisi awal penunjuk. Meluncur ke kiri dan mencetak akan menampilkan kode sumber mundur.

Karena sumber bacaan diperbolehkan dalam tantangan ini, ini pasti harus sesuai aturan.


13

Kalkulator Aritmatika Dasar , 2 byte

1=

cetakan 1., atau:

    |
    |
    |  .

pada layar tujuh segmen konyol.

Untuk mereproduksi, ambil kalkulator acak apa pun; mereka semua sudah menginstal bahasa pemrograman ini.


1
Apakah ini berlaku untuk semua kalkulator? Saya yakin mereka terus-menerus menunjukkan titik desimal
Beta Decay

Bukankah 1.bukan 1x? Ini juga quine, yang dilarang oleh aturan.
Erik the Outgolfer

Tidak, ini 1=, saya kacau. Maksud saya 1xdaripada sama implisit, tapi saya lupa itu =adalah tombol.
OldBunny2800

Ini hanya menghasilkan 1TI-36 dan TI-84 CE saya. Apakah ini tidak dihitung sebagai kalkulator "dasar"?
Benjamin Urquhart

Tidak, TI 84 bukan kalkulator aritmatika, ini kalkulator grafik. Saya tidak tahu tentang 36, tapi saya cukup yakin ini adalah kalkulator ilmiah. Jawaban ini untuk kalkulator empat fungsi.
OldBunny2800


12

Brachylog , 1 byte

w

Cobalah online!

Penjelasan

wadalah built-in "tulis". Di sini, itu akan menulis Input. Karena Input adalah variabel bebas, wakan menandainya sebagai integer sebelum dicetak. Bilangan bulat pertama yang dicoba adalah 0.


Here, it will write the Input.Apakah 'Input' program itu sendiri? Bukankah ini dihitung sebagai membaca sumber, yang secara default curang dalam quine?
MD XF

4
@MDXF "Aturan quine biasa tidak berlaku"
Rob Watts

3
@MDXF Input adalah variabel Brachylog khusus yang dapat Anda atur saat memanggil program Brachylog. Ini masuk ke bagian Input dari TryItOnline. Di sini kita tidak mengatur apa pun pada Input, jadi itu adalah variabel. Ini bukan programnya.
Fatalkan

10

Java (OpenJDK 8) , 11 byte

o->1e8-1+""

Cobalah online!

Keluaran:

9.9999999E7

Sedikit lebih rumit daripada jawaban yang jelas ()->"".format("%23s",0),.

Menghemat

  • 18 -> 16 byte: Kombinasi pembulatan dan kekuatan 10 yang lebih menguntungkan, terima kasih kepada PunPun1000
  • 16 -> 13 byte: formula yang lebih baik, terima kasih kepada JollyJoker
  • 13 -> 11 byte: formula yang ditingkatkan, terima kasih kepada Kevin Cruijssen

2
()->1E10-1+"", "9.999999999E9" (13)menghemat tiga byte lagi
JollyJoker

1
Anda dapat menyimpan 1 byte dengan mengubah 1e10ke 1e9, atau 2 byte dengan menggunakan masukan kosong bukannya() seperti ini: o->1e8-1+""(output 9.9999999E7; panjang & byte-count 11 ).
Kevin Cruijssen

9

05AB1E , 1 byte

õ

Menghasilkan satu baris baru. õmendorong string kosong, dan secara implisit dikeluarkan dengan baris baru.

Cobalah online!

Beberapa solusi 2 byte lainnya, untuk kesenangan Anda menonton (output ada di dalam kurung, dan semua output memiliki baris tambahan):

X, (1)
Y, (2)
¾, (0)
¼, (1)
¶, (newline)
ð, (space)
Î, (0)

Ada cara lebih banyak solusi 2 byte.


"yang merupakan metode keluaran yang diterima" hanya untuk solusi fungsi, bukan untuk program lengkap.
Martin Ender

@ MartinEnder Akankah solusi itu diperhitungkan sebagai fungsi? Tidak begitu yakin, karena saya tidak sering menggunakan fungsi di sini.
Okx

Saya tidak cukup tahu tentang 05AB1E tetapi mereka hanya dianggap sebagai fungsi jika mereka benar-benar ekspresi yang mengevaluasi ke objek fungsi (yang saya ragu mereka lakukan karena menggunakannya segera menyebabkan perintah dieksekusi).
Martin Ender

9

V / vim, 1 byte

o

Ini mencetak satu baris baru.

Cobalah online!

Ada banyak varian pada ini yang akan berhasil juga. Sebagai contoh,

O

dalam vim, dan

Ä
ä
ï
Ï

dalam V.

Ada juga banyak banyak banyak solusi tiga byte. Sebagai contoh:

3ii
i³i
¬ac

Ini semua khusus untuk V.


3ii tidak berkembang hingga Anda menekan escape, jadi apakah itu harus tiga atau empat byte (atau penekanan tombol, lebih tepatnya)?
algmyr

@ algmyr Dalam vim, Anda benar. Itu harus menjadi 4ii<ESC>Namun V secara implisit mengisi dalam pelarian di akhir program.
DJMcMayhem

8

Batch, 12 byte

@echo %OS%

Hitungan byte termasuk mengikuti baris baru untuk skrip dan output, yaitu

Windows_NT

Tampaknya 11 byte bukan 12.
Erik the Outgolfer

@EriktheOutgolfer cmd.exetentu saja akan menggemakan CRLF setelah Windows_NT, dengan demikian 12 byte.
Neil

Maka Anda harus mengklarifikasi?
Erik the Outgolfer

8

Hexagony , 3 byte

o!@

Cobalah online!

Cetakan 111.

Dibuka:

 o !
@ . .
 . .

Tetapi kode ini benar-benar hanya dijalankan dalam urutan o!@.

o   Set the memory edge to 111, the code point of 'o'.
!   Print this value as a decimal integer.
@   Terminate the program.



7

MATL , 2 byte

H

Ada baris baru yang tertinggal.

Cobalah online!

Penjelasan

Clipboard H berisi angka 2secara default. Hmendorong konten itu ke tumpukan, yang secara implisit ditampilkan dengan baris baru tambahan.



7

Jelly , 1 byte

V

Cukup banyak Jelly one byters - ini adalah satu - ia mengevaluasi argumen kiri yang, ketika tidak ada yang disediakan sebagai input, default ke nol yang pada gilirannya mengevaluasi ke nol dan hasilnya dicetak secara implisit, a 0.

Cobalah online!

Bahkan, dari 256 byte dalam kode-halaman hanya ada 95 yang saat ini tidak menghasilkan output satu byte yang berbeda dalam rentang yang ditentukan ketika dijalankan sebagai program penuh; ini adalah (sebagai karakter halaman kode dalam urutan byte):

¡¢£¦©½¿€ÇÑÞßçıȷñ÷þ"#&',-./0123456789:;?@IMRTVZ\`dmpstxyz{}~°³⁴⁵⁹ƓƈɠḶỌṬḊĖİĿṄȮṖṘẆẊṃọṣṭḃḟḣŀṁṗṡẋż’“

Catatan:

  • Sebagian besar program 1-byte mencetak a 0(tanpa op / menghasilkan daftar dengan nol tunggal, yang mencetak a 0), sebagian besar yang lain mencetak a 1( 0=0dan sejenisnya)

  • adalah satu program yang tidak menghasilkan byte yang berbeda, tapi satu yang di luar jangkauan sesuai spesifikasi - itu menghasilkan nol-byte (gips 0dengan karakter)

  • menghasilkan spasi (literal)

  • menghasilkan umpan baris (literal)

  • Beberapa byte yang berfungsi sekarang mungkin tidak melakukannya di masa depan - ada beberapa byte yang adil dicadangkan (saya percaya) untuk nilai-nilai niladik yang, ketika ditugaskan, hampir pasti tidak akan menghasilkan output satu-byte.


1
Tautan mati untuk byte
Weedoze

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.