Tulis program atau fungsi yang mengambil bilangan bulat non-negatif dari stdin atau sebagai argumen fungsi. Ini harus mencetak atau mengembalikan string persegi ASCII-art berongga yang masing-masing sisi dibuat dengan N salinan dari angka N.
Secara khusus:
Jika N adalah 0
, tidak ada salinan N yang digunakan, jadi seharusnya tidak ada output (atau hanya satu baris baru).
Jika N adalah 1
, outputnya adalah:
1
Jika N adalah 2
:
22
22
Jika N adalah 3
:
333
3 3
333
Jika N adalah 4
:
4444
4 4
4 4
4444
Jika N adalah 5
:
55555
5 5
5 5
5 5
55555
Pola berlanjut hingga 6
selesai 9
.
Jika N adalah 10
, outputnya adalah:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Perhatikan bahwa ini sebenarnya bukan persegi. Tingginya 10 baris tetapi lebarnya 20 kolom karena 10
panjangnya dua karakter. Ini dimaksudkan. Intinya adalah bahwa setiap sisi "kotak" berisi N salinan N. Jadi semua input di luar 9
secara teknis akan menjadi persegi panjang ASCII.
Misalnya, jika N adalah 23
, outputnya adalah:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Berikut adalah Pastebins output yang diperlukan untuk 99
, 100
, 111
, dan 123
(mereka mungkin terlihat salah dalam browser namun dalam editor teks mereka akan terlihat benar). Output untuk 1000
adalah besar untuk Pastebin tetapi akan memiliki 1000 baris dan 4000 kolom. Angka dengan 4 digit atau lebih harus berfungsi seperti angka yang lebih kecil.
Detail:
- N harus ditulis dalam representasi angka desimal biasa, tanpa
+
tanda atau non-digit lainnya. - Area berlubang hanya harus diisi dengan spasi.
- Tidak boleh ada garis yang memiliki ruang depan atau belakang.
- Sebuah baris baru setelah baris terakhir kotak diizinkan secara opsional.
- Bahasa yang ditulis setelah tantangan ini dibuat dipersilahkan, mereka hanya tidak berhak untuk menang .
- Kode terpendek dalam byte menang!
sumber
Jawaban:
Jolf,
31272523 byteIni disandikan dalam penyandian ISO-8859-7 dan berisi yang tidak patut, jadi inilah hexdump:
Coba biola ini secara online atau verifikasi semua test case sekaligus (gunakan tombol full run) .
Ini keluar dengan kesalahan untuk n = 0, yang diizinkan secara default.
Terima kasih banyak kepada Conor karena bermain golf
46! byte. inb4 mencoret empat masih tampak seperti empat komentarPenjelasan
sumber
xxd -r
.Shtriped , 317 byte
Sementara saya mengajukan pertanyaan, saya bisa memamerkan bahasa "puris" saya yang baru.
(pasti berfungsi di v1.0.0 )
Tidak ada operasi matematika yang dibangun ke dalam Shtriped kecuali kenaikan dan penurunan. Juga tidak ada perulangan atau persyaratan, jadi semua hal ini perlu dibangun dari awal di setiap program.
Itulah yang program saya tidak, misalnya
@
pada dasarnya adalah untuk loop,+
adalah fungsi Selain itu,}
adalah>=
. Output aktual hanya diproduksi di 8 baris terakhir program.Tidak ada string di Shtriped. Anda dapat menerima dan mencetak string, tetapi semuanya direpresentasikan secara internal sebagai bilangan bulat presisi sewenang-wenang yang hanya dapat ditambah dan dikurangi. Jadi tidak ada cara mudah untuk mendapatkan panjang string
10
untuk mengisi pusat persegi dengan jumlah ruang yang tepat. Saya harus menyatukan fungsi~
yang secara efektif menghitungfloor(log10(N)) + 1
untuk menemukan panjang N dalam desimal.Ini mungkin bisa golfed sedikit lebih dengan menata ulang di mana dan bagaimana yang variabel yang digunakan, tapi tidak yang jauh lebih. Tidak ada jalan untuk membatasi batasan bawaan Shtriped. (Lagipula itu tidak pernah dimaksudkan sebagai bahasa golf.)
Kode yang dikomentari (garis miring terbalik adalah komentar):
sumber
Serius,
32313029 byteCobalah online!
Penjelasan:
sumber
JavaScript (ES6),
73 8278 byteDisimpan a4 bytes berkat @ user81655
Mengambil string, bukan angka untuk input.
Coba online (semua browser berfungsi)
sumber
*(n-2)
dengan*~-~-n
untuk menyimpan byte.MATL ,
342926 byteIni berfungsi dengan rilis saat ini (13.0.0) dari bahasa / kompiler
Cobalah online!
sumber
T-SQL / SQL Server 2012+,
167161 byteKeluaran:
LiveDemo
Masukkan ukuran yang diinginkan dan klik Run queryuntuk mendapatkan representasi teks.
Harap dicatat bahwa demo ini tidak menampilkan font dengan lebar tetap . Jadi
7
lebih tebal dari1
.SUNTING:
Jika kami memperlakukan input sebagai string:
LiveDemo2
sumber
Julia, 78 byte
Ini adalah fungsi anonim yang menerima integer dan mencetak persegi panjang ASCII ke STDOUT. Untuk menyebutnya, tetapkan ke variabel.
Tidak Disatukan:
Cobalah online
sumber
Ruby, 100 byte
Sayang sekali saya bahkan tidak bisa mengalahkan JS. Setiap bantuan lebih lanjut untuk menurunkannya akan sangat dihargai.
Berikut ini adalah versi yang kurang lebih tidak mengandung ungolf:
sumber
n.to_s
karena Anda menggunakannya begitu banyak, memberi Andam*n
untuk bagian pertama danm+" "*[(n-2)*m.length,0].max+m
untuk bagian kedua.Retina, 76 byte
Penjelasan mungkin datang besok.
Cobalah online di sini.
sumber
C ++ 14, 156 karakter
Saya pikir itu solusi yang cukup keren walaupun jelas tidak bisa mengalahkan sebagian besar entri lainnya di sini.
Tidak Disatukan:
Dan seperti biasa, untuk memanggil fungsi gunakan
[](string t) { ... }("10");
sumber
TSQL,
112104 bytesumber
Minkolang 0,15 , 57 byte
Coba di sini!
Penjelasan
sumber
Perl,
797674 byteCukup mudah. Argumen baris perintah pertama diambil sebagai nomor. Tempatkan skrip dalam file dan jalankan dengan
perl file.pl 1
.sumber
shift
dapat diganti denganpop
.Perl,
626058 + 2 = 60 byteMembutuhkan
-nlE
bendera:Dengan spasi ditambahkan:
sumber
R, 90 byte
Ini menciptakan matriks
x*x
ukuran dan kemudian mengisi dengan ruang ukurannchar(x)
. Jikax
lebih kecil dari 2, maka tidak ada yang diisi.sumber
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
10 byte lebih sedikit dengan menggunakan pengindeksan negatif dan gantin=x,s=''
denganx,,''
tio.run/nexus/r#DYpBCsAgDAT/…write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
untuk 72 byte.Pyth - 26 byte
Cobalah online di sini .
sumber
Pip
-l
, 21 byteMenggunakan fitur bahasa yang lebih baru dari pertanyaan, yang diizinkan per kebijakan saat ini; jika kata-kata dari pertanyaan ditafsirkan untuk mengesampingkan kebijakan tersebut, lihat jawaban 25-byte di bawah ini.
Cobalah online!
Terima kasih untuk jawaban MATL Luis Mendo untuk
(a+1)%n<2
triknya.Penjelasan
Yq
membaca baris dari stdin dan menariknya ke dalamy
. Kemudian:Jawaban asli 2016, 25 byte (plus
-l
bendera):Changelog:
MC
ditambahkan baru-baru ini; pada saat itu, saya menggunakanMMCG
(peta-peta + koordinat-grid).++
pada daftar, jadi saya harus melakukan++*
(berlaku++
untuk setiap elemen) sebagai gantinya.M
ap telah diperpanjang: sekarang<string1> M <string2>
mengembalikan daftarlen(<string2>)
salinan<string1>
; pada saat itu, saya menggunakansX#y
, string-repeat space bylen(y)
.sumber
Pyth,
3730 byteCoba di sini.
sumber
Retina , 90
Sekali lagi, saya cukup yakin ini akan sangat golf oleh para ahli:
Cobalah online.
sumber
¶
alih-alih;
untuk menyingkirkan tahap terakhir?)[^¶]+
dengan mudah.+
.Jelly, 28 byte
Grr, tidak tahu apakah Jelly buruk dalam string, atau jika saya buruk pada Jelly.
Cobalah online.
sumber
Pyke , 33 byte (tidak kompetitif)
Penjelasan:
sumber
CJam, 27 byte
Terima kasih kepada @ MartinBüttner untuk sarannya
ff
. Sangata+[0X(]&
mencurigakan, tapi oh well.Cobalah online!
sumber
Python 2, 70 karakter
sumber
Haskell, 78 byte
Contoh penggunaan:
Fungsi
>>
berguna:<list> >> <string>
membuatlength <list>
salinan<string>
, misalnya atas dan garis bawah untukx=10
yang[1..10] >> "10"
->"10101010101010101010"
.sumber
1
yang berteriak mengeluarkan satu1
. Juga, Anda mengembalikan daftar string, sedangkan tantangannya meminta satu string. Kami memiliki aturan IO yang jauh lebih ketat pada masa itu, aturan IO yang fleksibel adalah hal yang lebih baru.Perl, 72 byte
Bergantung pada fitur Perl modern:
secara otomatis tersedia sejak Perl 5.10 (cukup gunakan v5.10 atau yang lebih baru).
dengan senang hati menerima untuk bekerja pada nilai (str_expr tidak harus direduksi menjadi variabel skalar) untuk menghasilkan r esult (opsi ' r ' di akhir regex) tanpa mengubah str_expr awal.
sumber
PHP, 151 byte
Kekacauan mutlak, perlu lebih banyak waktu untuk mengoptimalkan.
s(Number)
memberi Anda output.sumber
Java 8, 280 byte
Hanya sekitar 10 kali lipat dari jawaban tersingkat, yang sangat bagus untuk Java!
Contoh dijalankan:
sumber
Python 3,
10896148 byteTidak digabungkan / dijelaskan:
Karena ini adalah jawaban kode-golf pertama saya , beberapa kritik dan / atau saran yang membangun akan sangat membantu!
sumber
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. Selain itu,while b:
sama denganwhile b!=0
, jadi itu 3 byte lebih hilang.Rust,
141137 byteMenyalahgunakan beberapa hal pemformatan, jika tidak, ini akan menjadi jauh lebih lama.
Dibongkar:
Tautan Playground
sumber
Powershell,
989695838275 byteScript pengujian yang tidak digabungkan dan dijelaskan:
Keluaran:
sumber