mã máy x86_64 (linux), 175 99 76 byte
0000000000400080 <_start>:
400080: 66 bf 09 00 mov $0x9,%di
0000000000400084 <_table.L2>:
400084: 6a 0a pushq $0xa
400086: 89 fe mov %edi,%esi
0000000000400088 <_table.L3>:
400088: 89 f0 mov %esi,%eax
40008a: f7 e7 mul %edi
000000000040008c <_printInteger>:
40008c: 6a 20 pushq $0x20
40008e: 3c 0a cmp $0xa,%al
400090: 7d 02 jge 400094 <_printInteger.L1>
400092: 6a 20 pushq $0x20
0000000000400094 <_printInteger.L1>:
400094: 66 31 d2 xor %dx,%dx
400097: b3 0a mov $0xa,%bl
400099: 66 f7 f3 div %bx
40009c: 83 c2 30 add $0x30,%edx
40009f: 52 push %rdx
4000a0: 66 85 c0 test %ax,%ax
4000a3: 75 ef jne 400094 <_printInteger.L1>
4000a5: 6a 3d pushq $0x3d
4000a7: 66 57 push %di
4000a9: 80 04 24 30 addb $0x30,(%rsp)
4000ad: 6a 78 pushq $0x78
4000af: 66 56 push %si
4000b1: 80 04 24 30 addb $0x30,(%rsp)
4000b5: ff ce dec %esi
4000b7: 75 cf jne 400088 <_table.L3>
4000b9: ff cf dec %edi
4000bb: 75 c7 jne 400084 <_table.L2>
00000000004000bd <_printChars>:
4000bd: 66 ba 00 08 mov $0x800,%dx
4000c1: b0 01 mov $0x1,%al
4000c3: 66 bf 01 00 mov $0x1,%di
4000c7: 48 89 e6 mov %rsp,%rsi
4000ca: 0f 05 syscall
Đây là một kết xuất của tệp nhị phân và tất cả điều này là 175 byte. Về cơ bản, nó thực hiện hai vòng lặp giống như tất cả các câu trả lời, nhưng in ra bàn điều khiển khó hơn một chút và về cơ bản đòi hỏi phải đẩy các ký tự in lên ngăn xếp, và sau đó tạo một tòa nhà (cụ thể của linux) để thực sự đặt các ký tự đó vào thiết bị xuất chuẩn.
Bây giờ tôi đã tối ưu hóa điều này để chỉ có 1 thao tác ghi được thực hiện (nhanh hơn!) Và có số ma thuật (wow!) Và bằng cách đẩy toàn bộ kết quả lên ngăn xếp về phía trước trước khi thực hiện tòa nhà. Tôi cũng lấy ra thói quen thoát vì ai cần mã thoát đúng?
Đây là một liên kết đến đầu tiên và thứ hai của tôi , theo cú pháp ban đầu của họ.
Tôi hoan nghênh bất cứ ai có bất kỳ đề xuất nào khác về cách cải thiện nó. Tôi cũng có thể giải thích logic chi tiết hơn nếu có ai tò mò.
(Ngoài ra, nó không in các khoảng trắng thừa để làm cho tất cả các cột được căn chỉnh, nhưng nếu điều đó là bắt buộc, tôi có thể đặt logic vào với chi phí thêm một vài byte).
EDIT: Bây giờ in thêm không gian và được chơi golf nhiều hơn nữa! Nó đang làm một số thứ khá điên rồ với các thanh ghi, và có lẽ không ổn định nếu chương trình này được mở rộng.
for
vòng? Phần thử thách (thú vị) ở đâu?