StickStack adalah bahasa pemrograman berbasis stack yang sangat sederhana dengan hanya dua instruksi:
|
mendorong panjang tumpukan ke tumpukan-
muncul dua elemen teratas dari tumpukan dan mendorong kembali perbedaannya (second topmost - topmost
)
Detail bahasa
- Tumpukan kosong di awal program.
- Semua instruksi dijalankan secara berurutan dari kiri ke kanan.
- Jika ada kurang dari 2 angka di tumpukan,
-
instruksi tersebut ilegal. - Pada akhir eksekusi stack harus berisi tepat satu nomor .
Bilangan bulat apa pun dapat dihasilkan oleh program StickStack. Sebagai contoh:
|||--||-- generates the number 2 through the following stack states:
[]
[0]
[0, 1]
[0, 1, 2]
[0, -1]
[1]
[1, 1]
[1, 1, 2]
[1, -1]
[2]
Untuk mengevaluasi kode StickStack Anda, Anda dapat menggunakan evaluator online (CJam) ini . (Terima kasih atas @Martin untuk kodenya.)
Tugas
Anda harus menulis program atau fungsi yang memberikan angka integer sebagai input output atau mengembalikan string yang mewakili program StickStack yang menampilkan nomor yang diberikan.
Mencetak gol
- Skor utama Anda adalah total panjang program StickStack untuk kasus uji yang diberikan di bawah ini. Skor yang lebih rendah lebih baik.
- Kiriman Anda hanya valid jika Anda menjalankan program pada semua kasus uji dan menghitung skor Anda.
- Skor sekunder (tiebreak) Anda adalah panjang dari program atau fungsi pembangkit Anda.
Masukkan kasus uji
(Setiap angka adalah test case yang berbeda.)
-8607 -6615 -6439 -4596 -4195 -1285 -72 12 254 1331 3366 3956 5075 5518 5971 7184 7639 8630 9201 9730
Program Anda harus bekerja untuk bilangan bulat apa pun (yang tipe data Anda bisa tangani) tidak hanya untuk kasus uji yang diberikan. Solusi untuk nomor tes tidak boleh di-hardcode ke dalam program Anda. Jika ada keraguan tentang hardcoding nomor tes akan diubah.