Pastikan untuk melihat tantangan lain, peta karakter Reverse ASCII !
Charset ASCII (Kode Standar Amerika untuk Pertukaran Informasi) adalah standar pengkodean karakter yang paling banyak digunakan. Kode ASCII mewakili teks dalam komputer, peralatan telekomunikasi, dan perangkat lainnya.
Tantangan
Tantangan Anda adalah mencetak pemetaan karakter ASCII yang ditetapkan oleh pengguna. GIF:
Setelah pengguna memasukkan setiap karakter ASCII, hasilnya akan terlihat seperti ini:
Pemetaan
Setiap karakter memiliki posisi yang ditetapkan pada kisi logis 16x6, dimulai dengan karakter spasi di posisi kiri atas, dan membungkus sedemikian rupa sehingga angka 0 muncul di bawahnya.
Ketika input ASCII yang dapat dicetak diterima, cetak karakter ASCII itu di lokasi layar yang ditetapkan tanpa menghapus karakter apa pun yang ada di layar.
Aturan
- Program Anda hanya perlu memetakan karakter ASCII yang dapat dicetak,
0x20
untuk0x7E
. - Program Anda tidak boleh berhenti dan terus memetakan karakter ke layar sampai semua karakter ASCII yang dapat dicetak dimasukkan. Dari sini, program Anda bisa berakhir atau lari ke Neverland.
- Program Anda dapat memetakan karakter dengan cara apa pun yang Anda suka, misalnya ke spreadsheet, tabel, jendela konsol, atau jendela grafis.
- Tidak peduli bagaimana Anda menampilkan pemetaan, itu harus diperbarui dalam waktu nyata (segera setelah menerima input pengguna).
- Jika program Anda tidak membaca input secara diam-diam, ia harus mengeluarkan kursor, sehingga teks tidak akan menghalangi peta.
Membantu
Berikut adalah algoritma pseudocode yang saya gunakan untuk menghasilkan GIF:
loop forever
c = input
y_coord = c / 16
x_coord = c - y * 16
if c is printable
print c at (x_coord * 2 + 1, y_coord + 1)
end if
end loop
Mungkin ada cara lain untuk mencapai output yang dibutuhkan. Anda dapat memilih untuk menggunakan algoritme saya atau algoritme Anda, tetapi hasilnya harus tetap sama.
Inilah referensi tabel ASCII yang berguna.
Mencetak gol
Jawaban dengan byte terkecil di setiap bahasa menang. Selamat bersenang-senang!
Jawaban:
QBIC ,
5357 byteMenambahkan 4 byte untuk spasi.
QBIC memulai pengembangan sebagai singkatan untuk QBasic, jadi saya pikir menerjemahkan jawaban QBasic saya akan menunjukkan hal ini dengan baik. Kami telah menyimpan sekitar 40% dalam byte-count untuk program fungsional identik - dan itu bahkan ketika
LOCATE
,ASC
, danCHR
tidak memiliki Qbic-fungsi belum. Untungnya, QBIC dapat mengirimkan kode langsung ke QBasic untuk mengkompensasi hal ini. Berdampingan:sumber
JavaScript (ES6) + HTML, 114 + 16 = 130 byte
Disimpan 16 byte berkat @Shaggy
Sangat luar biasa memuaskan hanya dengan menumbuk keyboard ...
sumber
prompt()
dalam satu lingkaran? Ini akan menyelamatkan Anda dari semua penanganan acara dan HTML. OP tampaknya mengizinkannya. Lihat komentar posting Mathematica.onkeypress
sendiri, memungkinkan Anda untuk melepaskanbody
tag. Juga,pre
tag dapat disingkat menjadi adil<pre id=O
. Meskipun demikian, Anda harus menyertakan penutup>
agar bisa berfungsi dalam Cuplikan.QBasic 4.5,
8185 byteMenambahkan 4 byte untuk mematuhi aturan spasi.
Dan hasilnya akan terlihat seperti ini (CATATAN: Screenshot lama, sekarang setiap karakter dipisahkan oleh spasi):
QBasic memiliki
LOCATE
perintah, yang berguna di sini. Rincian kode ini:sumber
Java 8 , 143 byte
Menggunakan kode kontrol ANSI
CSI n ; m f
untuk mengatur posisi kursor danConsole.readPassword()
membaca input pengguna secara diam-diam. Output dari beberapa karakter:sumber
readPassword()
digunakan seperti itu. Oh, dan Anda tampaknya kehilangan titik koma setelah println. Juga, bukankah mungkin untuk menggunakanSystem.out.printf
entah bagaimana, bukanSystem.out.println(String.format(
? Dan Anda dapat mengubah()->
keo->
dengan menggunakan parameter kosong yang tidak terpakai .BrainFuck , 355 Bytes
Opsi BrainFuck sangat terbatas, sehingga output ada di terminal dan layar "dihapus" dengan 20 baris baru. Input harus berupa karakter ASCII, dipisahkan oleh baris baru.
Cobalah online!
Diformat dan Didokumentasikan
Ini adalah catatan debug yang saya gunakan untuk menulis program. Saya menggunakan juru bahasa saya yang secara opsional dapat mencetak keadaan rekaman di setiap karakter '~' untuk debugging.
sumber
Mathematica, 108 byte
Cobalah online di https://sandbox.open.wolframcloud.com/
Ketika Anda menempelkan kode dan menekan
Shift+Enter
, kotak dialog akan muncul, Anda masuk"a"
misalnya untuk karaktera
. Program berjalan selamanya.Catatan: Di kotak pasir Wolfram, font diformat berbeda dari yang ada di Mathematica di komputer saya. Jadi spasi baris / kolom mungkin terlihat aneh.
sumber
OK
kotak input, kotak input lain muncul untuk Anda masukkan input.Python 2 , 115 byte
Cobalah online!
Membutuhkan tanda kutip (tunggal atau ganda) di sekitar karakter yang dimasukkan (versi TIO tidak).
sumber
raw_input
keinput
karena sensus masyarakat yang Anda dapat mengasumsikan input memiliki tanda kutip jika diperlukan.{
tanpa pencocokan}
.str , tidak bersaing, 18 byte
Mempresentasikan bahasa semi-esoterik baru saya.
sumber
Haskell, 133 byte
Membutuhkan terminal yang memahami urutan pelarian ANSI.
Lebih pendek untuk membuat daftar semua tombol ditekan sejauh ini dan membersihkan layar sebelum mencetak semuanya masing-masing daripada mematikan gema di sesi terminal. Yang terakhir membutuhkan
import System.IO
danhSetEcho stdin(2<1)
yang biaya byte terlalu banyak.sumber
C, 101 byte
Ini adalah program yang saya gunakan untuk membuat grafik. Output seperti yang ditunjukkan dalam GIF. ;)
sumber
QBasic,
6258 byteDiuji dengan QB64 . Seharusnya berfungsi dengan baik pada QBasic biasa, juga, meskipun Anda mungkin ingin memodifikasinya untuk melakukan
CLS
yang pertama kali dijalankan.Mirip dengan jawaban steenbergh , tetapi digunakan
INPUT$(1)
untuk membaca karakter satu per satu. Pendekatan ini lebih pendek dan juga tidak menampilkan prompt. Ini juga digunakanRUN
untuk infinite loop, karena kita tidak harus menyimpan keadaan apa pun di antara iterasi kecuali keadaan layar.sumber
input$()
. Saya suka topik TIPS juga btw.Pascal, 112 karakter
Karena solusi Mathematica saya membutuhkan banyak byte
div
,mod
danToCharacterCode[Input[]]
, saya mencoba membuat jawaban lain dengan Pascal. Tapi tanpaClrScr
kompiler saya (FPC) meninggalkan beberapa informasi kompilasi di layar.ClrScr;
membutuhkan 7 byte.The
*2
digunakan untuk jarak yang tepat memakan waktu 2 bytes.sumber
LOGO, 90 byte
Cobalah di FMSLogo.
Bagaimanapun, solusi Logo saya adalah yang terpendek, dibandingkan dengan jawaban Mathematica dan Pascal saya.
Tambahkan 3 byte jika kura-kura harus disembunyikan.
sumber
6502 kode mesin + Apple // e ROM, 31 byte
Hex dump:
Majelis yang dikomentari:
Jika kursor membatalkannya, inilah versi 36 byte tanpa kursor:
sumber
Ruby,
797571 + 13 = 84 byte+13 byte untuk
-rio/console
bendera.Tidak disatukan
sumber
SmileBASIC 3, 82 byte
Dalam rangkaian karakter SmileBASIC,
¥
terletak di tempat yang\
biasanya; semoga ini tidak membatalkan jawaban ini sepenuhnya.sumber
Applesoft BASIC , 134 byte
Ini adalah versi golf dari Apple] [tes keyboard, program yang menginspirasi tantangan.
sumber