SMA saya, dan banyak lainnya menerapkan jenis jadwal yang disebut Rotating Block Schedule. Ini adalah cara bagi orang untuk memiliki 8 kelas, tetapi memiliki 6 periode dalam satu hari sekolah.
Ada empat hari dalam jadwal blok yang berulang-ulang, dan tidak ada hubungannya dengan hari-hari sebenarnya dalam seminggu. Masing-masing diberi nomor [1-4]
.
Cara jadwal kerjanya adalah bahwa Anda daftar semua kelas pagi, periode 1-4
: [1, 2, 3, 4]
. Ini adalah jadwal Anda untuk hari pertama, atau Hari 1. Sisa hari hanya memutar daftar: [2, 3, 4, 1]
, [3, 4, 1, 2]
, [4, 1, 2, 3]
.
Namun, periode terakhir di pagi hari adalah "turun" dan Anda tidak melihat guru itu hari itu. Oleh karena itu hari adalah: [1, 2, 3]
, [2, 3, 4]
, [3, 4, 1]
, [4, 1, 2]
.
Sore hari yang sama, kecuali bahwa ia menggunakan periode 5-8
gantinya: [5, 6, 7]
, [6, 7, 8]
, [7, 8, 5]
, [8, 5, 6]
.
Tugas Anda
Semua rotasi ini sulit untuk dilacak, jadi Anda harus menulis sebuah program untuk mencetak jadwal saya mengingat hari apa itu sebagai input. Kode Anda harus menempatkan Beranda dan Makan Siang di tempat yang benar. Berikut ini adalah output yang pasti dari kode Anda untuk input 1-4
:
Homeroom Homeroom Homeroom Homeroom
Period 1 Period 2 Period 3 Period 4
Period 2 Period 3 Period 4 Period 1
Period 3 Period 4 Period 1 Period 2
Lunch Lunch Lunch Lunch
Period 5 Period 6 Period 7 Period 8
Period 6 Period 7 Period 8 Period 5
Period 7 Period 8 Period 5 Period 6
Tapi Tunggu - Satu hal lagi!
Terkadang, pada hari pertama sekolah, atau pada hari-hari khusus lainnya, sekolah saya memiliki "Hari 0". Ini berarti bahwa saya akan memiliki semua kelas saya hari itu bersama wali kelas dan makan siang. Kode Anda harus berurusan dengan Hari 0. Berikut ini adalah output untuk Hari 0:
Homeroom
Period 1
Period 2
Period 3
Period 4
Lunch
Period 5
Period 6
Period 7
Period 8
Ini adalah kode-golf sehingga kode terpendek dalam byte menang!
1, 2, 3, 5, 6, 7
?Jawaban:
Snowman 1.0.2 , 190 byte
Kolom paling kiri itu sebenarnya terlihat cukup bagus, bukan?
...
... siapa saya bercanda, saya lebih suka program dalam PHP daripada ini.
Versi "Dapat dibaca":
Pikiran dan renungan:
Pertama, saya pasti perlu menerapkan cara mencetak baris baru yang lebih cantik. Karena string dengan baris baru di blok berlekuk super jelek.
Saya suka trik saya dengan
ae
- Anda jarang melihatae
operator tanpaE
huruf besar dalam kode Snowman asli. (Kamu juga jarang melihat kode Snowman yang tidak ditulis olehku, tapi itu intinya.)Untuk yang belum tahu, Snowman memiliki dua cara untuk memanggil operator. Mode "Konsumsi", dan mode "non-konsumsi". Mode "Konsumsi" akan memanggil operator dengan variabel yang diminta dan kemudian membuang variabel. Mode non-konsumsi akan memanggil operator dan tetap membiarkan variabel tetap utuh.
Yang biasanya bukan yang Anda inginkan
ae
(masing-masing array), karena blok yang Anda panggil pada setiap elemen akan tetap ada dan menghalangi Anda, menggunakan salah satu dari delapan variabel yang berharga.Namun, ini adalah situasi langka di mana
ae
adalah benar-benar apa yang kita inginkan (lihat komentar dalam kode untuk penjelasan lebih lanjut).Saya benar-benar mulai berpikir bahwa Snowman membutuhkan lebih dari dua mode, selain hanya "mengonsumsi" dan "jangan-konsumsi." Misalnya, dengan
aa
(pada dasarnya pengindeksan array), Anda hanya mendapatkan dua cara untuk menyebutnya:(Snowman tidak menggunakan struktur stack / array, tapi itu hanya digunakan untuk kejelasan di sini.)
Ini cukup umum yang Anda inginkan
["foo" "f"]
(yaitu mengkonsumsi variabel indeks, tetapi bukan yang asli). Ini adalah proses yang sangat berbelit-belit untuk menyingkirkan yang menjengkelkan itu0
jika Anda menggunakan mode "jangan konsumsi".Hal serupa terjadi ketika Anda memanggil "array-masing-masing" dalam mode "jangan-konsumsi", seperti yang dilakukan di sini. Array dan blok tetap ada, bahkan selama eksekusi blok tersebut . Yang ... sangat, sangat aneh.
Kemudian lagi, tujuan desain Snowman adalah untuk membingungkan mungkin, jadi saya tidak yakin apakah ini masalah sama sekali.
sumber
CJam,
6555 byteCobalah online di penerjemah CJam .
sumber
Python 3,
193192182168165 byteHanya solusi cepat.
Python 2, 161 byte
sumber
"\n".join
Pyth, 51 byte
sumber