CAPL 1.5+; 6 tanpa input; 10 - 10 = 0 dengan input
Sidenote
Saya telah membaca di suatu tempat [tautan?] Bahwa bahasa khusus tidak diperbolehkan dalam pertanyaan golf, karena mereka dapat membuat fungsi bawaan yang melakukan persis apa yang ditanyakan, namun saya membuat CAPL untuk membuat golf lebih mudah secara umum . Jika Anda pikir ini tidak diperbolehkan di sini, beri tahu saya!
Saya mendapat beberapa ide dari > <> dan Befunge (Anda dapat berpindah di antara baris dan menggunakan karakter heksadesimal untuk menekan angka), beberapa dari Ruby dan beberapa dari saya sendiri untuk membuat bermain golf lebih mudah.
CAPL membaca dari kiri ke kanan, dan turun satu baris di akhir baris. Jika ini sebagai baris terakhir, program akan berhenti.
Karena belum ada yang tahu bahasa ini, saya akan mencoba menjelaskan sebanyak mungkin.
Keluaran y. 6 byte
bb*.n<
bb*
b
adalah heksadesimal untuk 11
, demikian bb*
juga 11*11
= 121
, yang merupakan setara dengan UTF-8 dari y
. Nilai ini didorong ke tumpukan.
.
Pops nilai teratas dari tumpukan, dan output sebagai UTF-8. Seperti 121
di atas tumpukan, indeks diabaikan di sini.
n
Outputs a newline
<
Mengirim pointer kembali ke awal baris, sehingga mengulangi baris itu. Karena kami tidak mengharapkan input, kami dapat melakukan ini dengan aman tanpa meminta kembali input tersebut.
Mengeluarkan dari input. 10 byte, 0 setelah bonus
i~a&{X:.)}
i
Mengambil input dari pengguna, mendorong sebagai UTF-8 di bagian atas tumpukan, dan mendorong panjang setelah itu. Yaitu [72,101,108,108,111,5]
~
Memunculkan nomor dari tumpukan, lalu membalikkan jumlah byte itu. Yaitu [111,108,108,101,72]
a
Heksadesimal untuk 10
, karakter baris baru
&{...}
Membuat loop tak terbatas. Kami memiliki input, jadi kami tidak dapat mengirim pointer kembali ke baris. Saya dapat menempatkan fungsi pada baris di bawah ini, yang akan menyelamatkan saya satu byte, tetapi baris baru tidak diizinkan dalam tantangan ini.
X
Menghapus nilai teratas dari tumpukan (Indeks dari loop)
:.
Menduplikat nilai atas, lalu mengeluarkannya sebagai UTF-8.
)
Memutar tumpukan ke kanan. ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
Bagaimanapun, ini berarti kita mulai dengan baris baru, kemudian mulai mengeluarkan input, lalu baris baru, kemudian input, dll. Jika kita tidak diizinkan untuk memulai dengan baris baru, gunakan kode berikut dengan 12 byte, atau 2 setelah mengurangi bonus.
iXa#~&{X:.)}
Satu-satunya perintah baru di sini adalah #
, yang mendorong jumlah item pada stack ke stack.
Saya menghapus panjang dari i
, karena menambahkan 1, kemudian bertukar dengan baris baru lebih lama daripada menghapus dan mendapatkan panjang lagi.
Hanya untuk bersenang-senang, ini adalah program "Hello World"
"Hello World"#~
#?!;.<
The ?!
operasi adalah sama> <> 's
y
atau\n
di dalam string literal"?