Skip to content

Instantly share code, notes, and snippets.

@rm77
Created June 4, 2015 07:19
Show Gist options
  • Save rm77/b05651ba2a41d3d37b36 to your computer and use it in GitHub Desktop.
Save rm77/b05651ba2a41d3d37b36 to your computer and use it in GitHub Desktop.
course sequence
import copy
class Course:
def __init__(self,course_id,course_title,course_price,course_level_begin,course_level_end):
self.course_id = course_id
self.course_title = course_title
self.course_price = course_price
self.reputation = 0
self.school = ''
self.course_pre = 0
self.course_post = 0
self.course_level_begin=course_level_begin
self.course_level_end=course_level_end
def set_course_level(self,course_level_begin,course_level_end):
self.course_level_begin = course_level_begin
self.course_level_end = course_level_end
def get_course_level_begin(self):
return self.course_level_begin
def get_course_level_end(self):
return self.course_level_end
def get_id(self):
return self.course_id
def get_course_title(self):
return self.course_title
def set_course_title(self,course_title):
self.course_title = course_title
def set_price(self,price):
self.course_price = price
def get_price(self):
return self.course_price
class Seller:
def __init__(self, name):
self.name = name
self.reputation = 0
self.courses = []
def add_course(self, course_instance):
self.courses.append(course_instance)
def set_reputation(self,rep):
self.reputation = rep
def get_reputation(self):
return self.reputation
class Student:
def __init__(self,name,initial_level,target_level,initial_budget, condition):
self.name = name
self.level = initial_level
self.target_level = target_level
self.budget = initial_budget
self.condition = condition
self.course_catalog = 0
def get_name(self):
return self.name
def get_target_level(self):
return self.target_level
def set_current_level(self,level):
self.level = level
def get_current_level(self):
return self.level
def set_budget(self,budget):
self.budget = budget
def get_current_budget(self):
return self.budget
class CourseSequence:
def __init__(self,course_instance_list,student_instance):
self.courses = course_instance_list
self.student = student_instance
def get_student(self):
return self.student
def get_total_price(self):
total = 0
for x in self.courses:
total = total+ x.get_price()
return total
def is_payable(self):
return (self.get_total_price() <= self.student.get_current_budget())
def is_valid(self):
#print "---MULAI--"
student_target_level = self.student.get_target_level()
student_initial_level = self.student.get_current_level()
course_initial_level = self.courses[0].get_course_level_begin()
rule_1 = (student_initial_level == course_initial_level)
#print "---"
cl_rev = copy.copy(self.courses)
cl_rev.reverse()
kondisi = True
sebelum = cl_rev[0].get_course_level_end()
for x in cl_rev:
#print "nama {} kondisi {} sebelum {} ending {}" . format(x.get_course_title(),kondisi, sebelum, x.get_course_level_end())
kondisi = kondisi and (x.get_course_level_end()>=sebelum)
#print "beginning {}" . format(x.get_course_level_begin())
sebelum = x.get_course_level_begin()
rule_2 = (student_initial_level <= sebelum) and (kondisi==True)
kondisi_2 = kondisi
#print "----"
kondisi = True
sesudah = self.courses[0].get_course_level_begin()
for x in self.courses:
#print "nama {} kondisi{} sesudah{} beginning{}" . format(x.get_course_title(),kondisi, sesudah, x.get_course_level_begin())
kondisi = kondisi and (x.get_course_level_begin()<=sesudah)
#print "ending {}" . format(x.get_course_level_end())
sesudah = x.get_course_level_end()
rule_3 = (student_target_level >= sesudah) and (kondisi==True)
kondisi_3 = kondisi
#print "rule 1 {} rule 2 {} rule 3 {} kondisi_2 {} kondisi_3 {}" . format(rule_1, rule_2, rule_3,kondisi_2,kondisi_3)
#print "---SELESAI--"
return ((rule_1 and rule_2 and rule_3)==True)
if __name__=='__main__':
A = Course('A','Course A',500,1,3)
B = Course('B','Course B',20,3,7)
C = Course('C','Course C',400,1,10)
D = Course('D','Course D',20,1,5)
E = Course('E','Course E',200,5,10)
studentB = Student('Student B',1,10,1000,[])
CS1 = CourseSequence([A,B,C],studentB)
print "Hi {}" . format(CS1.get_student().get_name())
print "Total Price for this sequence {}" . format(CS1.get_total_price())
print "Student can pay ? {}" . format(CS1.is_payable())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment