Chương trình vô dụng nhất EVER! [đóng cửa]


8

Lấy cảm hứng từ cỗ máy vô dụng nhất từ ​​trước đến nay .

Viết chương trình ngắn nhất thực hiện như sau:

  • tạo một cửa sổ đồ họa, sau đó ngay lập tức đóng cửa sổ và thoát khỏi chương trình.
  • làm điều này trong một số cách rõ ràng trực quan. Giống như "cánh tay" đẩy công tắc trong máy, chương trình phải sử dụng một số phương thức trực quan trong GUI để tự đóng.
  • phương pháp trực quan này phải là nguyên nhân khiến chương trình đóng; bạn không thể chỉ hiển thị nó như một cái gì đó ở bên cạnh (mặc dù có thể có những thứ khác ở bên cạnh)

Ghi chú:

  • Chương trình không phải hiển thị đủ lâu để con người có thể nhìn thấy hoạt động có thể nhìn thấy miễn là hoạt động đó là nguyên nhân của việc đóng cửa.
  • Cửa sổ phải là GUI (phải hiển thị cửa sổ đồ họa có chứa phương thức thoát hiển thị).
  • Phương thức trực quan cần phải là thứ mà người dùng có thể làm nếu nó không được thực hiện tự động. Giải thích những gì cần thay đổi trong mã để người dùng có thể làm điều này (Cảm ơn Iszi).
  • Chương trình phải đóng nếu không có sự can thiệp từ người dùng, nhưng nếu người dùng can thiệp thì không cần phải tự động đóng.
  • Vui lòng bao gồm một lời giải thích về những gì gây ra chương trình để đóng.

Ví dụ: một cửa sổ chứa một nút được lập trình nhấp chuột, chạy một đoạn mã ngắn để đóng chương trình.


2
Tôi đề nghị rằng, đối với những chương trình mà con người không nhìn thấy đủ, các câu trả lời nên bao gồm đề cập đến những gì cần thay đổi trong mã (thêm / tăng giá trị bộ đếm thời gian, v.v. - nhưng không thay đổi cơ bản chức năng của nó) để chứng minh cho con người rằng nó thực sự làm một cái gì đó trực quan.
Iszi

1
Đây có nên là mã golf hay một cuộc thi phổ biến?
Kevin

1
Tôi đã thay đổi câu trả lời TI-BASIC của mình thành phiên bản được biên dịch ngắn hơn câu trả lời khác của tôi (hiện đang được chấp nhận). Tôi sẽ đánh giá cao nếu bạn có thể thay đổi điều đó :)
Timtech

1
Tôi tò mò tại sao câu hỏi này là DVd và VTCd. Đối với một, điều này có một tiêu chí chiến thắng khách quan; đó là [golf-code]. Tôi có thể hiểu rằng đây không phải là câu hỏi hay nhất, nhưng tại sao nó lại là VTCd?
Justin

Câu trả lời:


8

TI-Basic, 3 byte

DispGraph:1

hex: 31 3E DF

Giải trình

DispGraph Hiển thị biểu đồ (một cửa sổ đồ họa)

:1Mô phỏng một báo chí của 1(bằng cách lưu trữ 1để Ansở bước cuối cùng của một chương trình), trong đó có sự trở lại máy tính để các màn hình chủ. Một người dùng có thể làm điều tương tự.


2
GTB là loại ngu ngốc khi xem xét rằng các ký hiệu cho mỗi lệnh được lưu trữ một giá trị 2 byte.
TheDoctor

Đồng tình, tôi (từ kiểm tra bằng CalcSys) sẽ tính là 6 (có lẽ là 4, không chắc chắn nếu tất cả các hệ điều hành sử dụng mã thông báo byte đơn cho :1). Chi phí hệ thống tập tin và bảng rõ ràng không được bao gồm trong số đếm.
nanofarad

2
Bạn có ý nghĩa gì khi biên soạn? TI-BASIC được giải thích.
Jakob

@Jakob Hồi đó tôi bối rối hơn về cách TI-Basic hoạt động. Điều tôi nên nói là nguồn là 3 mã thông báo 1 byte. Hãy để tôi sửa câu trả lời này
Timtech

@Jakob Có chúng tôi đi. Tôi nghĩ hồi đó chúng tôi đã chấm điểm các chương trình TI-Basic bằng số byte ascii thay vì mã thông báo
Timtech

10

Ruby với Giày , 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+?<}}

Làm cho một mũi tên nhỏ nhấn nút "Đóng". (Nhấn nút đóng bằng tay cũng sẽ đóng cửa sổ.)

ảnh chụp màn hình


9

Batch Windows, 4 byte

Lưu chương trình sau vào một .battệp trong thư mục người dùng của bạn (C: \ Users \ tên người dùng):

Exit

Khi được thực thi từ dấu nhắc Start, Run , một cửa sổ mới sẽ mở ra, gõ lệnh Exitvà thực thi nó.


1
"Cửa sổ phải là GUI (phải hiển thị cửa sổ đồ họa có chứa phương thức thoát hiển thị)." - không thể tranh cãi nếu cửa sổ của bạn chứa phương thức thoát hiển thị, tôi muốn nói là không.
gronostaj

4
@gronostaj Nó có dấu X ở góc trên bên phải.
Seiyria

1
À, tôi hiểu rồi - bạn đang khai thác các quy tắc. Có một phương thức hữu hình để thoát và người dùng có thể thực hiện cùng một chương trình, nhưng đó là hai phương thức khác nhau để chấm dứt nó. Thật thông minh, +1.
gronostaj

