Tantangan
Diberikan operator ASCII dari daftar di bawah ini dan angka n, gambar representasi ASCII dari operator yang menggunakan operator itu sebagai karakter dengan segmen garis dari operator yang memiliki panjang n .
Memasukkan
Karakter ASCII dari daftar = + - x /
dan bilangan bulat di n
mana n >= 1
. (Saya menggunakan x
bukan *
dan /
bukannya ÷
, tetapi Anda bisa menggunakan salah satunya, mana yang lebih mudah). Untuk +
dan x
, Anda hanya perlu menangani angka ganjil untuk menghindari masalah dengan penyelarasan.
Keluaran
Gambar ASCII operator yang terdiri dari karakter dengan segmen panjang n. Bagian horisontal harus memiliki spasi di antara karakter untuk mengimbangi perbedaan jarak vertikal / horizontal.
Aturan
Ini adalah kode-golf , jadi kode terpendek dalam byte menang. Celah standar dilarang.
Contohnya
Memasukkan: + 3
+
+ + +
+
Memasukkan: = 4
= = = =
= = = =
Memasukkan: = 10
= = = = = = = = = =
= = = = = = = = = =
Memasukkan: - 2
- -
Memasukkan: / 10
/
/
/
/
/
/
/
/
/
/
Memasukkan: x 7
x x
x x
x x
x
x x
x x
x x
= 10
?Jawaban:
Pip ,
625956 byte55 byte kode, +1 untuk
-S
bendera.Perhatikan bahwa solusi ini bekerja dengan input
÷
untuk divisi dan*
untuk perkalian, meskipun menggunakan karakter tersebut untuk menggambar ASCII-art/
danx
, masing-masing. OP telah mengklarifikasi bahwa ini baik-baik saja. Cobalah online!Bagaimana?
Inilah versi yang diberi spasi dan dikomentari sebagian . Catat itu
a
danb
merupakan argumen baris perintah, yaitu operator dan ukurannya masing-masing. The-S
kontrol bendera bagaimana daftar adalah output: itu bergabung pada baris pertama, tetapi bergabung setiap daftar bersarang pada ruang.Dan inilah bagian-bagiannya:
Perkalian
Untuk setiap baris dalam gambar, kami menghasilkan string spasi dan kemudian ganti dua dengan karakter input. Untuk baris
i
, kami ingin mengganti spasi di indeksi
danb-1-i
; tetapi perhatikan bahwa yang terakhir dapat menggunakan indeks negatif-1-i
. (Ini bahkan lebih pendek karena variabelv
diinisialisasi ke negati v e 1.)Tambahan
Menggunakan strategi dari saya Gambarlah persegi berongga jawaban, kita mendefinisikan sebuah fungsi yang membungkus
+
dib/2
salinan argumen dan mengembalikan hasil sebagai daftar karakter. (Divisi integer//
tidak diperlukan karena operator pengulangan stringX
secara otomatis memotong ke integer.) Pertama, kita memanggil fungsi ini pada spasi, memberi[" ";" ";"+";" ";" "]
; kemudian, kami memetakan fungsi yang sama untuk hasil itu, memberi[" ";" ";"+";" ";" "]
pada sebagian besar garis tetapi["+";"+";"+";"+";"+"]
pada garis tengah. Daftar bersarang ini kemudian di-output, karena-S
flag, dengan spasi di antara semua karakter di baris dan baris baru di antara baris.Divisi
Setiap baris memiliki antara
b-1
dan0
spasi, diikuti oleh karakter inputa
.Pengurangan
Buat baris karakter input yang dipisahkan spasi. Simpan salinan untuk nanti.
Sama dengan
Langkah pengurangan disimpan setengah dari apa yang kita butuhkan di - cukup
y
gandakan.x
Nilai-nilai dummy ada untuk pad daftar utama sehingga pengindeksan modular memberikan indeks unik untuk setiap karakter input di+-*÷=
.sumber
V ,
78, 72, 71, 68, 65, 63, 62, 61 byteCobalah online!
Seperti biasa, pertempuran leher-dan-leher dengan 05AB1E benar-benar menyenangkan!
Karena ini berisi karakter non-ASCII, berikut adalah hexdump:
Ini memang menciptakan spasi di output untuk
=
dan-
, tetapi ini tampaknya diizinkan . Jika ini tidak diizinkan, jangan ragu untuk berkomentar dan saya akan mengembalikannya.Penjelasan
"Perintah global" (misalnya
ç
) menerapkan seperangkat perintah tertentu untuk setiap baris yang cocok dengan regex tertentu. Sintaksnya adalahIni adalah cara termudah untuk mensimulasikan pernyataan kondisi / switch. Dalam jawaban asli saya, saya hanya menciptakan seluruh seni ASCII di sisi kanan untuk setiap karakter berbeda yang perlu kita cari. Namun, banyak dari output ini membutuhkan perintah yang sama. Jadi saya menggabungkannya. Perintah pertama ('Ç') sebenarnya adalah kebalikan dari perintah global, itu menerapkan perintah untuk setiap baris yang tidak cocok dengan regex. Jadi perintah pertama adalah:
Perintah berikut adalah untuk input '=' dan '-'. Keduanya mudah dan mirip. Setelah perintah ini, kita tidak perlu lagi diproses
-
.Dari sini kita hanya melakukan beberapa perintah tambahan untuk setiap input yang memungkinkan. Untuk
+
:Perintah untuk equals sangat mudah. Kami hanya menduplikasi
Ä
. Untuk/
:Yang terakhir adalah yang paling rumit. Ini pada dasarnya adalah port dari jawaban ini .
sumber
ç
perintah (serta pencarian dan mengganti,/
dan?
) semua bagian simulasi dari baris perintah vim, di mana Anda harus tekan enter untuk benar-benar menjalankan perintah05AB1E ,
8176747370696865646260595756 byteSaat ini dalam perang dengan jawaban V . Saya datang untuk Anda, Dr. McMoylex: hlm.
Juga dalam perang dengan jawaban Pip . Aku akan mengawasimu, Tuan DLosc.
Kode:
Atau dalam bentuk yang lebih mudah dibaca:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
Python 3,
304283278 byteCukup sederhana, cukup buat matriks karakter dan terapkan operasi yang berbeda berdasarkan yang mana. The
=
dan-
telah spasi jika itu tidak terlalu buruk.EDIT: Terima kasih kepada @Shebang dan @Rod untuk saran mereka yang akhirnya menghemat 21 byte!
EDIT2: Terima kasih kepada @Artyer karena telah menghemat 5 byte!
sumber
if'-'==t
baris kondisi dan mengganti yang di atasnya denganif t in'=-':b=[[t+' ']*s]*(2*(t>'-'))
(saya pikir).exec(['+ block','/ block','x block','= block','- block']['+/x=-'.find(t)])
to save ~ 18 bytes.split()
(No args split pada whitespace). Pada saluran 6, Anda melewatkan spasi (b=[[x+' 'for
). Anda dapat membuat baris terakhirprint(*map(''.join,b),sep='\n')
dengan 1 byte lebih sedikit.JavaScript (ES6),
238225215202196 byteMungkin bisa bermain golf, tapi ini awal.
sumber
Scala, 275 byte
Pemakaian:
Penjelasan:
Kode tes untuk nilai ascii dari char untuk memilih cara yang benar untuk menghasilkan gambar. Nilai ascii dari operator yang dimaksud adalah:
('+' -> 43), ('-' ->45), ('/' -> 47), ('=' -> 61), ('x' -> 120)
sumber
JavaScript (ES6), 156 byte
Dimana
\n
mewakili karakter baris baru literal.sumber
SyntaxError: invalid property id
apa yang saat ini ditulis, tetapi mengubah backticks di sekitar slash ke apostrophes memperbaikinya. (Mengapa Anda memiliki backticks di sana alih-alih apostrof?)+
,-
dan=
terlihat berbeda dari tantangan, panggilan untuk: "Bagian horisontal harus memiliki ruang antara karakter untuk mengimbangi perbedaan jarak vertikal / horizontal."Dyalog APL ,
9186 byteKebutuhan
⎕IO←0
, yang merupakan standar pada banyak sistem. Mengambil n sebagai argumen kiri, dan salah satu dari + - × ÷ = sebagai argumen benar.Penjelasan
sumber
Mathematica, 191 byte
Fungsi anonim. Mengambil string dan angka sebagai input, dan mengembalikan string sebagai output. Bukan yang terpendek sejauh ini, tetapi masih menyenangkan untuk menulis.
sumber
C, 396 byte
Telepon dengan:
sumber
SOML ,
104100 byte (tidak bersaing)Ini semacam bersaing karena saya cukup yakin bahwa semua yang saya gunakan di sini memiliki dokumen di github sebelum tanggal posting pertanyaan ini tetapi parser tidak memiliki dukungan untuk beberapa fungsi yang saya gunakan jadi idk.
sumber
PHP,
306292281282281275270 byteOoh ini besar ... perlu golf lebih lanjut.
Saya bisa menyimpan 4 byte dengan linebreak fisik atau satu byte dengan meletakkan "\ n" ke dalam variabel.
sumber
C #, 744 Bytes
Ini seperti 1 juta karakter, saya pikir, tapi saya tidak peduli, saya sangat senang bahwa saya menyelesaikan ini ...
Golf:
Tidak Disatukan:
Pengujian:
Terlalu banyak untuk di-paste dan diformat di sini, saya membuat pastebin:
Pastebin
sumber
C, 331 Bytes
Operator diteruskan sebagai kode ASCII
o
dan karakter diperhitungkann
. Saya hanya menambahkan spasi antara karakter berturut-turut secara horizontal ke dalam tanda plus, karena ini adalah satu-satunya di mana output akan terdistorsi jika saya tidak dan dalam tugas itu hanya tertulis "harus". Saya menggunakan dua loop bersarang menghitung mundur (kecuali untuk-
mana saya hanya perlu satu baris).=
Tiga Baris, salah satunya kosong, lurus ke depan+
menggunakanprintf
karena spasi-
lurus ke depan/
cetak lingkaran dalam di nol dan mulai dari counter lingkaran luarx
memiliki cetak lingkaran dalam di counter lingkaran luar dan "terbalik"n-i
. Masih perlu melihat mengapa saya tidak ada di sini.Contoh panggilan:
sumber
Lua,
402344312 byte312:
344:
402:
90 karakter berkurang dan sekarang menyakitkan untuk melihat bahkan ketika diperluas. : |
sumber