Tantangan
Mengingat positif integer , ulangi masing-masing digit beberapa kali sesuai dengan posisinya di . Dengan kata lain, setiap digit harus diulang kali (untuk setiap , 1-diindeks), sehingga menciptakan nomor baru:
Kemudian, tuliskan keduanya secara horizontal dan vertikal dan isi bagian yang kosong dengan salinan digit yang sesuai dengan indeks yang lebih besar antara indeks kolom dan indeks baris ruang kosong. Hasil akhir akan terlihat seperti ini:
Spesifikasi
Anda dapat mengambil sebagai bilangan bulat, string, daftar digit atau daftar karakter yang mewakili digit. Outputnya bisa berupa string yang dipisahkan baris baru, daftar string / integer atau daftar daftar karakter / digit, tetapi harap sertakan juga versi cetak yang cantik, jika memungkinkan. Jika output adalah string yang dipisahkan baris baru, itu juga dapat diterima untuk:
- memiliki spasi putih terdepan / utama, selama tampilan visual output tidak berubah
- pisahkan kolom menggunakan spasi jumlah konsisten atau baris dengan jumlah baris baru (tidak nol) yang konsisten
Anda dapat mengambil input dan memberikan output melalui metode standar apa pun , sambil memperhatikan bahwa celah ini dilarang secara default. Ini adalah kode-golf , jadi cobalah untuk menyelesaikan tugas dalam byte terkecil yang dapat Anda kelola dalam bahasa pilihan Anda.
Uji kasus
65:
655
555
555
---------------
203:
200333
000333
000333
333333
333333
333333
--------------
233:
233333
333333
333333
333333
333333
333333
---------------
5202:
5220002222
2220002222
2220002222
0000002222
0000002222
0000002222
2222222222
2222222222
2222222222
2222222222
---------------
12345:
122333444455555
222333444455555
222333444455555
333333444455555
333333444455555
333333444455555
444444444455555
444444444455555
444444444455555
444444444455555
555555555555555
555555555555555
555555555555555
555555555555555
555555555555555
Jawaban:
JavaScript (ES7), 70 byte
Mengambil input sebagai string. Mengembalikan string dengan linefeed baris tambahan.
Cobalah online!
Bagaimana?
metode
Kami membangun karakter keluaran dengan karakter dengan berjalan melalui matriks persegi dan mengubah setiap sel menjadi indeks menjadi string input.ix,y
Koordinasikan ke indeks string
Bagian atas terikat dari n t h daerah digit (0-diindeks) bersama setiap sumbu diberikan oleh A000096 :un nth
u0=0,u1=2,u2=5,u3=9,
Diberi bilangan bulat , kita bisa mencari tahu di area mana n = ⌊ x ⌋ + 1 terletak dengan memecahkan:k n=⌊x⌋+1
Menuju ke:
n=⌊ √
Untuk setiap sel , kami mendefinisikan:(x,y)
Nilai-nilai ini dikonversi menjadi indeks i x , y ke dalam string input dengan melakukan:vx,y ix,y
Kondisi berhenti
Kami tahu bahwa kami telah mencapai:
batas kanan matriks ketika karakter diix,y tidak ada dan kami memiliki x>y
batas bawah dari matriks ketika karakter tidak ada dan kita memilikix≤y
sumber
J ,
1615 byte-1 byte terima kasih kepada FrownyFrog!
Cobalah online!
Dibutuhkan
N
sebagai string.Penjelasan solusi awal:
Sesi tes dengan input
203
:sumber
)
, jawaban APL Anda sama dengan milik saya.[:<:@
tampaknya cukup mahal. Bisakah Anda sebaliknya menambahkan sesuatu ke daftar yang Anda indekskan ke akun untuk pengindeksan-1 (mis., Tambahkan dulu 0 untuk memindahkan setiap posisi elemen 1 yang diperlukan ke kanan)?{⍵[∘.⌈⍨(/⍨)⍳⍴⍵]}
?Haskell ,
605958 byteCobalah online!
Versi bebas poin (68 byte)
Cobalah online!
sumber
Python 2 , 71 byte
Cobalah online!
Pertama menghasilkan baris pertama
r
, lalu beralihr
untuk mencetak setiap baris.sumber
R , 59 byte
Cobalah online!
sumber
a
sebagai vektor karakter, memungkinkan Anda untuk mengaturg=seq(a)
secara langsung.Jelly , 7 byte
Cobalah online!
Output yang diklarifikasi.
sumber
05AB1E ,
141110 byteDisimpan 1 byte berkat Magic Octopus Urn / Adnan
Cobalah online!
Penjelasan
sumber
APL (Dyalog Classic) , 16 byte
Saya memisahkan solusi ini dari posting dengan jawaban J saya, seperti yang disarankan oleh Jo King
Cobalah online!
sumber
Python 2 , 74 byte
Cobalah online!
sumber
Excel VBA, 95 byte
VBE jendela anonim langsung yang mengambil input dari
[A1]
dan output ke konsolTidak diikat dan dikomentari
sumber
MATL ,
1512 byteCobalah online!
Saya menduga ini bisa dipersingkat, tapi tidak terlalu buruk ...
sumber
Tambahkan ++ , 35 byte
Cobalah online!
Bagaimana itu bekerja
Kami mengambil input sebagai daftar digit, sementara mencegah kami dari a) harus dilemparkan ke digit
BD
, dan juga dari harus menyimpan digit, yang akan memakan waktu dua byte.bLR
dBcB]
£X
¦Ω+
Selanjutnya, kami menduplikasi array ini dan tabelnya secara maksimum
d‽b>
,. Yaitu setiap elemen dalam array dipasangkan dengan satu sama lain elemen dari array kedua dan perintah maksimum diad dijalankan oleh pasangan. Untuk input contoh [6 5] , ini menciptakan array [1 2 2 2 2 2 2 2 2] , yang merupakan versi rata dari mosaik, sebagai indeks untuk array. Sayangnya, Tambah ++ menggunakan 0-diindeks array, jadi kita perlu pengurangan setiap elemen:1€Ω_
.A
€Ω:
AbLR¦+
T
$
T
sumber
Arang , 17 byte
Cobalah online! Penjelasan:
Ulangi indeks karakter dalam urutan terbalik.
Hitung ukuran kotak.
Gambarlah persegi menggunakan karakter saat ini.
sumber
Kanvas , 12 byte
Coba di sini!
sumber
Python 2 ,
7673 byte-3 byte terima kasih kepada Lynn .
Cobalah online!
sumber
Arang , 14 byte
Cobalah online!
Bagaimana?
... dapatkah metode ini di-golf?
sumber
×⊕κι
dua kali.ι
danκ
berubah pada setiap iterasi dari loop Each.Stax , 12 byte
Jalankan dan debug itu
Menggunakan algoritma ini .
Penjelasan:
Stax ,
20191816 byteJalankan dan debug itu
Penjelasan:
sumber
Attache , 34 byte
Cobalah online!
Penjelasan
Bekerja mirip dengan jawaban J Galen Ivanov .
sumber
K (ngn / k) , 16 byte
Cobalah online!
sumber
C (gcc) , 130 byte
Siapa yang butuh matematika mewah saat Anda bisa bruteforce?
Cobalah online!
sumber
QBasic 1.1 , 127 byte
-4 Terima kasih untuk DLosc .
Menggunakan versi modifikasi dari algoritma Python 2 xnor .
Input adalah string yang tidak dikutip. Output
\n
dipisahkan-tanpa ruang tambahan atau\n
s.sumber
QBasic , 111 byte
Fungsi anonim yang meminta input dan output ke konsol.
sumber
Php 7.1 , 163 bytes
Via CLI memberikan nomor sebagai argumen:
Tidak begitu bermain golf:
Keluaran:
Metode:
Pada dasarnya membangun kotak array multi-dimensi yang terdiri dari digit, dan kemudian menempatkan semuanya (array_replace_recursive).
(Ya, saya tahu ini sangat memalukan.)
sumber
Ruby , 80 byte
Cobalah online!
Mirip dengan jawaban ovs
sumber
Japt, 12 byte
Mengambil input sebagai string, menghasilkan array string.
Cobalah
Penjelasan
sumber
uBASIC , 120 byte
Fungsi anonim yang mengambil input foprm STDIN dan output ke STDOUT
Cobalah online!
sumber
Visual Basic .NET (VBC) , 198 byte
Sebuah
Sub
rutinitas yang mengambil masukan dari STDIN dan output ke stdout.Tampaknya tidak bisa membuat StrDup berfungsi: /
Cobalah online!
sumber
Lua,
149140 byteFungsi yang menerima daftar string digit dan mencetak hasilnya ke stdout. Ini adalah upaya pertama saya di golf kode (dan pilihan bahasa tidak membantu baik) jadi bersabarlah :)
Cobalah online!
Tidak Disatukan:
sumber
Perl 5 +
-nalF -M5.010
, 67 byteCobalah online!
sumber
Yabasic , 108 byte
Fungsi anonim yang mengambil input dari STDIN dan output ke STDOUT
Cobalah online!
sumber