Vim adalah editor teks yang bagus untuk sistem unix, tetapi terkenal sulit untuk keluar.
Tulis program lengkap yang akan ditampilkan :q
untuk keluar dari Vim. Kemudian harus membaca satu baris input, karena kemudian akan diberikan bash prompt, dalam hal ini keluar berhasil, atau kesalahan, dalam hal ini ada perubahan yang belum disimpan.
Bash prompt akan menjadi ini:
E37@vimmachine: /var/override)
Sementara kesalahannya adalah ini:
E37: No write since last change (add ! to override)
Setelah diberi bash prompt, pekerjaan program selesai, dan seharusnya tidak memberikan output lagi (kecuali untuk spasi putih).
Setelah diberi kesalahan, program Anda harus secara acak (yaitu setiap kemungkinan memiliki probabilitas yang tidak nol untuk dipilih) :q!
, untuk keluar tanpa menyimpan, atau :x
, untuk menyimpan dan keluar.
Ini adalah kode-golf sehingga byte paling sedikit di setiap bahasa menang!
:x
apa-apa! Saya selalu menggunakan:wq
:)E37: No write since last change
? Artinya, bagaimana suatu algoritma dapat membedakan prompt dari pesan kesalahan?E37@vimmachine: /var/override)
:x
untuk keluar dari vim. Suatu hari Anda secara tidak sengaja akan menekan:X
tombol acak ketika Anda bingung. Setelah Anda akhirnya,:wq
Anda tidak akan pernah melihat file Anda lagi.Jawaban:
Python 2 , 66 byte
Disimpan 3 byte berkat @ Mr.Xcoder dan 4 terima kasih ke @Mayube!
Cobalah online!
sumber
print
bukanprint()
. Dan Anda dapat mengambil input dengan tanda kutipprint':q'
semuanya dan mengubahinput()
keinput(':q')
Ruby , 35 byte
Cobalah online!
sumber
p
dan:q
;)05AB1E , 19 byte
Cobalah online!
sumber
Python 2 ,
76757269 byteJawaban ini sudah di luar golf .
-1 byte terima kasih kepada Rod. -3 byte terima kasih kepada Mayube. -3 byte terima kasih kepada Artyer.
Cobalah online!
sumber
it should not give any more output
@Mayube May we output a newline upon terminating?
@Adám sure, that's fine
random()>.5
untuk menyimpan byterandom()>0
, karena ada peluang sangat kecil yangrandom()
akan kembali0
.[0, 1)
artinya, bukan? Ini berarti bahwa nol dimasukkan karena kisaran termasuk nol. stackoverflow.com/a/4396303/2415524 ... Cara mudah untuk mengingatnya adalah bahwa pada garis bilangan, titik-titik tertutup disertakan, dan titik-titik terbuka tidak. Kurung terlihat tertutup, dan parens terlihat terbuka.Vimscript,
4541 byteMemotong 4 byte dengan menggunakan
getpid()
untuk mendapatkan nomor. (Adakah yang bisa memikirkan cara yang lebih pendek untuk mendapatkan nomor yang tidak akan sama di mana-mana, sepanjang waktu?)Dengan asumsi +3 byte untuk menjalankan Vim dengan
-c
menjalankan skrip di atas dan-
membaca input dari stdin:sumber
JavaScript,
5246 byteDisimpan 6 byte berkat @ETHProductions
sumber
!
setelah setelah:q
jika input adalah kesalahan?prompt(':q')[30]&&...
. Juga,new Date%2?':x':':q!'
C # (.NET Core) ,
140 139138 byteCobalah online!
sumber
System
namespace membuat Anda dapat mempersingkatSystem.Random
untukRandom
, menyimpan 1 byteq!
tidak:q!
.Next(2)>0
ke.Next()>9
, ia meninggalkan sedikit buruk rasa di mulut tetapi masih legal.using static System.Console
memungkinkan Anda menjatuhkan semuaC.
panggilan, dan menghemat satu byte> <> ,
323029 byte!o
.Cobalah online!
Penjelasan (lama)
(akan segera diperbarui)
sumber
[
:iii0[
wil meninggalkan Anda dengan tumpukan kosong; tetap bagus, saya suka bagaimana Anda mengisi semua kemungkinan output Anda di awal untuk menghindari penawaran tambahanSebenarnya , 27 byte
Cobalah online! (Catatan: Karena TIO tidak bermain bagus dengan stdin, saya telah mengganti
,
(baca dari stdin) dengan string literal, yang dapat Anda ubah untuk mengujinya. Selain itu, Anda harus menonaktifkan cache output untuk mendapatkan respon yang berbeda dengan output acak.)Penjelasan:
sumber
APL (Dyalog) , 27 byte
Cobalah online!
':q'
cetak ini⋄
kemudian?2
bilangan bulat acak di antara dua yang pertama⊃⍨
gunakan itu untuk memilih dari':q!' ':x'
daftar dua string ini(
...)/
meniru itu dengan, yaitu membuat n salinan dari setiap elemen di dalamnya, di mana n adalah'!'∊⍞
Apakah tanda seru anggota input teks? (Boolean, yaitu 0 atau 1)sumber
Batch, 98 byte
sumber
Ruby , 33 byte (32 kode, +1 untuk -n bendera)
Saya tidak terlalu yakin pada
$$%2
cuplikannya. Saya menggunakannya untuk menghasilkan bit acak untuk mengindeks array saya dengan mengambil modul pid 2 proses ruby saat ini, dan itu akan cukup tak terduga..sample
menambahkan byte tambahan.Cobalah online!
sumber
JavaScript,
767150 byteMenyelamatkan banyak byte berkat Artyer dan Neil, dan juga kondensasi terner saya dan memindahkan peringatan pertama ke prompt (duh).
sumber
prompt()
langsung saja menelepon ? (Juga, apakah Anda diizinkanprompt(":q")
?)new Date%2
bukanMath.random()>.5
), dan Anda dapat menggunakan prompt langsung sepertiprompt()[3]<
.indexOf
itu, sebelum saya perhatikan cara lain untuk melakukannya. Lupa beralih kembali, terima kasih!Python 2 , 64 byte
Cobalah online!
Karena ini hanya sebuah aglomerasi kedua dari ini jawaban Python, yang sudah ditandai ini sebagai komunitas wiki.
sumber
Python 2 , 47 byte
Cobalah online
Penjelasan:
Sumber keacakan adalah
id(0)%3<2
. Fungsiid
mengembalikan lokasi memori parameter. Melewati apa pun akan memberikan alamat memori yang non-deterministik. Hasilnya akan selalu genap, tetapi kadang-kadang hanya akan habis dibagi 3. Hasilnya modulo 3 bervariasi. Jadi, ini bisa menjadi sumber keacakan. Menggunakan<2
berarti kira-kira 2/3 dari waktu, boolean yang dihasilkan adalahTrue
.Jawaban sisanya terinspirasi oleh yang satu ini .
sumber
Tong ,
1412 byteIni mendorong angka acak dan menghasilkan sesuai dengan angka acak.
sumber
TCL, 95 byte
Solusi sederhana dan agak panjang di ...
sumber
Majelis 86Bytes Panggilan Sistem Linux
sumber
LOGO,
3736 byteCobalah online di pemeriksa Anarchy Golf Performance .
Penjelasan:
(karena
E37@vimmachine: /var/override)
memiliki 2 kata, sedangkanE37: No write since last change (add ! to override)
memiliki 10 kata)sumber
Perl 5 (dengan flag -E), 35 byte
Jalankan ini dengan
perl -E 'say":q";<>=~l&&say qw(:q! :x)[$$%2]'
.Cobalah online!
Tidak Disatukan:
sumber