машинний код x86_64 (linux), 175 99 76 байт
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
Це дамп двійкового файлу, і все це 175 байт. Це, в основному, ті самі дві петлі, що і всі відповіді, але друкувати на консолі дещо складніше, і в основному потрібно натискання символів на друк на стеку в зворотному порядку, а потім робити (специфічний для Linux) syscall, щоб фактично поставити ці символи в stdout.
Зараз я оптимізував це так, що виконується лише 1 операція запису (швидше!) І має магічні цифри (вау!), І натискаючи весь результат на стек назад, перш ніж робити syscall. Я також зняв процедуру виходу, тому що кому потрібний належний код виходу?
Ось посилання на моє перше і друге спроби, в їх оригінальному синтаксисі насму.
Я вітаю всіх, хто має будь-які інші пропозиції щодо її вдосконалення. Я також можу пояснити логіку більш докладно, якщо хтось цікавий.
(Крім того, він не друкує додаткові пробіли, щоб зробити всі стовпці вирівняними, але якщо це потрібно, я можу вкласти логіку ціною на ще кілька байт).
EDIT: Тепер друкується додаткове місце та ще більше виходить в гольф! Це робить деякі досить шалені речі з регістрами, і, ймовірно, нестабільно, якщо цю програму потрібно було б розширити.
for
петель? Де складна (цікава) частина?