Saya bertanya-tanya apakah ada bahasa esoterik atau golf yang secara khusus menargetkan output teks dan seni ASCII?
Misalnya, 05AB1E setidaknya dimulai dengan menargetkan konversi basis. Apakah ada bahasa golf yang menargetkan keluaran teks dan seni keluaran teks?
Jika demikian, apakah ada halaman tip di sini, dan apakah itu biasa digunakan?
Catatan: Saya tidak mencari bahasa yang dapat menghasilkan seni ASCII, tetapi bahasa yang sengaja dirancang untuk dapat menyelesaikan tantangan seni-seni dengan cara yang relatif singkat dan ringkas.
Jawaban:
Sebenarnya, ada! Satu bahasa tersebut adalah salah satu yang saya telah bekerja pada untuk sementara disebut V .
Di bawah tenda, V hanya vim , tetapi semua penekanan tombol dijalankan secara otomatis, dan isi buffer vim dicetak ke STDOUT ketika program selesai. Ini hanya membuat menjalankannya lebih nyaman.
Beberapa sejarah pada bahasa tersebut. Ketika saya mulai menggunakan editor teks vim untuk kode-golf, saya menemukan bahwa itu sebenarnya cukup bagus, tetapi memiliki beberapa fitur menjengkelkan yang membuatnya lebih sulit untuk bersaing dengannya. Misalnya, Anda dapat mengatur semacam "loop sementara" dengan melakukan
yang akan diulang
<foobar>
sampai terjadi kesalahan. Ini memiliki 7 byte kode boilerplate. Dalam V, ini disingkat menjadiò<foobar>ò
.Beberapa hal yang membuat V bagus untuk ASCII-art:
Itu 2d pada dasarnya. Salah satu fitur adalah yang memiliki posisi "kursor", di mana sebagian besar perintah melakukan sesuatu berdasarkan di mana kursor berada dalam teks. Perintah lain memindahkan lokasi kursor. Sebagai contoh, x menghapus satu karakter, tetapi Wx bergerak maju satu kata dan kemudian menghapus satu karakter. Karena sebagian besar bahasa lain tidak sengaja dibuat 2 dimensi, ini menawarkan keunggulan yang bagus ketika tantangannya adalah tentang memposisikan teks dalam ruang 2D
Ini sepenuhnya berbasis string. Anda dapat menggunakan beberapa operasi matematika, tetapi ini biasanya merupakan cara yang lebih panjang untuk mencapai sesuatu.
Ini menggunakan kompresi regex untuk dengan cepat mengubah teks.
Semua itu memori internal, yang hanya array karakter 2d, dicetak secara implisit ketika program berakhir. Selain itu, semua input secara implisit ditambahkan ke dalam memori internal , yang bagus ketika sebagian besar tantangannya adalah tentang mengubah input dengan cara tertentu.
Jadi saya sangat menikmati menggunakan bahasa ini, dan jika Anda mencari bahasa ascii-art yang khusus, saya sangat merekomendasikannya. Namun , saya juga akan memberikan beberapa penafian.
Sangat membingungkan untuk belajar. Ini juga sangat kuat, tetapi karena didasarkan pada editor teks yang sangat populer yang berusia 30 tahun, ada banyak fitur yang tidak jelas yang dapat dengan mudah membingungkan pengguna baru.
Meskipun lebih baik dalam menangani angka daripada vim, dukungan angka itu masih tidak bagus. Secara pribadi, saya pikir ini membuatnya lebih menyenangkan untuk bekerja (seperti menggunakan retina untuk tugas-tugas yang tidak pernah dimaksudkan oleh regex). : D
Itu masih WIP. Ada beberapa bug, dan beberapa hal yang belum sempat saya tambahkan.
Tidak memiliki banyak pengguna. (Jumlah pengguna saat ini: 1).
Jika Anda tertarik untuk mempelajari lebih lanjut, berikut adalah beberapa sumber yang bagus:
Ruang obrolan tempat saya akan dengan senang hati menjawab pertanyaan apa pun yang Anda miliki, dan membantu menjelaskan cara kerjanya bagi Anda.
Sebuah kiat benang untuk bermain golf di vim, tetapi sebagian besar tips terbawa.
Sebuah posting meta yang menjelaskan V secara lebih rinci.
sumber
Baru-baru ini saya membuat bahasa pemrograman baru, yang disebut Turtlèd , yang beroperasi pada grid karakter dengan kura-kura, yang bergerak di sekitar grid, menulis ke grid, dan memiliki aliran kontrol dengan grid. Kotak dicetak secara implisit di akhir. Dengan fakta bahwa ia tidak harus menulis spasi, dan dapat menulis teks secara spasial, bukan dari kiri ke kanan, naik ke bawah, mungkin membuatnya memenuhi definisi yang diberikan, pandai dalam seni ascii.
Saat ini, tidak ada dokumen, jadi Anda mungkin tidak akan dapat menggunakannya, kecuali jika Anda ingin membaca juru bahasa saya, yang mungkin bukan sesuatu yang ingin Anda lakukan. Saya pikir mungkin juga ada bug dalam interpreter, tetapi speknya tidak cukup berkembang untuk mengatakan apakah itu bug. Turtlèd mungkin akan segera selesai, dengan dokumen dan semuanya
sumber
Pengantar Golf-ASCII untuk 05AB1E (Konversi Basis [Sederhana])
Meskipun 05AB1E tidak ditujukan untuk ASCII-Art secara langsung, saya telah memenangkan 2 tantangan dengannya. Hal terbaik tentang 05AB1E adalah bahwa, bahkan dengan konversi basis sederhana sering ada trik yang dapat Anda gunakan untuk memperluas dan bahkan membagi dua byte-count Anda. Seringkali dalam tantangan ASCII ada trik repitisi yang dapat Anda gunakan untuk hanya menggambar setengah dari pola lalu membalik dan menyatukan. Jika itu adalah pola empat arah, Anda dapat melakukan hal-hal seperti zip dan bifurcate untuk hanya menggambar sudut pola. Ada banyak teknik manipulasi struktur data yang digunakan bersama dengan ide kompresi basis sederhana ini.
Berikut ini kursus kilat cepat tentang taktik konversi basis:
Dalam 05AB1E saya menyebutkan semua karakter yang digunakan dalam ASCII-art, misalnya:
--===___===--
Akan menghasilkan:
Saya kemudian memberi mereka angka dimulai dengan 1 kemudian 0 lalu 2:
Saya mengganti karakter dalam string asli dengan angka:
Saya mengonversi ke desimal menggunakan basis serendah mungkin (3):
( Cara melakukan ini menggunakan 05AB1E )
Saya kemudian mengubahnya menjadi basis 214:
( Cara melakukan ini menggunakan 05AB1E )
Saya kemudian membungkusnya dengan kode berikut:
05AB1E , 16 byte
Cobalah online!
Atau coba dengan langkah-langkah menengah yang ditampilkan.
Final menjelaskan:
Sekarang, dengan tantangan khusus ini, string sangat pendek sehingga tidak masuk akal untuk dilakukan. Saya mungkin hanya mendorong setengah string dan Palindromize untuk 10 byte
"--===__"û
atau golf seperti yang dilakukan Adnan dalam komentar menggunakan faktorial, orang pintar•Jh]•3B5!…-=_‡
. Dia juga (salah satu dari?) Pembuat (s?) Dari 05AB1E.Contoh yang lebih kompleks:
/codegolf//a/106621/59376
Juga, mungkin coba bahasa kolmogorov-kompleksitas Dennis: Bubblegum ; tidak tahu cara menggunakan ini.sumber
•Jh]•3B5!…-=_‡
"--===__"û
untuk 10;).Kuas
Paintbrush adalah bahasa pemrograman rekreasional yang dibuat oleh saya sendiri, Hyper Neutrino, untuk tujuan menjadi ahli di ASCII-Art. Dalam banyak kasus, Arang tidak bersaing dengan baik, tetapi dapat mengambil input dan melakukan berbagai hal lainnya. Ini beroperasi pada grid karakter 2D dan mampu memanipulasi karakter latar belakang, memanipulasi apa yang dianggap sebagai karakter latar belakang pada saat itu, menggeser baris dan kolom, memindahkan baris dan kolom, menyalin baris, kolom, atau seluruh grid, dll.
Beberapa contoh dapat ditemukan di repositori GitHub.
sumber