Hari ini, kita akan membuat segi enam ASCII. Anda harus menulis sebuah program atau fungsi yang mengambil bilangan bulat positif n , dan menampilkan kisi segi enam ukuran n , yang terdiri dari tanda bintang. Misalnya, segi enam ukuran 2 terlihat seperti ini:
* *
* * *
* *
Sementara segi enam ukuran 3 terlihat seperti ini:
* * *
* * * *
* * * * *
* * * *
* * *
Anda dapat menggunakan salah satu dari metode input dan output default , misalnya STDIO / STDOUT, argumen fungsi dan mengembalikan nilai atau membaca / menulis file.
Anda dapat berasumsi bahwa input selalu valid, jadi jika itu bukan bilangan bulat positif, program Anda dapat melakukan apa pun yang Anda inginkan. Anda jangan Namun harus menangani kasus khusus dari ukuran 1 segi enam, yang terjadi menjadi tanda bintang tunggal:
*
Ruang putih terkemuka dan trailing diizinkan selama output secara visual sama.
Contoh:
1:
*
2:
* *
* * *
* *
3:
* * *
* * * *
* * * * *
* * * *
* * *
4:
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
5:
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
6:
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
12:
* * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * *
Seperti biasa, ini adalah kode-golf , sehingga celah standar berlaku , dan Anda harus mencoba menulis program sesingkat mungkin yang diukur dalam byte. Tentu saja, beberapa bahasa secara inheren lebih pendek atau lebih lama dari yang lain, jadi ingatlah bahwa tujuannya tidak harus memiliki jumlah byte keseluruhan terpendek, tetapi untuk mengalahkan pengiriman dalam bahasa yang sama atau mirip.
Semoga pegolf terbaik menang!
sumber
Jawaban:
Hexagony + Bash Coreutils, 0 + 3 + 8 = 11 Bytes
Termasuk +3 untuk
-g
flag dan +8 untuk|tr . \*
doa non-standar (lihat posting meta ini )Input diberikan sebagai argumen untuk Hexagony. Ketika interpreter Hexagony dipanggil dengan
-g N
opsi itu mencetak hexagon dari.
s. Kami kemudian menggunakan tr untuk menggantikannya dengan*
s.sumber
hexagony -g $1|tr . \*
, dengan asumsi penafsir hexagony dinamai seperti ini.ruby ./interpreter.rb -g 5|tr . \*
Python 2, 61 byte
Mencetak spasi tambahan di akhir setiap baris.
Terima kasih kepada Erik, Outgolfer karena telah menghemat satu byte.
sumber
int(input())
menggantikaninput()
danprint(' '*j+'* '*(2*n+~j))
mengganti yang biasaprint' '*j+'* '*(2*n+~j)
- kode keren btw ;-)JavaScript (ES6), 77
81 84@Upvoters: jangan lewatkan jawaban oleh @ETHproductions, yaitu 76 byte
Sunting Direvisi setelah perubahan spesifikasi, spasi tambahan diizinkan
Hanya untuk topinya ... hei! Tanpa topi?
Uji
sumber
Hexagony ,
918786 byteCobalah online!
Akhirnya berhasil.
Awalnya (sebelum menyadari betapa mahal loop), saya berharap ini bisa masuk dalam panjang sisi 5, tapi sekarang cukup sulit untuk memasukkannya ke dalam panjang sisi 6.
Untuk mendapatkan ini saya sebenarnya harus memodifikasi kode linear sedikit. Bahkan, menulis ini membuat saya menyadari cara untuk menurunkan kode linear dengan
12 byte.sumber
JavaScript (ES6),
7776 byteSaya berkata pada diri saya sendiri bahwa saya tidak akan tidur sampai saya membuat rekor ES6 baru tanpa melihat jawaban yang lain, jadi ini dia ...
Cuplikan tes
sumber
C,
91898074 byteSaya cukup banyak tweak untuk mendapatkan formula yang benar, lalu tumbuk semuanya.
Panggil
f
dengan nomor n , dan itu akan mencetak segi enam ke stdout.Tidak digabungkan dan dijelaskan (versi 80-byte):
Lihat langsung di Coliru
Catatan:
printf
dapat menangani padding negatif, yang menghasilkan karakter rata kiri dengan padding di sebelah kanan. Jadi saya mencoba sesuatu untuk efekw = printf("%*c*", y, ' ')
sehingga akan menjaga nilai absolut, dan saya bisa mengambilnya dari nilai pengembaliannya. Sayangnya, lebar nol dan satu padding mencetak karakternya sendiri, sehingga tiga garis tengahnya identik.Pembaruan: Jasen telah menemukan cara untuk melakukan hal ini dengan mencetak string kosong alih-alih karakter - 6 byte dicukur habis!
Karakter backspace ditangani secara tidak benar oleh Coliru - mengeksekusi kode ini pada terminal lokal tidak menghilangkan ruang terdepan di setiap baris.
sumber
w=printf("\n%*s",abs(y),"");++w<s*printf(" *");
05AB1E ,
1413 byteKode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
Jelly , 24 byte
Cobalah online!
Jelly malu karena fakta bahwa ia tidak memiliki atom sentralisasi, sehingga dipukuli oleh 05AB1E dan V. Masing-masing dengan 11 dan 7 byte!
Jika Anda menemukan cara untuk bermain golf ini, silakan komentar. Bantuan apa pun dihargai.
Penjelasan :
Bonus: Untuk menemukan berapa banyak bintang yang ada di segi enam, gunakan ini:
sumber
Oktaf,
6258 byteJawaban sebelumnya:
yang bisa disebut sebagai
Coba (tempel) di Octave Online
Misalnya gambar dasar untuk
n=5
isyang dapat dibuat dengan
The
dilation morphological operator
diterapkan 4 kali pada gambar menggunakan tetangga masker berikut:yang dapat dibuat dengan
[k='01010'-48;~k;k]
hasil pelebaran:
lalu ganti 0 dan 1 masing-masing dengan '' dan '*'
sumber
postgresql9.6, 290 byte
sql yang diformat ada di sini:
keluaran:
sumber
lpad
mungkin dapat menghemat beberapa byte. Saya juga akan memanggil bahasa pl / pgsql, tetapi itu menimbulkan pertanyaan tentang apakah Anda harus menghitungdo language plpgsql $$
dan menutupnya$$;
. Itu akan lebih baik ditangani pada meta, jika mereka belum pernah muncul sebelumnya.DECLARE
? Bukankah satu pun akan berfungsi?V , 17 byte
Cobalah online!
Seperti biasa, ini hexdump, karena ini berisi karakter yang tidak patut:
sumber
APL (Dyalog Unicode) ,
403635332725 byteAsumsikan
⎕IO←0
, yaitu pengindeksan berbasis nol. Output berisi satu spasi awal dan satu spasi tambahan di setiap baris.Banyak terima kasih kepada @FrownyFrog dan @ngn untuk banyak bermain golf.
Cobalah online!
Bagaimana itu bekerja
sumber
JavaScript (ES6),
8381 byteIni adalah jawaban (golf kode) pertama saya. Saya harap saya memformat semuanya dengan benar.
Tidak seperti 2 jawaban ES6 saat ini, saya tidak secara rekursif memanggil fungsi dan saya menggunakan konsol untuk output.
sumber
alert
jika Anda menentukan browser js?alert
mengeditnya, itu akan mengingatkan baris demi baris, dan bukan semuanya.Haskell,
999779 bytePenjelasan: Program ini didasarkan pada pengamatan bahwa setiap baris n-Hexagon berisi (nk) spasi diikuti oleh tanda bintang (n + k-1), untuk beberapa k tergantung pada nomor baris.
Edit: Beralih ke mapM_. Saya tidak tahu itu tersedia tanpa menggunakan impor
sumber
Python 2 ,
100978988878179 byte-1 dari @ Flp.Tkc
-6 lagi dari @Flp
-2 dengan terima kasih kepada @ nedla2004. Saya mencoba menemukan cara untuk menyingkirkan potongan kedua tetapi tidak memikirkan yang itu :)
Cobalah online!
Membuat array untuk bagian atas kemudian menambahkan array yang dibalik minus garis tengah kemudian mencetak. Mencetak dengan tepat "apa adanya" selain dari
1
yang mencetak dengan ruang terdepan (saya kira itu diperbolehkan karena secara*
visual sama dengan*
dengan atau tanpa ruang terdepan).sumber
Batch, 161 byte
Catatan: Trailing space pada baris 2. Tidak dikumpulkan:
sumber
JavaScript (ES6), 83 byte
sumber
Kanvas , 9 byte
Coba di sini!
Mengalahkan built-in: D
Penjelasan:
Tidak tahu mengapa ada padding besar, tapi itu diperbolehkan & saya segera memperbaikinya ™.tetap? Semoga saya tidak merusak barang-barangsumber
Perl 6 , 49 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Powershell,
91897868635248 byteSkrip uji:
Output (ruang memimpin tambahan):
Penjelasan:
sumber
gu
.PHP,
8379 byteJalankan sebagai pipa dengan
-nR
atau coba online .Ini dekat dengan jawaban Kodos ; tetapi
str_pad
lebih pendek daripadastr_repeat
saat golf.Dan
++
di kepala loop menyimpan lebih banyak.sumber
Ruby, 54 byte
fungsi lambda mengambil n sebagai argumen dan mengembalikan string yang dipisahkan oleh baris baru. (
$/
adalah variabel yang mengandung pemisah garis default.)dalam program uji
sumber
puts
) dalam jumlah char. Tetapi membaca kembali definisi itu hanya mengatakan fungsi Anda harus "menampilkan" hasil yang dapat dibaca sebagai "mengembalikan" hasilnya. Solusi kerenCharly, 125 byte
Halaman Charly GitHub: https://github.com/KCreate/charly-lang
sumber
SmileBASIC, 74 byte
Menambahkan ruang awal dan akhir.
"Segi enam" ini terlihat mengerikan ketika karakter memiliki lebar dan tinggi yang sama ...
sumber
raket / skema
pengujian:
sumber
Python 2, 111 byte
Implementasi yang membosankan dan langsung (dan program lengkap). Output spasi spasi di setiap baris.
Testcases:
sumber
Javascript (ES6), 143 byte
Akhirnya liburan Natal (selamat Natal!), Jadi saya punya waktu untuk bermain golf.
Dan nak sudah lama - maka jumlah byte yang besar.
Ini dia:
sumber
for(j=c.length-2;j>-1;j--)c.push(c[j])
dapat ditulis sepertifor(j=a-1;j;c.push(c[--j]))
danfor(i=0;i<a;i++){c.push(" ".repeat(a-i-1)+"* ".repeat(i+a-1)+"*")}
bisafor(i=0;i<a;c.push(" ".repeat(a-i-1)+"* ".repeat(a-1+i++));
. Pernyataan pengembalian dapat disingkat menjadireturn a-1?c.join
\ n:"*"
Secara total, perubahan ini menghemat 18B (11 + 7 + 1).Java,
157149129127 byteCobalah online!
sumber
String#repeat(int)
, tetapi TIO masih JDK 10, makarepeat(String,int)
metode yang ditiru (dengan byte-count yang sama). Kode aktual dalam Java 11 adalah:s->{for(int j=~--s,t;++j<=s;System.out.println(" ".repeat(t)+"* ".repeat(s-~s-t)))t=j<0?-j:j;}
Hexagony (linear),
128127126 bytePerhatikan bahwa ini bukan Hexagony, hanya bahasa Timwi (meta) yang didukung dalam Esoteric IDE, jadi ini tidak memenuhi syarat untuk hadiah.
Namun ini dapat dikonversi menjadi solusi Hexagony
(dan saya pikir ini akan lebih kecil dari solusi ini) saya dapat melakukannya nanti. Dibutuhkan lebih banyak usaha yangsaya lakukan di sini .Awal
❢
membutuhkan 3 byte (e2 9d a2
). Setiap baris baru membutuhkan 1 byte (0a
).Tidak, Coba online !. Ini hanya berfungsi di IDE Esoterik.
Kode beranotasi:
sumber
Japt
-R
,11, 10 byteCobalah (atau gunakan TIO untuk menjalankan beberapa tes)
Penjelasan
sumber