From 1d9329ca65ee3e7f9a89b917d327ed4a85825eaa Mon Sep 17 00:00:00 2001 From: RedStone576 Date: Fri, 21 Aug 2026 00:53:46 +0700 Subject: [PATCH] shit3 --- format2.js | 200 ++++++++++++ readme.md | 5 + schedule.txt => schedule.md | 0 schedule_empty.md | 598 ++++++++++++++++++++++++++++++++++++ 4 files changed, 803 insertions(+) create mode 100644 format2.js rename schedule.txt => schedule.md (100%) create mode 100644 schedule_empty.md diff --git a/format2.js b/format2.js new file mode 100644 index 0000000..7aebe51 --- /dev/null +++ b/format2.js @@ -0,0 +1,200 @@ +// this one written by claude, it is shit so dont blame me for any misaccuracy LOL + +const { readFile } = require("node:fs/promises") +const FILES = [ + "01.json", + "06.json", + "10.json" +] +const OPEN_TIME = "08:00" +const CLOSE_TIME = "17:00" +const DAY_ORDER = { + "Senin": 1, + "Selasa": 2, + "Rabu": 3, + "Kamis": 4, + "Jumat": 5, + "Sabtu": 6, + "Minggu": 7 +} + +async function loadFiles() +{ + const results = await Promise.all(FILES.map(async file => + { + const content = await readFile(file, "utf8") + const json = JSON.parse(content) + return json.data + })) + return results.flat() +} + +function parseDateRoom(value) +{ + const match = value.match(/^([^,]+),\s*(\d{2}[:.]\d{2})-(\d{2}[:.]\d{2})\s+\((.*)$/) + if (!match) return null + const [ , day, rawStart, rawEnd, rawRoom] = match + const start = rawStart.replace(".", ":") + const end = rawEnd.replace(".", ":") + const room = rawRoom.endsWith(")") ? rawRoom.slice(0, -1) : rawRoom + return { day, start, end, room } +} + +function timeToMinutes(time) +{ + const [hours, minutes] = time.split(":").map(Number) + return hours * 60 + minutes +} + +function minutesToTime(minutes) +{ + const hours = Math.floor(minutes / 60) + const mins = minutes % 60 + return `${String(hours).padStart(2, '0')}:${String(mins).padStart(2, '0')}` +} + +function buildSchedule(classes) +{ + const schedule = new Map() + for (const classInfo of classes) + { + if (!Array.isArray(classInfo.dates_rooms)) + { + console.warn(`Skipping ${classInfo.classname}: invalid dates_rooms`) + continue + } + for (const dateRoom of classInfo.dates_rooms) + { + const parsed = parseDateRoom(dateRoom) + if (!parsed) + { + console.warn(`Could not parse: ${dateRoom}`) + continue + } + const { day, start, end, room } = parsed + if (!schedule.has(room)) + { + schedule.set(room, new Map()) + } + const roomSchedule = schedule.get(room) + if (!roomSchedule.has(day)) + { + roomSchedule.set(day, []) + } + roomSchedule.get(day).push({ + start, + end, + className: classInfo.classname + }) + } + } + return schedule +} + +function buildEmptySchedule(schedule) +{ + const emptySchedule = new Map() + const dayStartMin = timeToMinutes(OPEN_TIME) + const dayEndMin = timeToMinutes(CLOSE_TIME) + + for (const [room, roomSchedule] of schedule) + { + emptySchedule.set(room, new Map()) + + // Process all days + for (const day of Object.keys(DAY_ORDER)) + { + const classes = roomSchedule.get(day) || [] + + if (classes.length === 0) + { + // No classes = room won't be opened that day + continue + } + + // Sort classes by start time + const sorted = classes.sort((a, b) => timeToMinutes(a.start) - timeToMinutes(b.start)) + const emptySlots = [] + + let currentTime = dayStartMin + + for (const classInfo of sorted) + { + const classStart = timeToMinutes(classInfo.start) + const classEnd = timeToMinutes(classInfo.end) + + // Gap before this class + if (currentTime < classStart) + { + emptySlots.push({ + start: minutesToTime(currentTime), + end: classInfo.start + }) + } + + // Move current time to after this class (or keep it if overlapping) + currentTime = Math.max(currentTime, classEnd) + } + + // Gap after last class + if (currentTime < dayEndMin) + { + emptySlots.push({ + start: minutesToTime(currentTime), + end: CLOSE_TIME + }) + } + + // Only add day if there are empty slots + if (emptySlots.length > 0) + { + emptySchedule.get(room).set(day, emptySlots) + } + } + } + + return emptySchedule +} + +function formatEmptySchedule(emptySchedule) +{ + const lines = [] + const rooms = [...emptySchedule.keys()].sort((a, b) => a.localeCompare(b)) + + for (const room of rooms) + { + const roomSchedule = emptySchedule.get(room) + lines.push(`- ${room} (${OPEN_TIME}-${CLOSE_TIME})`) + + const days = [...roomSchedule.keys()].sort((a, b) => DAY_ORDER[a] - DAY_ORDER[b]) + + for (const day of days) + { + const emptySlots = roomSchedule.get(day) + lines.push(` - ${day}:`) + + for (const slot of emptySlots) + { + lines.push(` - ${slot.start} - ${slot.end} (KOSONG)`) + } + } + lines.push("") + } + + return lines.join("\n") +} + +///////////////// +async function main() +{ + const cl = await loadFiles() + const sc = buildSchedule(cl) + const emptySchedule = buildEmptySchedule(sc) + console.log(formatEmptySchedule(emptySchedule)) +} + +main().catch(error => +{ + console.error(error) + process.exitCode = 1 +}) diff --git a/readme.md b/readme.md index beb382e..12a8408 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,8 @@ - IK: `https://slcm.ui.ac.id/akademik/api/v1/class/whole?org=01.00.12.01&year=2026&term=1&lang=id` - SI: `https://slcm.ui.ac.id/akademik/api/v1/class/whole?org=06.00.12.01&year=2026&term=1&lang=id` - KA: `https://slcm.ui.ac.id/akademik/api/v1/class/whole?org=10.00.12.01&year=2026&term=1&lang=id` + +dibuat berdasarkan asumsi bahwa: +- sebelum jam 08:00 ruangan sudah tidak dikunci +- sebelum jam 18:00 ruangan sudah harus dikunci +- bila tidak ada kelas pada suatu hari tertentu, maka ruangan tidak akan dibuka diff --git a/schedule.txt b/schedule.md similarity index 100% rename from schedule.txt rename to schedule.md diff --git a/schedule_empty.md b/schedule_empty.md new file mode 100644 index 0000000..a1efc62 --- /dev/null +++ b/schedule_empty.md @@ -0,0 +1,598 @@ +- A1.09 (Ged Baru) (08:00-17:00) + - Senin: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + +- A1.10 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 14:00 (KOSONG) + - 14:50 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 15:00 (KOSONG) + - 15:50 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 17:00 (KOSONG) + +- A1.51 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 11:00 (KOSONG) + - 11:50 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 13:00 (KOSONG) + - 13:50 - 16:00 (KOSONG) + - Jumat: + - 09:40 - 17:00 (KOSONG) + +- A2.01 (Auditorium Ged Baru-1) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 15:00 (KOSONG) + - 15:50 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 17:00 (KOSONG) + +- A2.01 (Auditorium Ged baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 15:00 (KOSONG) + - 15:50 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 13:50 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 17:00 (KOSONG) + +- A2.06 (Ged Baru) --- Lab Laptop (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 15:00 (KOSONG) + - 15:50 - 16:00 (KOSONG) + - Kamis: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 11:00 (KOSONG) + - 11:50 - 13:00 (KOSONG) + - 13:50 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Jumat: + - 09:40 - 17:00 (KOSONG) + +- A2.07 (Ged baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 15:30 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 15:30 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 17:00 (KOSONG) + +- A2.08 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 17:00 (KOSONG) + - Rabu: + - 09:40 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + - Kamis: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 10:00 (KOSONG) + - 11:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + +- A2.09 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:50 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 10:50 - 13:00 (KOSONG) + - 13:50 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 17:00 (KOSONG) + +- A2.51 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 09:40 - 11:00 (KOSONG) + - 11:50 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Kamis: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + +- A3.05 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:50 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 17:00 (KOSONG) + +- A3.06 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 15:50 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 13:00 (KOSONG) + - 13:50 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Jumat: + - 09:40 - 17:00 (KOSONG) + +- A3.54 (Ged Baru) (08:00-17:00) + - Senin: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 17:00 (KOSONG) + - Jumat: + - 09:50 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + +- A5.03 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 16:00 (KOSONG) + - Jumat: + - 08:00 - 09:00 (KOSONG) + - 10:40 - 17:00 (KOSONG) + +- A5.51 (Ged Baru) (08:00-17:00) + - Senin: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 16:00 (KOSONG) + - Jumat: + - 08:50 - 17:00 (KOSONG) + +- A6.01 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 15:00 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 11:00 (KOSONG) + - 11:50 - 13:00 (KOSONG) + - 15:00 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 17:00 (KOSONG) + +- A6.02 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - Rabu: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 11:00 (KOSONG) + - 11:50 - 16:00 (KOSONG) + - Jumat: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 17:00 (KOSONG) + +- A6.07 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 16:00 (KOSONG) + - Jumat: + - 08:50 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + +- A6.08 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 15:50 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + - Jumat: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + +- A6.09 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 16:00 (KOSONG) + - Jumat: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 11:40 - 17:00 (KOSONG) + +- A6.10 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Kamis: + - 08:00 - 11:00 (KOSONG) + - 11:50 - 13:00 (KOSONG) + - 13:50 - 15:00 (KOSONG) + - 15:50 - 17:00 (KOSONG) + - Jumat: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + +- A6.11 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 11:00 (KOSONG) + - 11:50 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Kamis: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 13:50 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 10:50 - 17:00 (KOSONG) + +- A6.12 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:50 - 17:00 (KOSONG) + - Rabu: + - 09:40 - 10:00 (KOSONG) + - 10:50 - 14:00 (KOSONG) + - 14:50 - 16:00 (KOSONG) + - Kamis: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 10:50 - 15:00 (KOSONG) + - 15:50 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 10:00 (KOSONG) + - 10:50 - 17:00 (KOSONG) + +- A7.13 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:40 - 17:00 (KOSONG) + - Selasa: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 13:00 (KOSONG) + - 14:50 - 16:00 (KOSONG) + - 16:50 - 17:00 (KOSONG) + - Rabu: + - 09:40 - 11:00 (KOSONG) + - 11:50 - 14:00 (KOSONG) + - 14:50 - 17:00 (KOSONG) + - Kamis: + - 08:50 - 09:00 (KOSONG) + - 09:50 - 10:00 (KOSONG) + - 10:50 - 11:00 (KOSONG) + - 11:50 - 17:00 (KOSONG) + +- Lab A1.01+Lab A1.02 - Gabungan (Gd Baru) (08:00-17:00) + - Senin: + - 09:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 13:00 (KOSONG) + - 13:50 - 16:00 (KOSONG) + - Rabu: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 10:00 (KOSONG) + - 11:00 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + +- Lab A1.03 (Ged Baru) (08:00-17:00) + - Senin: + - 09:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 13:00 (KOSONG) + - 13:50 - 16:00 (KOSONG) + - Rabu: + - 09:40 - 16:00 (KOSONG) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 10:00 (KOSONG) + - 11:00 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + +- Lab A1.04+Lab A3.02 - Gabungan (Gd. Baru (08:00-17:00) + - Senin: + - 09:40 - 17:00 (KOSONG) + - Selasa: + - 08:00 - 16:00 (KOSONG) + - Rabu: + - 09:40 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 16:00 (KOSONG) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 14:40 - 16:00 (KOSONG) + - Jumat: + - 08:00 - 10:00 (KOSONG) + - 11:00 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + +- Lab A3.02 (Gd. Baru) --- PC 45 (08:00-17:00) + - Senin: + - 08:00 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Rabu: + - 08:00 - 09:00 (KOSONG) + - 09:50 - 17:00 (KOSONG) + +- Lab.1101/1103 --- PC 46 (08:00-17:00) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 14:40 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 10:00 (KOSONG) + - 11:40 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + +- Lab.1105 --- PC 24 (08:00-17:00) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 13:50 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) + +- Lab.1107/1109 --- PC 34 (08:00-17:00) + - Kamis: + - 08:00 - 13:00 (KOSONG) + - 13:50 - 15:00 (KOSONG) + - 16:40 - 17:00 (KOSONG) + - Jumat: + - 08:00 - 14:00 (KOSONG) + - 15:40 - 17:00 (KOSONG) +