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

Martin Ender
sumber
2
Terkait. Terkait.
Martin Ender
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
MD XF
sumber
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.

pajonk
sumber
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.
Martin Ender
sumber
6
Itu terlalu pintar. Miliki +1, di rumah!
caird coinheringaahing
54

Bash (hanya builtins), 8 byte

{e,,}cho

Cetakan cho chodan baris baru.

Anders Kaseorg
sumber
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).

Martin Ender
sumber
27
+1 Untuk kode yang memberitahu saya untuk tidak menjalankannya: P
Christopher
33

Mathematica, 2 byte

4!

faktorial

24

J42161217
sumber
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.

Gagang pintu
sumber
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.

Trauma Digital
sumber
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());

Weedoze
sumber
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 .

Conor O'Brien
sumber
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!

Dennis
sumber
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!

Luis Mendo
sumber
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
Zack C.
sumber
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.
24 byte
Jo King
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
Anders Kaseorg
sumber
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  [email protected]...@.....
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  [email protected].......
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.

Dennis
sumber
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.

Zack C.
sumber
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.

OldBunny2800
sumber
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
13

Fourier, 26 22 20 byte

5^(`na`&i)` Batman!`

Cobalah di FourIDE!

Output:

nananananana Batman!

Untuk kapitalisasi yang tepat, ini 4 byte tambahan:

`N`7^(`an`i^~i)`a Batman!`

Cobalah di FourIDE!

Nanananananananana Batman!

RIP Adam West

Peluruhan Beta
sumber
1
Anda tidak harus memasukkan NC (hanya jika Anda membuat string printing untuk tantangan ini (dan itu akan konyol)
Christopher
@Christopher Huh, saya tidak tahu itu
Beta Decay
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.

Fatalisasi
sumber
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
Olivier Grégoire
sumber
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.

Okx
sumber
"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.

DJMcMayhem
sumber
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
Neil
sumber
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.
Martin Ender
sumber
8

/// , 12 byte

/a/bcd/aaaa/

Cobalah online!

Ini mencetak bcdbcdbcdbcd, dan karena ini adalah 12 byte, saya telah menambahkan yang tidak berbahaya / ke akhir kode untuk membuatnya pad.

steenbergh
sumber
8

R, 7 byte

mode(T)

Mencetak "logis"

Ivanneke
sumber
Selamat datang di PPCG!
Martin Ender
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.

Luis Mendo
sumber
7

Arang , 2 byte

→¹

Cobalah online!

Mencetak panjang-1 garis horizontal -ke kanan, dan baris baru.

Khusus ASCII
sumber
Man arang adalah bahasa yang sangat bagus, saya harus mempelajarinya beberapa waktu
Skidsdev
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.

Jonathan Allan
sumber
1
Tautan mati untuk byte
Weedoze