Ringkasan
Bahasa manipulasi string baru telah dibuat, hanya menggunakan karakter $+#-!*|@>
! Tugas Anda adalah mengimplementasikan juru bahasa untuk itu dalam sesedikit mungkin byte.
Memasukkan
String, yang merupakan satu baris dari bahasa ini. Ini dapat diambil dengan cara yang masuk akal (stdin, parameter fungsi, argumen baris perintah, dll.), Atau sebagai variabel yang telah ditentukan. Jika program meminta input pengguna, terima semua input pengguna yang diminta dari stdin dan tidak lebih, lihat di bawah. Anda dapat menganggap itu adalah program yang valid.
Keluaran
Apapun bahasa yang akan ditampilkan, spesifikasi di bawah ini. Anda harus mengeluarkan string, dengan cara apa pun yang masuk akal (stdout, keluaran fungsi, dll.), Atau nilai variabel. Saat bahasa dikeluarkan secara eksplisit, ini harus menuju ke stdout. Celah standar dilarang.
Spesifikasi Bahasa
Pemrosesan dan Sintaks
Bahasa ini memiliki bentuk pemrosesan yang sangat sederhana karena hanya memanipulasi string: dimulai dengan string kosong ( ""
), dan mengubahnya dengan setiap istilah. Suatu istilah terdiri dari satu atau dua bagian: fungsi (di bawah) diikuti oleh kemungkinan parameter (di bawah), yang mengedit perilakunya. Ketentuan dipisahkan oleh pipa ( |
). Anda mungkin menganggap itu bukan program yang kosong, dan tidak ada istilah yang kosong. Anda harus menampilkan nilai di akhir program.
Fungsi
Bahasa hanya memiliki 6 fungsi, seperti yang ditunjukkan di bawah ini. Setiap fungsi dapat menerima satu atau nol parameter.
+
concatenate strings (mengambil satu parameter string, menggabungkannya ke nilai saat ini)!
membalikkan urutan karakter dari nilai saat ini (tanpa parameter)*
ulangi string (ambil satu parameter integer, ulangi nilai saat ini yang berkali-kali)-
menghapus semua kemunculan suatu nilai (mengambil satu parameter string, menghapus semua kemunculan dari nilai saat ini)$
[pseudo-] mengacak nilai saat ini secara acak (tanpa parameter)<
output nilai saat ini kestdout
(tanpa parameter)
Nilai-nilai
Ini adalah nilai-nilai yang dapat diteruskan ke fungsi, diwakili oleh regex yang akan cocok dengan mereka:
@[^|]*
string literal, termasuk karakter apa pun selain pipa. Mungkin kosong.#[0-9]+
sebuah literal integer>
baris berikutnyastdin
. Jika digunakan dengan*
, konversikan ke integer.
Uji Kasus
╔════════════════════════╤═════════════╤══════════════╗
║code │input │output ║
╟────────────────────────┼─────────────┼──────────────╢
║+>|!|+@hello|*> │13 │31hello31hello║
║ │2 │ ║
╟────────────────────────┼─────────────┼──────────────╢
║+>|+@abcdefg|$ │hello │hcloeebafdlg ║
╟────────────────────────┼─────────────┼──────────────╢
║+@how areyou|-@o|-> │w │h areyu ║
╟────────────────────────┼─────────────┼──────────────╢
║+@out|<|*#3 │ │out ║
║ │ │outoutout ║
╟────────────────────────┼─────────────┼──────────────╢
║+> │what ever 345│what ever 345 ║
╟────────────────────────┼─────────────┼──────────────╢
║+@$pe<i@l|<|-@$pe<i@l|+>│A|$o $pe<!@| │$pe<i@l ║
║ │ │A|$o $pe<!@| ║
╟────────────────────────┼─────────────┼──────────────╢
║<|+>|!|< │input text | ║
║ │ │txet tupni ║
║ │ │txet tupni ║
╟────────────────────────┼─────────────┼──────────────╢
║+@># │ |># ║
╚════════════════════════╧═════════════╧══════════════╝
Perhatikan bahwa test case 2 adalah acak, sehingga permutasi karakter di dalamnya valid. Juga, output dalam tabel dipisahkan oleh baris baru, tetapi program Anda tidak harus melakukan hal yang sama. Nilai terakhir dalam setiap kasus adalah hasil akhir.
Contoh (Un-golfed) juru bahasa python
Cobalah online! IMO lebih baik jika Anda menjalankannya melalui IDLE atau apa pun yang Anda gunakan. (Saya menurunkannya menjadi 424 byte setelahnya, tapi saya yakin Anda bisa melakukan lebih baik).
sumber
<
ditemukan. Apakah ini wajib?+@>#
,? Saya#
juga menggunakan .Jawaban:
Ruby
-palF\|
,146142 byteCobalah online!
Port of Chas Brown menjawab Python . Tidak mencetak baris baru setelah keluaran.
Seperti biasa, versi Ruby 2.6 akan lebih pendek 2 byte dengan pengindeksan rentang tanpa akhir (
i[2..]
).sumber
R ,
287286273269 byteCobalah online!
Kode dan penjelasan yang belum dibuka:
sumber
Python 2 ,
215219209208 byteCobalah online!
-4 karena
raw_input
diperlukan.9 byte berkat Perwujudan Ketidaktahuan ; 1 byte dari Ascii-only .
sumber
raw_input
. Perbaiki saya jika saya salah ..input([prompt])
Setara dengan eval (raw_input (prompt)). Fungsi ini tidak menangkap kesalahan pengguna. Jika input tidak valid secara sintaksis, sebuah SyntaxError akan dimunculkan.C # (Visual C # Interactive Compiler) , 305 byte
Cobalah online!
sumber
Perl 5
-MList::Util=shuffle -pF/\|/
,220217210183 byteCobalah online!
sumber
Javascript,
292267 byteJSFiddle
sumber