Tugas Anda adalah menghasilkan Trapesium Magical 8:
1 × 8 + 1 = 9
12 × 8 + 2 = 98
123 × 8 + 3 = 987
1234 × 8 + 4 = 9876
12345 × 8 + 5 = 98765
123456 × 8 + 6 = 987654
1234567 × 8 + 7 = 9876543
12345678 × 8 + 8 = 98765432
123456789 × 8 + 9 = 987654321
- Output dalam bahasa yang Anda pilih dalam byte sesedikit mungkin.
- Perhatikan jumlah spasi di awal setiap baris untuk mempertahankan bentuk trapesium.
- Ruang tambahan diperbolehkan.
- Anda dapat menggunakan
×
atau huruf x - mana yang Anda inginkan.
code-golf
kolmogorov-complexity
rybo111
sumber
sumber
Jawaban:
Python 2, 59 byte
Angka-angka
a
dani
persamaana * 8 + i
dihasilkan secara hitung. Setiap baris,i
bertambah, dana
digit berikutnya ditambahkan melaluia=a*10+i
. Misalnya, jikaa=12345, i=5
, makai
menjadi6
, maka yang barua
adalah12345*10 + 6
yang mana123456
.Menyimpan ini sebagai angka daripada string memungkinkan kita menghitung RHS seperti yang diberikan oleh persamaan
a*8+i
, yang lebih pendek dari pembalikan string.sumber
V , 37 byte
Cobalah online!
Ini mengandung yang tidak patut dicetak, jadi inilah hexdump:
sumber
05AB1E ,
32313028 byteKode:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
.c
tidak bisa digunakan di sini?PHP,
105896057 bytegolf pertama saya coba di sini (terima kasih kepada manatwork & user55641)
59
89 (percobaan saya sendiri)
105 (pertama)
sumber
$t.=10-$i
dengan$s*8+$i
. tio.run/##K8go@G9jXwAk0/…$s*8+$i
bukannya$t.=10-$i
menyimpan dua lagi.Pyth, 32 byte
Cobalah online!
Terima kasih kepada @FryAmTheEggman karena telah menghemat 2 byte. Terima kasih kepada @KennyLau untuk menghemat 3 byte.
sumber
s
tidak bergabung dengan ruang - ia bergabung tanpa pembatas.CJam,
393836 byteTerima kasih kepada Pengoptimal untuk menghemat 2 byte.
Uji di sini.
Jumlah byte yang sama:
Ini memerlukan versi terbaru, tersedia di Coba online!
sumber
Python 2,
87847875 byteCobalah online
Versi sebelumnya menggunakan beberapa string magic.
Casting
range(1,10)
ke string memberi[1, 2, 3, 4, 5, 6, 7, 8, 9]
, dan ini bagus karena setiap angka hanya satu digit. Jadi mendapatkan string123456789
dari ini mudah dengan`range(1,10)`[1::3]
. Kisaran terbalik adalah`range(1,10)`[-2::-3]
. Kemudian, untuk mendapatkan hanya sejauh yang saya inginkan setiap iterasi, saya memotongnya di salah satu3*n
, atau di3*(9-n)
(27-3*n
) untuk digit terbalik.sumber
for n in range(1,10):print"%9s"%s[:n]+" x 8 + %s = "%n+s[::-1][:n]
untuk 80 byte.s="123456789";n=1;exec'print"%9s"%s[:n],"x 8 + %s ="%n,s[::-1][:n];n+=1;'*9
hemat tiga lagi! Turun ke 75.Perl, 49 byte
Pemakaian
sumber
Ruby,
77736560 byteCobalah online ~
Perubahan besar dari @manatwork
Perombakan lain dari @xsot
sumber
puts'%9d x 8 + %d = %d'%[k=[*1..i]*'',i,k.to_i*8+i]
.(1..9).map
→1.upto(9)
%9d
menjadi opsi pemformatan untuk membuat bilangan bulat seperti itua=i=0;9.times{puts"%9d x 8 + %d = %d"%[a=a*10+i+=1,i,a*8+i]}
Java 10,
151133130129126110 byteCobalah online.
Penjelasan:
sumber
x
alih-alih tanda perkalian.s
untuk"\n"
dan menghapus"\n"+
darifor
lingkaran×
adalah 2 byte, bukan 1 sepertix
..s
hasil pada setiap iterasi juga?return o
bukanSystem.out.print(o)
? Juga, Anda dapat mengubah ke Java 10 dan menyimpan denganvar
dan lambdasC, 74 byte
sumber
C #, 113 byte
jika Anda tetap harus meningkatkan solusi ini, jangan ragu untuk berbagi.
sumber
;n=10*n+ ++i
for-loop dapat diubah menjadi;n=++i+10*n
. Juga,+" x "+"8 + "+
bisa diubah menjadi+" x 8 + "+
. untuk menghemat 3 byte lagi.Batch, 117 byte
Ya, itu adalah 16% tanda pada satu baris; itu Batch untukmu!
sumber
Haskell, 92 byte
Bagaimana itu bekerja:
sumber
Retina , 66 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1. Linefeed terkemuka sangat penting.
Cobalah online!
sumber
Pyke,
3029 byteCoba di sini!
sumber
PowerShell v2 +,
8564585752 byteLoop dari 8 hingga 0
8..0|%{...}
melalui operator jangkauan. Setiap iterasi, kita output Rangkaian string yang terdiri dari (jumlah yang tepat dari ruang" "*$_
), ditambah-join
serangkaian ed dari (berkisar dari1
ke sejumlah pembantu pra-bertambah++$i
, ditambah sedikit tengah" x 8 + $i = "
, ditambah kisaran akhir dari9
pada jumlah saat$_
pra -tingkat).Satu trik besar di sini adalah kita memanfaatkan "preferensi kiri" untuk typecasting, yang memungkinkan kita untuk "menambahkan" array bersama di dalam
-join
parens, yang berarti kita hanya menggunakan satu-join
operator.Contoh
sumber
%{
Apakah matamu baik-baik saja?MATL ,
383635 byteCobalah online!
sumber
J, 51 byte
Membuat string
123456789
dan kemudian beroperasi pada awalan dan akhiran untuk membuat output.Pemakaian
sumber
JavaScript ES6 (88)
Mengambil keuntungan dari
repeat
metode baru , backticks dan templating ...sumber
alert
alih-alihconsole.log
, itu dapat menghemat beberapa byte!R,
107103 byteTidak Disatukan:
Hasil:
sumber
APL (Dyalog Unicode) ,
615239 byte SBCSCobalah online!
-9 byte dengan menggunakan
10⊥
trik untuk menguraikan angka, bukan pengurangan. Terima kasih kepada @ Adám untuk -13!Penjelasan:
sumber
JavaScript (ES6), 99 byte
Dimana
\n
mewakili karakter baris baru literal. Versi kedua menghasilkan baris tambahan. Saya datang dengan formula untuk angka('1'.repeat(9-i)+0+i)/9
tetapi padding lebih mudah dilakukan dengan cara ini.sumber
Brainfuck , 232 byte
Cobalah online!
Dapat bermain golf lebih jauh ...
sumber
Javascript (menggunakan perpustakaan eksternal) (143 byte)
Tautan ke lib: https://github.com/mvegh1/Enumerable/
Penjelasan kode: Buat rentang 1 hingga 9, dan untuk setiap nilai, tulis baris yang sesuai dengan predikat kompleks. Predikat ini dilewatkan nilai integer saat ini, dan menciptakan rentang yang mencakup elemen 10-currentValue, untuk membuat banyak ruang. Ruang-ruang tersebut disatukan dengan bagian formula dari garis, dan kemudian disatukan dengan penjahit rentang yang cocok dengan jumlah elemen sebagai garis depan, dalam urutan terbalik.
Catatan: Pada gambar, baris pertama dimatikan oleh satu spasi karena konsol menambahkan tanda kutip karena nilai kembali adalah string. Nilai aktual diformat dengan benar
sumber
05AB1E , 24 byte
Cobalah online!
Menggunakan versi yang lebih baru daripada tantangan, yang sekarang diizinkan.
sumber
©
, dan mengubah®
untuky
menyimpan byte.Kanvas , 20 byte
Coba di sini!
sumber
VBA (Excel), 51 byte
Menggunakan Jendela Segera
sumber
k (77 byte)
Mungkin bisa dipersingkat sedikit lagi
Contoh:
sumber
golflua, 56 karakter
Contoh dijalankan:
sumber