Bạn có cần một người giữ cốc?


8

Bạn sẽ sao chép phần mềm trò đùa của người giữ cốc 90.

Đây là những gì nó đã làm, và bạn phải làm:

  • Hiển thị tin nhắn Do you need a cup holder?
  • Nếu người dùng xác nhận, hãy nhập một vòng lặp vô hạn để tiếp tục mở ổ đĩa CDROM.
  • Nếu người dùng không xác nhận, hãy âm thầm thoát.

Bạn có thể hiển thị thông báo bằng cách sử dụng tin nhắn bảng điều khiển (xác nhận là y, từ chối n) hoặc hiển thị cửa sổ thông báo với hai tùy chọn "Có" và "Không". Bạn có thể giả sử ổ đĩa CDROM mặc định (hoặc phổ biến nhất) ( D:trên Windows, /cdromtrên linux, v.v.). Các lỗ hổng tiêu chuẩn (trừ tích hợp) đều bị cấm. Không có đầu vào bổ sung cũng như đầu ra có thể được tham gia. Nếu PC của bạn không có ổ đĩa vật lý hoặc "kiểu" khay khác, hãy đảm bảo chương trình hợp lệ.

, vì vậy chương trình ngắn nhất trong byte thắng.

Thông tin bên lề: Vòng lặp ở đó để ngăn chặn bất kỳ ai đóng ổ đĩa. Trên các ổ đĩa máy tính để bàn, lệnh mở lại sẽ được gửi trong khi ổ đĩa đang đóng, do đó vẫn mở và không "làm đổ cà phê".


2
Trừ đi cuộc gọi hệ thống đẩy CD cần thiết, tôi nghĩ rằng điều này rất giống với codegolf.stackexchange.com/questions/62732/ Kẻ
Chấn thương kỹ thuật số

4
Tôi nghĩ rằng yêu cầu tương tác với phần cứng làm cho điều này đủ khác biệt so với triển khai Máy thực tế.
Alex A.

FYI meta.codegolf.stackexchange.com/a/8214/8478 (cụ thể là "có chuỗi đầu ra cố định dài có lợi từ việc nén.").
Martin Ender

Câu trả lời:


4

Bash, 115 69 68 66 byte

Điều này đã được viết trên Mac OS X nhưng nó cũng hoạt động trên các hệ thống dựa trên BSD khác.

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

Chúng tôi echonhắc nhở, nhận đầu vào set 1qvà xác định xem người dùng có xác nhận hay không grep y. Nếu người dùng nói y, chúng ta đặt đầu ra vô hạn của yeschuỗi drutil ejectvào vỏ, nó sẽ liên tục đẩy khay đĩa ra.

Đã lưu 50 byte nhờ Chấn thương kỹ thuật số!


1
@DigitalTrauma Bạn là bậc thầy bash!
Alex A.

Bạn có thể lưu byte bằng cách thay thế sedgrepbằng read?
CousinCocaine

Có nên không drutil tray eject?
Addison Crump

@VoteToClose drutil ejectlà một từ đồng nghĩa với drutil tray open. Nó hoạt động như mong đợi. ;)
Alex A.

1
@CousinCocaine Tôi đã sử dụng readtrong lần sửa đổi trước, nhưng sau đó tôi cần kiểm tra tính công bằng, làm cho tổng thể dài hơn. Bạn có thể xem lịch sử sửa đổi để xem ý tôi là gì.
Alex A.

4

Bash Vitsy + Mac OSX, 55 byte

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

Yêu cầu đầu vào là y hoặc n. Nếu là n, nó sẽ thực thi dòng 2 (vòng lặp vô hạn với lệnh shell), nếu không, nó sẽ dừng lại.


2

Python (3.5) 84 byte

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

Trên linux

chỉnh sửa: sửa số byte;)


FYI: Tôi nhận thấy điều này bởi vì tôi đang sử dụng tập lệnh này , trong đó (trong số những thứ khác) thêm một bộ đếm byte / char phía trên các khối mã trên PPCG.
3D1T0R

0

Tự động , 85 byte

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

Không ai sẽ trả lời bất cứ điều gì trong AutoIt anyway :)


0

Python 3.5 trên Windows 7, 135 byte

import ctypes
r=input('Do you need a cup holder?')
while r=='y':ctypes.windll.WINMM.mciSendStringW('set cdaudio door open',None,0,None)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.