Das nutzloseste Programm aller Zeiten! [geschlossen]

8

Inspiriert von der nutzlosesten Maschine aller Zeiten .

Schreiben Sie das kürzeste Programm, das Folgendes ausführt:

  • Erstellen Sie ein grafisches Fenster, schließen Sie das Fenster sofort und beenden Sie das Programm.
  • Tun Sie dies auf visuell sichtbare Weise. Wie der "Arm", der den Schalter in der Maschine drückt, muss das Programm eine visuelle Methode in der GUI verwenden, um sich selbst zu schließen.
  • Diese visuelle Methode muss dazu führen, dass das Programm geschlossen wird. Sie können es nicht einfach als etwas auf der Seite zeigen (obwohl es andere Dinge auf der Seite geben kann)

Hinweis:

  • Das Programm muss nicht lange genug sichtbar sein, damit die sichtbare Aktivität von einem Menschen gesehen werden kann, solange die Aktivität die Ursache für das Schließen ist.
  • Das Fenster muss eine GUI sein (muss ein grafisches Fenster anzeigen, das die sichtbare Exit-Methode enthält).
  • Die visuelle Methode muss etwas sein, was der Benutzer tun könnte, wenn sie nicht automatisch durchgeführt würde. Erklären Sie, was im Code geändert werden muss, damit der Benutzer dies tun kann (Dank an Iszi).
  • Das Programm muss geschlossen werden, wenn der Benutzer nicht stört. Wenn der Benutzer jedoch eingreift, muss es nicht automatisch geschlossen werden.
  • Bitte geben Sie eine Erklärung an, warum das Programm geschlossen wird.

Beispiel: Ein Fenster mit einer Schaltfläche, auf die programmgesteuert geklickt wird und auf der ein kurzer Codeausschnitt ausgeführt wird, der das Programm schließt.

Justin
quelle
2
Ich würde vorschlagen, dass für Programme, die nicht sichtbar genug sind, um von einem Menschen gesehen zu werden, die Antworten die Erwähnung dessen enthalten sollten, was im Code geändert werden sollte (Hinzufügen / Erhöhen von Timer-Werten usw. - aber nicht grundlegende Änderung seiner Funktionalität), um dies zu tun einem Menschen zeigen, dass er tatsächlich etwas Visuelles tut.
Iszi
1
Sollte dies Code Golf oder ein Beliebtheitswettbewerb sein?
Kevin
1
Ich habe meine TI-BASIC-Antwort in eine kompilierte Version geändert, die kürzer ist als meine andere Antwort (die derzeit akzeptiert wird). Ich würde es
begrüßen,
1
Ich bin gespannt, warum diese Frage DVd und VTCd ist. Zum einen hat dies ein objektives Gewinnkriterium; Es ist ein [Code-Golf]. Ich kann verstehen, dass dies nicht die beste Frage ist, aber warum ist es VTCd?
Justin

Antworten:

8

TI-Basic, 3 Bytes

DispGraph:1

hex: 31 3E DF

Erläuterung

DispGraph Zeigt das Diagramm an (ein grafisches Fenster)

:1Simuliert eine Presse 1(durch Speichern 1auf Ansim letzten Schritt eines Programms), die den Rechner wieder zum Startbildschirm nimmt. Ein Benutzer könnte das Gleiche tun.

Timtech
quelle
2
GTB ist irgendwie dumm, wenn man bedenkt, dass die Symbole für jeden Befehl in 2-Byte-Werten gespeichert sind.
TheDoctor
Übereinstimmend würde ich (von der Inspektion mit CalcSys) als 6 zählen (vielleicht 4, nicht sicher, ob alle Betriebssysteme Einzelbyte-Token für :und verwenden 1). Dateisystem-Overhead und Tabellen sind offensichtlich nicht in der Zählung enthalten.
Nanofarad
2
Was meinst du mit kompiliert? TI-BASIC wird interpretiert.
Jakob
@ Jakob Damals war ich verwirrter darüber, wie TI-Basic funktioniert. Was ich hätte sagen sollen ist, dass die Quelle 3 1-Byte-Token sind. Lassen Sie mich diese Antwort
korrigieren
@ Jakob Los geht's. Ich denke damals haben wir TI-Basic-Programme eher nach
ASCII-
10

Rubin mit Schuhen , 110

