Benötigen Sie einen Getränkehalter?

8

Sie werden die Witzsoftware für Getränkehalter aus den 90er Jahren replizieren.

Folgendes hat es getan, und Sie müssen Folgendes tun:

  • Zeigen Sie die Nachricht an Do you need a cup holder?
  • Wenn der Benutzer bestätigt, geben Sie eine Endlosschleife ein, die das CD-ROM-Laufwerk immer wieder öffnet.
  • Wenn der Benutzer dies nicht bestätigt, beenden Sie ihn stillschweigend.

Sie können die Nachricht entweder über eine Konsolennachricht anzeigen (Bestätigung ist y, Ablehnung ist n) oder ein Nachrichtenfenster mit den beiden Optionen "Ja" und "Nein" anzeigen. Sie können das Standard- (oder das am häufigsten verwendete) CD-ROM-Laufwerk ( D:unter Windows, /cdromLinux usw.) annehmen . Standardschlupflöcher (außer Einbauten) sind verboten. Es dürfen keine zusätzlichen Eingaben oder Ausgaben beteiligt sein. Wenn Ihr PC kein physisches Laufwerk oder einen anderen "Stil" des Fachs hat, stellen Sie sicher, dass das Programm gültig ist.

, also gewinnt das kürzeste Programm in Bytes.

Wissenswertes: Die Schleife soll verhindern, dass jemand das Laufwerk schließt. Auf Desktop-Laufwerken wird der Befehl zum erneuten Öffnen gesendet, während das Laufwerk geschlossen wird. Daher bleibt der Befehl geöffnet und es wird kein "Kaffee verschüttet".

mınxomaτ
quelle
2
Abgesehen von dem erforderlichen Aufruf des CD- Auswurfsystems
Digital Trauma
4
Ich denke, die Anforderung, mit der Hardware zu interagieren, unterscheidet dies hinreichend von der Implementierung einer Wahrheitsmaschine.
Alex A.
Zu Ihrer Information meta.codegolf.stackexchange.com/a/8214/8478 (insbesondere "mit langen festen Ausgabezeichenfolgen, die von der Komprimierung profitieren").
Martin Ender

Antworten:

4

Bash, 115 69 68 66 Bytes

Dies wurde unter Mac OS X geschrieben, sollte aber auch auf anderen BSD-basierten Systemen funktionieren.

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

Wir geben echodie Eingabeaufforderung ein, erhalten Eingaben mit set 1qund bestimmen, ob der Benutzer mit bestätigt hat grep y. Wenn der Benutzer dies sagt y, leiten wir die unendliche Ausgabe von yesmit der Zeichenfolge drutil ejectan die Shell weiter, wodurch das Festplattenfach kontinuierlich ausgeworfen wird.

50 Bytes dank Digital Trauma gespart !

Alex A.
quelle
1
@ DigitalTrauma Du bist der Bash-Meister!
Alex A.
Können Sie Bytes speichern die durch den Ersatz sedund grepmit read?
CousinCocaine
Sollte es nicht sein drutil tray eject?
Addison Crump
@VoteToClose drutil ejectist ein Synonym für drutil tray open. Es funktioniert wie erwartet. ;)
Alex A.
1
@CousinCocaine Ich habe readin einer früheren Revision verwendet, aber dann würde ich eine Gleichstellungsprüfung benötigen, die es insgesamt länger macht. Sie können sich den Revisionsverlauf ansehen, um zu sehen, was ich meine.
Alex A.
4

Vitsy + Mac OSX Bash, 55 Bytes

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

Erwartet die Eingabe als y oder n. Wenn es n ist, wird Zeile 2 ausgeführt (Endlosschleife mit dem Shell-Befehl), andernfalls wird es angehalten.

Addison Crump
quelle
2

Python (3.5) 84 Bytes

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

Unter Linux

edit: Anzahl der Bytes korrigieren;)

Erwan
quelle
Zu Ihrer Information: Ich habe dies bemerkt, weil ich dieses Skript verwende , das (unter anderem) einen Byte- / Zeichenzähler über Codeblöcken in PPCG hinzufügt.
3D1T0R
0

AutoIt , 85 Bytes

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

In AutoIt wird sowieso niemand etwas beantworten :)

mınxomaτ
quelle
0

Python 3.5 unter 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
quelle