Cubically terlalu membosankan untuk secara manual menulis kode apa pun. Tantangan Anda adalah menerjemahkan teks ASCII menjadi kode sumber Cubically.
Secara kubik
Ini hanyalah perombakan cepat dari Cubically; yang repositori memiliki panduan yang lebih lengkap dan detail.
Secara kubik adalah esolang yang saya tulis beberapa waktu lalu, dirancang untuk menyakitkan untuk digunakan. Ini berisi dua buah memori, Rubik's Cube 3x3x3 dan register yang disebut "notepad".
Penyimpanan
Kubus Rubik internal diinisialisasi seperti ini:
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 down face
555
Setelah melakukan putaran 90 ° searah jarum jam pada wajah kanan, kubus memori akan terlihat seperti ini:
002
002
002
111225333044
111225333044
111225333044
554
554
554
Perintah
Karakter non-integer menetapkan perintah default. Untuk setiap integer sebelum perintah default ditetapkan sekali lagi, perintah dilakukan dengan integer itu. Misalnya, x524y312
akan melakukan perintah x
dengan 5, lalu dengan 2, lalu dengan 4, kemudian melakukan perintah y
dengan 3, lalu dengan 1, lalu dengan 2.
Bilangan bulat yang digunakan perintah mewakili indeks wajah. Jadi x0
akan tampil x
di wajah UP (0-diindeks). x1
akan tampil x
di wajah KIRI (1-diindeks), dan sebagainya.
Melakukan perintah apa pun dengan 6
akan melakukan perintah itu pada nilai notepad. Melakukan perintah apa pun dengan bilangan bulat apa pun di atas 6 akan menghasilkan kesalahan.
Berikut adalah beberapa contoh perintah:
R1
- putar wajah KANAN 90 ° searah jarum jam sehingga kubus internal akan terlihat seperti contoh kedua di atasR11
- putar wajah KANAN searah jarum jam 90 ° dua kali, identik denganR2
+0
- tambahkan semua nilai wajah UP ke notepad+000
- tambahkan semua nilai wajah UP ke notepad tiga kali@6
- cetak wajah yang diindeks 6 tidak ada (memori) sebagai karakter%4
- cetak jumlah semua nilai pada wajah BACK sebagai integer
Daftar lengkap perintah dan sintaks tersedia di repositori .
Tantangan
Anda akan mengambil teks ASCII sebagai input dan mencetak program Cubically sebagai output.
Contoh (dicuri dari sini dan sini ):
Input -> Output
Hello, World! -> +53@6+1F2L2+0@6L2F2U3R3F1L1+2@66L3F3R1U1B3+0@6:4U1R1+00@6-000@6*0-4+000@6-00@6+2-000000@6-5+4000@6-00@6/0+00@6:0+0/0+00@6
1$2$3$4$5$6$7$8$9$10$ -> B1+2/2%6@4+00/0%6@4+00/1%6@4+21/1%6@4+30/0%6@4+22/1%6@4+22/1%6@4+40/1%6@4+52/1%6@4+42/1%6@4
Aturan
- Program Anda mungkin tidak mengandung kamus yang berisi terjemahan untuk 100 testcases.
- Program Anda harus selesai dalam waktu kurang dari 180 detik (tidak ada program kekerasan yang membutuhkan waktu berminggu-minggu).
- Program Anda harus menampilkan kode Cubically valid yang selesai dalam waktu kurang dari 180 detik.
- Program Anda akan mengambil input melalui input standar, kecuali jika Anda ingin mengacaukan dengan driver tes.
- Program Anda harus menampilkan kode yang tidak menghasilkan apa-apa selain input program Anda ketika dijalankan. ಠ_ಠ
Mencetak gol
Anda akan menguji program Anda dengan 100 pseudorandom string dengan panjang pseudorandom. (Skrip bash disediakan yang akan melakukan ini untuk Anda.) Berikut adalah skor Anda:
- Biarkan panjang program output menjadi o .
- Biarkan panjang string input menjadi l .
- Biarkan variabel r menjadi hasil dari o / l .
- Temukan rata-rata semua r : (r 1 + r 2 + r ... + r 100 ) / 100 .
Uji dengan skrip ini. Anda harus memodifikasinya seperti yang diperintahkan. Perhatikan bahwa program tidak memeriksa apakah outputnya kode Cubically valid. Jika skrip tidak berfungsi, saya dapat membantu. Ping saya di ruang obrolan Cubically .
@6
- mencetak jumlah wajah tanpa indeks 6 yang tidak ada (karakter)" menjadi lebih akurat? Apakah %4
juga jumlah? Apakah +
perintah menjumlahkan wajah lalu menambahkannya ke semua nilai atau ...?
@6
/ %6
langsung mencetak nilai notepad sebagai karakter / integer. @x
/ %x
(di mana x adalah wajah yang ada) menambahkan semua nilai pada x
wajah -indexed dan mencetak penjumlahan sebagai karakter / integer. +
menambahkan semua nilai pada wajah yang ditentukan ke register.