Shoes.app{button('Close'){exit}
p=para
t=Time.now
animate{u=(t-Time.now).to_i+10
exit if u<0
p.text=' '*u+?<}}

Macht einen kleinen Pfeil, der eine "Schließen" -Taste drückt. (Durch manuelles Drücken der Schließen-Taste wird auch das Fenster geschlossen.)

Bildschirmfoto

Türknauf
quelle
9

Windows Batch, 4 Bytes

Speichern Sie das folgende Programm in einer .batDatei in Ihrem Benutzerordner (C: \ Benutzer \ Benutzername):

Exit

Bei der Ausführung über die Eingabeaufforderung Start, Ausführen wird ein neues Fenster geöffnet, der Befehl wird Exiteingegeben und ausgeführt.

Hand-E-Food
quelle
1
"Das Fenster muss eine GUI sein (muss ein grafisches Fenster anzeigen, das die sichtbare Exit-Methode enthält)." - Es ist fraglich, ob Ihr Fenster die sichtbare Exit-Methode enthält. Ich würde sagen, dass dies nicht der Fall ist.
Gronostaj
4
@gronostaj Es hat ein X in der oberen rechten Ecke.
Seiyria
1
Ah, ich verstehe - Sie nutzen die Regeln aus. Es gibt eine sichtbare Methode zum Beenden, und der Benutzer kann das Gleiche tun wie das Programm, aber dies sind zwei verschiedene Methoden, um es zu beenden. Das ist klug, +1.
Gronostaj
Erstellen eines .bat mit nur einem Leerzeichen: 1 Byte?
SEarle1986
@ SEarle1986, das Leerzeichen würde das Programm nicht beenden. Es würde beendet, weil es das Ende der Batch-Datei erreicht hat. ExitDas Fenster wird geschlossen, bevor die Batchdatei abgeschlossen ist.
Hand-E-Food
4

JavaScript: 133 117

(Sie müssen Popups in Ihrem Webbrowser zulassen, damit dies funktioniert.)

Code-Golf:

(function(){w=window.open(),d=999,i=setInterval(function(){w.resizeTo(d-=9,d),d<0&&(clearInterval(i),w.close())})})()

Quelle: http://jsfiddle.net/gt2t8/2/

user1886419
quelle
Warum wird die Größe geändert?
Justin
@ Quincunxdo this in some visually apparent manner. Like the "arm" that pushes the switch in the machine, the program must use some visual method in the GUI to close itself.
user1886419
1
reduziert auf 117 Zeichen:(function(){w=window.open(),d=999,i=setInterval(function(){w.resizeTo(d-=9,d);if(d<0)clearInterval(i),w.close()})})()
Griffin
@Griffin danke! Aktualisiert mit Ihren Vorschlägen
user1886419
1
Eine, die ich ausführen kann, ohne die Seite zu verlassen. Genial.
Seiyria
4

Golf-Basic 84 , 5 4

