Siapa saja dapat membuat output program lebih besar dengan menambahkan karakter, jadi mari kita lakukan sebaliknya.
Tulis program lengkap, fungsi batin atau cuplikan untuk lingkungan REPL dalam bahasa pilihan Anda yang memenuhi kriteria berikut:
Panjang kode Anda harus minimal 1 karakter.
Menjalankan kode asli menghasilkan x karakter output ke STDOUT (atau alternatif terdekat), di mana 0 ≤ x <+ ∞ .
Menghapus karakter tunggal sembarang dari kode asli menghasilkan lagi dalam kode yang valid, yang menghasilkan setidaknya x + 1 karakter output ke STDOUT.
Baik kode asli maupun modifikasi tidak dapat menghasilkan output kesalahan, baik untuk STDOUT, STDERR, syslog atau di tempat lain. Satu-satunya pengecualian untuk aturan ini adalah peringatan kompiler.
Program Anda mungkin tidak memerlukan flag atau pengaturan apa pun untuk menekan output kesalahan.
Program Anda mungkin tidak mengandung kesalahan fatal, bahkan jika mereka tidak menghasilkan output apa pun.
Baik kode asli dan modifikasi harus deterministik dan selesai pada akhirnya (tidak ada loop tak terbatas).
Baik kode asli maupun modifikasi mungkin tidak memerlukan input apa pun.
Fungsi atau cuplikan tidak dapat mempertahankan status apa pun di antara eksekusi.
Menimbang bahwa tugas ini sepele adalah beberapa bahasa dan benar-benar mustahil dalam bahasa lain, ini adalah kontes popularitas .
Saat memberikan suara, harap perhatikan "relatif singkat" kode, yaitu, jawaban yang lebih pendek harus dianggap lebih kreatif daripada jawaban yang lebih panjang dalam bahasa yang sama .
111111111111111111^111111111111111111
(jika Anda maksud rasio terendah).k
instruksi konstan , output masing-masing program secara ketat lebih besar daripada output yang asli sejak saat itu (karena yang lain program akan mengulang lebih cepat atau menghasilkan lebih banyak setiap loop). Itu terlihat sangat menarik. Mungkin saya akan melihat apakah saya bisa menyelesaikannya, dan membuat tantangan lain.Jawaban:
REPL dengan operasi XOR caret, 5 byte
11^11
tentu saja 0. Satu-satunya kemungkinan lain adalah1^11
atau11^1
yang 10, atau1111
yang menghasilkan sendiri.sumber
99|99
-10
lebih panjang dari0
.TI-BASIC,
31Ketika baris terakhir suatu program adalah ekspresi, kalkulator akan menampilkan ekspresi itu. Jika tidak, kalkulator akan ditampilkan
Done
saat program selesai. Ekspresi di sini adalah string kosong, tetapi bisa juga berfungsi dengan angka satu digit.2 byte:
Sama seperti di atas tetapi dengan token 2-byte.
3 byte:
Mencetak
1
karena multiplikasi tersirat. Dapat diperpanjang tanpa batas dengan menambahkan pasangan⁻¹
's. Di bawah ini juga berfungsi.Solusi yang lebih panjang:
Mungkin ada juga solusi multi-line tetapi saya tidak dapat menemukannya.
sumber
Done
token; kalkulator ditampilkanDone
ketika selesai menjalankan program apa pun tanpa ekspresi di baris terakhir (termasuk program kosong).CJam, JavaScript, Python, dll, 18 byte
Output dalam CJam adalah:
JavaScript dan Python bekerja dengan cara yang serupa. Ini tidak kompetitif dalam JavaScript dan Python,
tetapi tidak mudah untuk menemukan yang lebih pendek di CJam.sumber
Oktaf, 5 byte
(x: y) memberikan array angka antara x dan y dengan kelipatan 1, jadi antara 10 dan 10 satu-satunya elemen adalah 10:
Ketika argumen kedua kurang dari yang pertama, oktaf mencetak matriks kosong dan dimensinya:
Ketika sebuah karakter dihapus dari angka pertama, ada lebih banyak elemen dalam array:
Ketika titik dua dihapus, nomor itu kembali sendiri:
sumber
Microscript, 1 byte
Ini tidak menghasilkan ouput, karena
h
menekan pencetakan implisit bahasa. Menghapus satu-satunya karakter menghasilkan program yang outputnya0\n
.Saya akan mencoba memberikan jawaban yang lebih baik nanti.EDIT PADA NOVEMBER 17:
Ini juga berfungsi di Microscript II, dengan pengecualian bahwa, bukannya menghasilkan
0\n
, program kosong menghasilkannull
.sumber
Pyth, 3 byte
G
diinisialisasi dengan huruf kecil dalam alfabet.c
adalah fungsi split.cGG
membagi alfabet dengan kemunculan alfabet, yang berakhir dengan['', '']
(8 byte).Saat parameter kedua hilang,
c
pisahkan string dengan spasi, tab, atau baris baru. Karena tidak ada yang munculG
, output untukcG
adalah['abcdefghijklmnopqrstuvwxyz']
(30 byte).Dan
GG
cukup mencetak dua kali alfabet pada dua baris yang terpisah:abcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyz
(53 byte).Cobalah online: Demonstrasi
sumber
Python REPL, 6 byte
Bukan yang terpendek, tapi inilah jawaban penyalahgunaan titik mengambang lainnya:
Tapi...
sumber
JavaScript (dan banyak lagi), 5byte
44/44
atausumber
CJam, 5
Cobalah online
sumber
Bahasa , 5 byte
Panjang program adalah 5 yang sesuai dengan program brainf ***
,
membaca akhir karakter input dan berakhir tanpa output.Menghapus karakter apa saja yang dihasilkan dalam kode
0000
yang memiliki panjang 4 sesuai dengan program brainf ***.
mencetak satu karakter (codepoint0
) dan mengakhiri.The Unary setara akan menjadi
0000000000000
(13 nol) karena Anda harus tambahkan terkemuka1
dengan panjang biner dari kode sehingga101
menjadi1101
.sumber
PHP, 6 byte
Saya telah menonton grup ini selama beberapa minggu dan kagum dengan teknik pemrograman Anda. Sekarang saya harus masuk, ada sesuatu yang bisa saya lakukan, maaf :-) Namun, ini mungkin posting terakhir saya di sini ...
(perhatikan spasi setelah detik
p
)Ini menghasilkan string kosong. Menghapus karakter apa pun akan menghasilkan teks tanpa karakter. Catatan itu dapat menghasilkan kesalahan HTML (konten tidak dirender oleh browser untuk misalnya.
<?ph
).Saya juga mencoba dengan
echo
tag. yaitu. misalnya.:Ini output
1
. Jika=
dihilangkan,<? __LINE__;;
apakah hasilnya. Namun, menghapus salah satu karakter konstanta ajaib akan menghasilkan E_NOTICE : Pemberitahuan: Penggunaan LNE konstan yang tidak ditentukan - diasumsikan ' LNE ' di ...Jika pemberitahuan tidak dianggap sebagai kesalahan (butir 4 aturan), ini juga berlaku :-)
sumber
<HTML>
tag dll.)php test.php
. Ngomong-ngomong, kode kedua tidak valid. Pertanyaannya tidak melarang kesalahan tetapi output kesalahan, kesalahan makna, peringatan, pemberitahuan, dll.#!
dalam file skrip juga berfungsi.Python,
108 byteBekerja dalam Python dan teman-teman. Terima kasih kepada Jakube untuk menunjukkan cara membuatnya 2 byte lebih kecil.
Dari IDLE:
awalnya saya punya ini (10 byte):
Dari IDLE:
dan pada catatan yang sama:
bekerja secara identik karena pembulatan bagus oleh Python, dalam 17 byte.
sumber
56...
,26...
dan sekali56...
lagi, tetapi hanya ada satu cara untuk mendapatkan 56, jadi harus dimasukkan hanya sekali, bukan?Penerjemah SWI-Prolog
Catatan: Anda tidak dapat menghapus final
.
. Penerjemah prolog akan selalu mencari periode terakhir untuk menjalankan kueri Anda, jadi jika kami berpegang teguh pada aturan kontes ini dan membiarkan diri kami untuk menghapus periode itu tidak akan berjalan, itu akan melompat garis dan menunggu perintah tambahan sampai satu diakhiri dengan titik.__A=__A.
Output kueri aslitrue.
._A=__A.
Output kueri_A = '$VAR'('__A')
. Modifikasi serupa (yaitu menghapus satu_
atau satu dari duaA
) akan menghasilkan output yang serupa.Akhirnya, hasil kueri
__A__A.
di SWI-Prolog:sumber
Sed, 1 byte
Karena
sed
memerlukan aliran input, saya akan mengusulkan konvensi bahwa program itu sendiri harus diberikan sebagai input.Program alternatif adalah
x
, tetapi itu hanya berubah dari byte1
ke2
output ketika dihapus.sumber
K, 3 byte
Output
0
dalam REPL. Menghapus 2 output pertama0 1
, menghapus hasil seru22
, dan menghapus 2 hasil terakhir dalam string yang bervariasi antara implementasi K tetapi selalu setidaknya 2 karakter (dalam oK, itu(2!)
; menurut @Dennis, output Kona2!
).sumber
*
cetakan adil 2. Menghapus 2 cetakan(*!)
(fungsi tidak lengkap) di oK; Saya tidak tahu tentang penerjemah lain (mis. Kona, k2, dll.), Meskipun saya percaya Kona akan mencetak*[!;]
atau yang serupa. Saya pergi dengan melepas bintang karena sepertinya yang paling aman.MATLAB,
97 byteIni 2 byte lebih lama daripada jawaban MATLAB / Oktaf lainnya, tapi saya tetap menyukainya, karena sedikit lebih rumit.
Operator Matlab
'
adalah transpose terkonjugasi kompleks. Menggunakan ini pada nomor imajiner skalar, Anda dapatkani' = -i
. Karena angka imajiner dapat ditulis hanya seperti yang2i
dapat dilakukan:Menghapus salah satu karakter akan menghasilkan salah satu di bawah ini:
sumber
GolfScript, 2 byte
Jawaban ini tidak bersaing, tetapi karena itu adalah bagian dari kode yang menginspirasi tantangan ini, saya tetap ingin membagikannya.
Secara default, semua program GolfScript mencetak seluruh tumpukan, diikuti oleh umpan baris, dengan mengeksekusi
puts
pada seluruh tumpukan. Fungsiputs
itu sendiri diimplementasikan seperti{print n print}
pada interpreter, di manaprint
merupakan built-in aktual dann
merupakan variabel yang menyimpan string"\n"
secara default.Sekarang, program GolfScript selalu mendorong input dari STDIN pada stack. Dalam hal ini, karena tidak ada input, string kosong didorong. Penugasan variabel
:n
menyimpan string kosong di dalamn
, menekan linefeed implisit dan membuat output benar-benar kosong.Dengan menghilangkan
n
, Anda ditinggalkan dengan penugasan variabel tidak lengkap:
(Anda akan berpikir itu adalah kesalahan sintaks, tetapi tidak), sehingga linefeed implisit dicetak seperti biasa.Dengan menghilangkan
:
, Anda yang tersisan
, yang mendorong umpan baris pada tumpukan, sehingga program mencetak dua umpan garis.sumber
APL, J dan mungkin varian lainnya, 3 byte
Ini output
1
dalam APL.-1
output¯1
, dan--
output berikut ini di TryAPL :sumber
J, 5 byte
Besarnya bilangan kompleks
5 + 12i
dalam REPL..
J, 9 byte
Berdasarkan presisi floating point, timbal balik dan matriks terbalik.
Cobalah online di sini.
sumber
Mathematica, 3 byte
sumber
Dyalog APL , 2 byte
⍴0
mengembalikan string kosong (panjang 0)⍴
pengembalian⍴
(panjang 1)0
pengembalian0
(panjang 1)sumber
Swift (dan banyak lagi), 8 byte
output (4 karakter):
Saat menghapus karakter ke-n, outputnya adalah:
Ada 78 solusi yang mungkin seperti ini dalam format
a^b<c
.Saya pikir tujuan dari tantangan ini adalah sebanyak mungkin byte, karena semakin banyak byte, semakin banyak kemungkinan byte untuk dihapus dan karenanya semakin sulit.
sumber
MathGolf , 2 byte
Cobalah online!
Penjelasan
Mengapa ini bekerja?
Output reguler adalah
9
. Jika(
dihapus, output adalah 10. Jika♂
dihapus, program secara implisit mengeluarkan 0 dari tumpukan untuk memberi makan(
operator, yang menghasilkan-1
.sumber
Clojure, 11 byte
Pada awalnya saya berpikir untuk mengirim satu jawaban karakter di REPL seperti bahasa lain, misalnya
Tetapi masalahnya adalah jika Anda menghapus karakter itu, REPL tidak melakukan apa-apa saat tombol ditekan enter. Jadi alih-alih harus dibungkus dengan fungsi sebagaimana diizinkan oleh aturan pertanyaan. Ketika Anda memanggil fungsi ini, ia mengembalikan 1. Jika Anda menghapus satu-satunya karakter dalam fungsi,
fungsi mengembalikan
nil
yang mencetak dua byte tambahan.sumber
1
dalam hal ini (1 byte).05AB1E (lawas), 1 byte
Setiap byte tunggal di 05AB1E (legacy) akan berfungsi, kecuali untuk
[
(infinite loop).Lihat di sini semua kemungkinan keluaran untuk semua program 05AB1E byte tunggal yang mungkin.
Menghapus byte tunggal sehingga program kosong tetap akan menampilkan konten info.txt ke STDOUT sebagai gantinya.
Cobalah online.
05AB1E , 1 byte
Cobalah online.
Sayangnya program kosong di versi baru 05AB1E hanya menghasilkan 1-byte baris baru secara default ( Coba online ), sehingga hampir tidak ada karakter 1-byte yang dimungkinkan karena mereka tidak akan menghasilkan apa-apa. Satu-satunya program yang mungkin tidak menghasilkan apa-apa (jadi bukan baris baru tersirat)
?
sejauh yang saya tahu.sumber
Japt , 2 byte
Cobalah online!
A
adalah pra-diinisialisasi ke 10,É
mengurangi 1, dan hasilnya adalah 1 byte:9
.Menghapus É menghasilkan program
A
, yang menghasilkan nilai A10
, sehingga hasilnya adalah 2 byte.Demikian pula, menghapus hasil A hanya
É
diartikan sebagai -1 dan output sebagai-1
, sehingga hasilnya adalah 2 byte.sumber
Pesona Runic , 6 byte (dapat dimodifikasi)
Cobalah online!
Runic tidak memiliki lingkungan REPL dan menulis program lengkap untuk memenuhi kendala tidak mudah (mengarah ke program yang tidak valid atau tidak ada output). Jadi bagian dari kode
11-{{B
bertindak sebagai fungsi bagian dalam dan hanya bagian ini yang dapat dimodifikasi. TheB
instruksi cukup dekat dengan pointer fungsi dan pernyataan kembali bahwa klasifikasi ini harus dapat diterima (karena melompat IP ke posisi dalam kode serta mendorong lokasi kembali ke stack yang dapat diakses oleh berikutnyaB
atau dibuang) .0
1
s:05
-
:11
{
:Error051
B
:120
Final
\
di akhir baris pertama memberikan batas eksternal di sekitar fungsi dalam jika instruksi pengembalian dihapus sehingga IP tidak pergi berkelok-kelok di mana-mana mau tak mau (dan cetak tidak ada output).Perhatikan bahwa
Error051
ini hanyalah string arbitrer, saya bisa memasukkan apa pun yang saya inginkan ke bagian kode itu dan "Kesalahan" adalah hasil yang lucu karena memiliki kode yang mencari koordinat pengembalian dan IP teleport ke lokasi arbitrer.sumber