Apakah Anda memerlukan tempat gelas?

8

Anda akan meniru perangkat lunak lelucon cup holder 90-an.

Inilah yang dilakukannya, dan yang harus Anda lakukan:

  • Tampilkan pesan Do you need a cup holder?
  • Jika pengguna mengonfirmasi, masukkan loop tak terbatas yang terus membuka drive CDROM.
  • Jika pengguna tidak mengonfirmasi, keluar secara diam-diam.

Anda dapat menampilkan pesan menggunakan pesan konsol (konfirmasi ada y, tolak n), atau tampilkan jendela pesan dengan dua opsi "Ya" dan "Tidak". Anda dapat mengasumsikan drive CDROM default (atau paling umum) ( D:pada Windows, /cdromdi linux dll.). Celah standar (kecuali built-in) dilarang. Tidak ada input atau output tambahan yang mungkin terlibat. Jika PC Anda tidak memiliki drive fisik, atau "gaya" baki lain, pastikan program tersebut valid.

, sehingga program terpendek dalam byte menang.

Trivia: Pengulangan ada untuk mencegah siapa pun menutup drive. Pada drive desktop, perintah buka ulang akan dikirim saat drive ditutup, oleh karena itu tetap buka dan tidak "menumpahkan kopi".

mınxomaτ
sumber
2
Minus panggilan sistem pengeluaran
Digital Trauma
4
Saya pikir persyaratan untuk berinteraksi dengan perangkat keras membuat ini cukup berbeda dari Menerapkan Mesin Kebenaran.
Alex A.
FYI meta.codegolf.stackexchange.com/a/8214/8478 (khususnya "memiliki string keluaran tetap panjang yang mendapat manfaat dari kompresi.").
Martin Ender

Jawaban:

4

Bash, 115 69 68 66 byte

Ini ditulis pada Mac OS X tetapi harus bekerja pada sistem berbasis BSD lainnya juga.

echo Do you need a cup holder?;sed 1q|grep y&&yes drutil\ eject|sh

Kami echomeminta, mendapatkan input set 1q, dan menentukan apakah pengguna mengonfirmasi grep y. Jika kata pengguna y, kami menyalurkan output tak terbatas yesdengan string drutil ejectke shell, yang akan terus mengeluarkan baki disk.

Disimpan 50 byte berkat Digital Trauma!

Alex A.
sumber
1
@DigitalTrauma Anda adalah bash master!
Alex A.
Bisakah Anda menyimpan byte dengan mengganti seddan grepdengan read?
CousinCocaine
Bukankah seharusnya begitu drutil tray eject?
Addison Crump
@VoteToClose drutil ejectadalah sinonim untuk drutil tray open. Ini berfungsi seperti yang diharapkan. ;)
Alex A.
1
@CousinCocaine yang saya gunakan readdi revisi sebelumnya, tapi kemudian saya perlu pemeriksaan kesetaraan, yang membuatnya lebih lama secara keseluruhan. Anda dapat melihat pada riwayat revisi untuk melihat apa yang saya maksud.
Alex A.
4

Vitsy + Mac OSX bash, 55 byte

'?redloh puc a deen uoy oD'ZWb2^/([1m]
<,'drutil eject'

Diharapkan input sebagai y atau n. Jika n, ia akan mengeksekusi baris 2 (infinite loop dengan perintah shell), jika tidak, ia akan berhenti.

Addison Crump
sumber
2

Python (3.5) 84 byte

import os
i=input("Do you need a cup holder?")
while i=='y':os.system("eject cdrom")

Di linux

edit: perbaiki jumlah byte;)

Erwan
sumber
FYI: Saya perhatikan ini karena saya menggunakan skrip ini , yang (antara lain) menambahkan byte / char counter di atas blok kode pada PPCG.
3D1T0R
0

Otomatis , 85 byte

If MsgBox(4,0,"Do you need a cup holder?")=7 Then Exit
Do
CDTray("D:","open")
Until 0

Lagipula tidak ada yang akan menjawab apa pun di AutoIt :)

mınxomaτ
sumber
0

Python 3.5 pada Windows 7, 135 Bytes

import ctypes
r=input('Do you need a cup holder?')
while r=='y':ctypes.windll.WINMM.mciSendStringW('set cdaudio door open',None,0,None)
MrGeek
sumber