カップホルダーは必要ですか?


8

90年代のカップホルダージョークソフトウェアを複製します。

これが何をしたか、そしてあなたはしなければなりません:

  • メッセージを表示する Do you need a cup holder?
  • ユーザーが確認した場合は、CDROMドライブを開き続ける無限ループに入ります。
  • ユーザーが確認しない場合は、警告なしに終了します。

コンソールメッセージ(確認はy、拒否はn)を使用するか、「はい」と「いいえ」の2つのオプションを含むメッセージウィンドウを表示して、メッセージを表示できます。デフォルト(または最も一般的な)CDROMドライブ(D:Windows、/cdromLinuxなど)を想定できます。標準の抜け穴(組み込みのものを除く)は禁止されています。追加の入力も出力も必要ありません。PCに物理ドライブがないか、トレイの別の「スタイル」がある場合は、プログラムが有効であることを確認してください。

なので、バイト単位で最も短いプログラムが優先されます。

トリビア:ループは、誰かがドライブを閉じるのを防ぐためにあります。デスクトップドライブでは、ドライブが閉じているときにre-openコマンドが送信されるため、開いたままで「コーヒーをこぼす」ことはありません。


2
マイナスに必要なCDのイジェクトシステムコール、私はこれはと驚くほど似ていると思うcodegolf.stackexchange.com/questions/62732/...
デジタルトラウマ

4
ハードウェアと対話する必要があるため、これは「真実の機械を実装する」とは十分に異なっていると思います。
Alex A.

FYI meta.codegolf.stackexchange.com/a/8214/8478(具体的には、「圧縮の恩恵を受ける長い固定出力文字列を持っている」)。
マーティンエンダー

回答:


4

Bash、115 69 68 66バイト

これはMac OS Xで書かれていますが、他のBSDベースのシステムでも動作するはずです。

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

私たちは、echoプロンプトと入力を取得set 1qし、ユーザーがで確認するかどうかを判断しますgrep y。ユーザーがと言った場合、文字列を含むy無限出力をシェルにパイプし、ディスクトレイを連続的に排出します。yesdrutil eject

Digital Traumaのおかげで50バイト節約されました!


1
@DigitalTraumaあなたはバッシュマスターです!
Alex A.

sedgrepを置き換えることでバイトを節約できますreadか?
CousinCocaine

そうじゃないのdrutil tray eject
Addison Crump 2016

@VoteToCloseはのdrutil eject同義語ですdrutil tray open。期待どおりに動作します。;)
Alex A.

1
@CousinCocaine read以前のリビジョンで使用していましたが、その後、等価性チェックが必要になるため、全体的に長くなります。改訂履歴を見て、私の意味を確認できます。
Alex A.

4

Vitsy + Mac OSX bash、55バイト

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

入力はyまたはnである必要があります。nの場合は、2行目(シェルコマンドを使用した無限ループ)を実行し、それ以外の場合は停止します。


2

Python(3.5)84バイト

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

Linuxの場合

編集:バイト数を修正する;)


参考までに:このスクリプトを使用しているため、このことに気付きました。PPCGのコードブロックの上に(特に)バイト/文字カウンターを追加します。
3D1T0R

0

AutoIt、85バイト

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

とにかくAutoItで誰も答えることはありません:)


0

Windows 7上のPython 3.5、135バイト

import ctypes
r=input('Do you need a cup holder?')
while r=='y':ctypes.windll.WINMM.mciSendStringW('set cdaudio door open',None,0,None)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.