g`:1

Zeigen Sie das Diagramm an, drücken Sie 1, schließen Sie das Diagramm und kehren Sie nach Hause zurück.

Timtech
quelle
Funktioniert dies genauso wie Ihre andere Antwort?
Justin
@ Quincunx Ja, das tut es.
Timtech
2

x86 / Win32-Assembly (337 310 271 Bytes)

.586
.model flat
option casemap:none
include kernel32.inc
include windows.inc
include user32.inc
i textequ <invoke>
.code
s:i CreateThread,0,0,$+46,0,0,0
i MessageBox,0,$,$,0
i ExitProcess,0
i Sleep,999
i FindWindow,0,$
i PostMessage,eax,256,13,0
ret
END s

Wird mit MASM32 ( ml /c /coff /Gz /I<include path> test.asm/ link /SUBSYSTEM:WINDOWS /LIBPATH:<library path> test.obj kernel32.lib user32.lib) zusammengebaut.

Es wird eine MessageBox mit der Schaltfläche "OK" und einem Thread erstellt, der eine Wagenrücklaufpresse des Benutzers nach 999 ms simuliert.

Das $wird durch die Adresse am Anfang des codeAbschnitts durch den Assembler / Linker ersetzt. Die erste Anweisung ist eine push byte 0(implizit, da sie von der generiert wird invoke), die als codiert ist 6A 00und der nullterminierten Zeichenfolge entspricht "j". Ich nutze dies beim Anruf MessageBoxund FindWindow.

Michael
quelle
Ist die Assembly 271 Bytes oder ist das die Größe des Maschinencodes?
12Me21
1

Bash mit X Window System, 10 Zeichen

xterm -e :

Öffnen Sie ein xterm-Fenster, führen Sie das Bash-No-Op aus :. Danach wird das xterm-Fenster geschlossen.

Wenn Sie das nutzlose Fenster für eine Sekunde sehen möchten, können Sie Folgendes ändern :in sleep 1:

xterm -e sleep 1
Digitales Trauma
quelle
1

Tcl / Tk, 131

grid [button .b -command exit]
event generate .b <Button-1> -warp 1 -x 5 -y 5
event generate .b <ButtonRelease-1> -warp 1 -x 5 -y 5

Tcl / Tk, 136

grid [button .b -command exit]
event generate .b <ButtonPress-1> -warp 1 -x 5 -y 5
event generate .b <ButtonRelease-1> -warp 1 -x 5 -y 5

Es muss zeilenweise auf einer interaktiven Shell ausgeführt werden, und der Benutzer kann die Maus nicht dazwischen bewegen.

  1. Die Anwendung startet

Geben Sie hier die Bildbeschreibung ein

  1. Die Schaltfläche, mit der die App geschlossen werden soll, wird dem App-Fenster hinzugefügt

Geben Sie hier die Bildbeschreibung ein

  1. Generieren Sie ein Ereignis, bei dem Sie mit der Maus auf die Schaltfläche drücken. - Obwohl der Cursor im Screenshot nicht sichtbar ist, befindet er sich über der Schaltfläche. Es ist sichtbar, dass der Knopf gedrückt wurde, weil er jetzt eingesunken ist und bevor er geprägt wurde.

Geben Sie hier die Bildbeschreibung ein

  1. Generieren Sie schließlich ein Ereignis, bei dem die Maustaste losgelassen wird.

    ein. Bild vor dem eigentlichen Senden (vor dem Drücken der Eingabetaste) Geben Sie hier die Bildbeschreibung ein

    b. Nach Enter betreten Sie die interaktive Shell und die App-Fenster sind einfach verschwunden. Geben Sie hier die Bildbeschreibung ein

Hinweis für Benutzer: Es wurde versucht, dasselbe direkt auf der X-Schließen-Schaltfläche des Fensters zu tun.

event generate . <ButtonPress-1> -warp 1 -x 175 -y -10
event generate . <ButtonRelease-1> -warp 1 -x 175 -y -10

aber ich war nicht erfolgreich.

Sergiol
quelle
0

Bash - Echo (50 Bytes)

Nicht Golf, 54 Bytes:

s=sleep;echo -n \>\\;$s 1;echo -ne "\b\b >/";$s 1;echo

Golf, 50 Bytes

Ich kann die Golfversion hier nicht genau anzeigen, da die Rücktaste tatsächlich die Rücktaste ist. Ändern Sie für die Golfversion beide "^ H" in einzelne Rücktaste (^ H):

s=sleep;echo -n \>\\;$s 1;echo -n ^H^H \>/;$s 1;echo

Anmerkungen:

  • Die Aktivität ist 2 Sekunden lang sichtbar.

  • Es wird kein Fenstermanager oder ähnliches verwendet, aber ich zähle die ASCII-Grafik als "GUI". Wenn Sie den Befehl in einem Terminalfenster ausführen, was jetzt der übliche Fall ist, wird die Aktivität in diesem Fenster angezeigt. Es öffnet sich kein neues Fenster.

  • Der Benutzer kann das Programm früher als das automatische Schließen schließen, indem er innerhalb von 2 Sekunden nach dem Starten des Programms "STRG-C" drückt. Benutzer, die mit ihrer GUI besser vertraut sind, können den Cursor schnell auf das kleine "X" in der Ecke des Terminalfensters setzen und darauf "klicken".

  • Das Programm wird nach 2 Sekunden geschlossen, wenn der Benutzer nicht stört. Der Benutzer kann nur veranlassen, dass es früher geschlossen wird.

  • Was das Programm zum Schließen bringt, ist die Vervollständigung des letzten "Echos".

Glenn Randers-Pehrson
quelle