Tạo một .bat chỉ có một ký tự khoảng trắng: 1 byte?
SEarle1986

@ SEarle1986, nhân vật không gian sẽ không khiến chương trình thoát ra. Nó sẽ thoát vì đã đến cuối tập tin bó. Exitsẽ khiến cửa sổ đóng lại trước khi tập tin bó hoàn thành.
Thực phẩm điện tử

4

JavaScript: 133 117

(Bạn cần cho phép cửa sổ bật lên trong trình duyệt web của mình để hoạt động này)

Code-golfed:

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

Nguồn: http://jsfiddle.net/gt2t8/2/


Tại sao nó thay đổi kích thước?
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.
dùng1886419

1
giảm xuống còn 117 ký tự:(function(){w=window.open(),d=999,i=setInterval(function(){w.resizeTo(d-=9,d);if(d<0)clearInterval(i),w.close()})})()
Griffin

@Griffin cảm ơn! Được cập nhật với các đề xuất của bạn
user1886419

1
Một cái mà tôi có thể chạy mà không cần rời khỏi trang. Tuyệt vời.
Seiyria

4

Golf-Basic 84 , 5 4

g`:1

Hiển thị biểu đồ, mô phỏng một lần nhấn 1, đóng biểu đồ và trở về nhà.


Điều này có làm giống như câu trả lời khác của bạn không?
Justin

@Quincunx Vâng, đúng vậy.
Timtech

2

lắp ráp x86 / Win32 (337 310 271 byte)

.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

Lắp ráp với MASM32 ( ml /c /coff /Gz /I<include path> test.asm/ link /SUBSYSTEM:WINDOWS /LIBPATH:<library path> test.obj kernel32.lib user32.lib).

Nó tạo ra một MessageBox với nút "OK" và một chuỗi mô phỏng một lần nhấn trở lại vận chuyển từ người dùng sau 999 ms.

Các $được thay thế bằng địa chỉ của đầu codemục bằng assembler / linker. Lệnh đầu tiên là một push byte 0(ngầm, vì nó được tạo bởi invoke), được mã hóa thành 6A 00, bằng với chuỗi kết thúc null "j". Tôi tận dụng điều này khi gọi MessageBoxFindWindow.


Là tập hợp 271 byte, hay đó là kích thước của mã máy?
12Me21

1

Bash với Hệ thống X Window, 10 ký tự

xterm -e :

Mở một cửa sổ xterm, chạy bash no-op :, sau đó cửa sổ xterm đóng lại.

Nếu bạn muốn xem cửa sổ vô dụng trong một giây, bạn có thể thay đổi :thành sleep 1:

xterm -e sleep 1

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

Nó cần phải được chạy trên một vỏ tương tác, từng dòng một và người dùng không thể di chuyển chuột giữa.

  1. Ứng dụng bắt đầu

nhập mô tả hình ảnh ở đây

  1. Nút có hành vi đóng ứng dụng được thêm vào cửa sổ ứng dụng

nhập mô tả hình ảnh ở đây

  1. Tạo một sự kiện nhấn chuột xuống nút - Không thể nhìn thấy con trỏ trong ảnh chụp màn hình, nó nằm trên nút; có thể nhìn thấy các buttonha đã bị ép bởi vì bây giờ nó bị chìm và trước khi nó được dập nổi.

nhập mô tả hình ảnh ở đây

  1. Cuối cùng tạo ra một sự kiện giải phóng nút chuột lên.

    a. Hình ảnh trước khi thực sự gửi nó (trước khi nhấn Enter) nhập mô tả hình ảnh ở đây

    b. Sau khi nhập shell tương tác và các cửa sổ ứng dụng sẽ biến mất. nhập mô tả hình ảnh ở đây

Lưu ý với tcl'ers: Đã thử thực hiện tương tự trực tiếp trên nút X Đóng của cửa sổ bằng cách sử dụng:

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

nhưng tôi đã không thành công.


0

Bash - echo (50 byte)

Không được đánh gôn, 54 byte:

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

Đã đánh gôn, 50 byte

Tôi không thể hiển thị chính xác phiên bản golf ở đây vì các ký tự backspace thực sự backspace. Đối với phiên bản golf, thay đổi cả hai ký tự "^ H" thành ký tự lùi đơn (^ H):

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

Ghi chú:

  • Hoạt động được hiển thị trong 2 giây.

  • Nó không sử dụng trình quản lý cửa sổ hoặc bất cứ thứ gì thuộc loại đó, nhưng tôi tính nghệ thuật ASCII là "gui". Nếu bạn đang chạy lệnh trong một cửa sổ đầu cuối, bây giờ là trường hợp thông thường, hoạt động được hiển thị trong cửa sổ đó. Nó không mở ra một cửa sổ mới.

  • Người dùng có thể đóng chương trình sớm hơn đóng tự động bằng cách nhấn "CTRL-C" trong vòng 2 giây kể từ khi bắt đầu chương trình. Người dùng thoải mái hơn khi sử dụng GUI của họ có thể đặt con trỏ lên chữ "X" nhỏ ở góc của cửa sổ đầu cuối, nhanh chóng và "nhấp" vào nó.

  • Chương trình sẽ đóng sau 2 giây nếu không có sự can thiệp nào từ người dùng. Người dùng chỉ có thể khiến nó đóng cửa sớm hơn.

  • Điều khiến chương trình đóng cửa là việc hoàn thành "tiếng vang" cuối cùng.

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.