├── Lab1-1190200208 ├── .idea │ ├── .gitignore │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ └── workspace.xml ├── .replit ├── Lab1-1190200208.iml ├── README.md ├── doc │ └── Lab-1 1190200208 李旻翀.docx ├── lib │ ├── hamcrest-core-1.3.jar │ └── junit-4.12.jar ├── out │ ├── production │ │ └── Lab1-1190200208 │ │ │ ├── P1 │ │ │ └── MagicSquare.class │ │ │ ├── P2 │ │ │ ├── .classpath │ │ │ ├── .gitignore │ │ │ ├── .project │ │ │ ├── rules │ │ │ │ ├── RulesOf6005.class │ │ │ │ └── RulesOf6005Test.class │ │ │ └── turtle │ │ │ │ ├── Action$ActionType.class │ │ │ │ ├── Action.class │ │ │ │ ├── DrawableTurtle.class │ │ │ │ ├── LineSegment.class │ │ │ │ ├── PenColor.class │ │ │ │ ├── Point.class │ │ │ │ ├── Turtle.class │ │ │ │ ├── TurtleGUI$1.class │ │ │ │ ├── TurtleGUI$AnimationThread.class │ │ │ │ ├── TurtleGUI.class │ │ │ │ ├── TurtleSoup.class │ │ │ │ └── TurtleSoupTest.class │ │ │ └── P3 │ │ │ ├── FriendshipGraph.class │ │ │ └── Person.class │ └── test │ │ └── Lab1-1190200208 │ │ └── P3 │ │ └── FriendshipGraphTest.class ├── src │ ├── P1 │ │ ├── MagicSquare.java │ │ └── txt │ │ │ ├── 1.txt │ │ │ ├── 2.txt │ │ │ ├── 3.txt │ │ │ ├── 4.txt │ │ │ ├── 5.txt │ │ │ └── 6.txt │ ├── P2 │ │ ├── .classpath │ │ ├── .gitignore │ │ ├── .project │ │ ├── rules │ │ │ ├── RulesOf6005.java │ │ │ └── RulesOf6005Test.java │ │ └── turtle │ │ │ ├── Action.java │ │ │ ├── DrawableTurtle.java │ │ │ ├── LineSegment.java │ │ │ ├── PenColor.java │ │ │ ├── Point.java │ │ │ ├── Turtle.java │ │ │ ├── TurtleGUI.java │ │ │ ├── TurtleSoup.java │ │ │ └── TurtleSoupTest.java │ └── P3 │ │ ├── FriendshipGraph.java │ │ └── Person.java └── test │ └── P3 │ └── FriendshipGraphTest.java ├── Lab2-1190200208 ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── jarRepositories.xml │ ├── libraries │ │ └── hamcrest_all_1_3.xml │ ├── misc.xml │ ├── vcs.xml │ └── workspace.xml ├── .replit ├── .travis.yml ├── Lab2-1190200208.iml ├── README.md ├── doc │ └── Lab2-1190200208-Report.docx ├── lab2图片.pptx ├── lib │ ├── hamcrest-all-1.3.jar │ ├── hamcrest-core-1.3.jar │ └── junit-4.12.jar ├── pom.xml ├── src │ ├── P1 │ │ ├── .classpath │ │ ├── .gitignore │ │ ├── .project │ │ ├── graph │ │ │ ├── ConcreteEdgesGraph.java │ │ │ ├── ConcreteVerticesGraph.java │ │ │ └── Graph.java │ │ └── poet │ │ │ ├── GraphPoet.java │ │ │ ├── Main.java │ │ │ ├── Sonnet I to X.txt │ │ │ ├── The Gettysburg Address.txt │ │ │ ├── Where no man has gone before.txt │ │ │ ├── hello goodbye.txt │ │ │ └── mugar-omni-theater.txt │ └── P2 │ │ ├── FriendshipGraph.java │ │ └── Person.java ├── target │ ├── classes │ │ ├── P1 │ │ │ ├── .classpath │ │ │ ├── .gitignore │ │ │ ├── .project │ │ │ ├── graph │ │ │ │ ├── ConcreteEdgesGraph.class │ │ │ │ ├── ConcreteVerticesGraph.class │ │ │ │ ├── Edge.class │ │ │ │ ├── Graph.class │ │ │ │ └── Vertex.class │ │ │ └── poet │ │ │ │ ├── GraphPoet.class │ │ │ │ ├── Main.class │ │ │ │ ├── Sonnet I to X.txt │ │ │ │ ├── The Gettysburg Address.txt │ │ │ │ ├── Where no man has gone before.txt │ │ │ │ ├── hello goodbye.txt │ │ │ │ └── mugar-omni-theater.txt │ │ └── P2 │ │ │ ├── FriendshipGraph.class │ │ │ └── Person.class │ └── test-classes │ │ ├── P1 │ │ ├── graph │ │ │ ├── ConcreteEdgesGraphTest.class │ │ │ ├── ConcreteVerticesGraphTest.class │ │ │ ├── GraphInstanceTest.class │ │ │ └── GraphStaticTest.class │ │ └── poet │ │ │ └── GraphPoetTest.class │ │ └── P2 │ │ └── FriendshipGraphTest.class ├── test │ ├── P1 │ │ ├── graph │ │ │ ├── ConcreteEdgesGraphTest.java │ │ │ ├── ConcreteVerticesGraphTest.java │ │ │ ├── GraphInstanceTest.java │ │ │ └── GraphStaticTest.java │ │ └── poet │ │ │ └── GraphPoetTest.java │ └── P2 │ │ └── FriendshipGraphTest.java └── 习题课2:adt设计.pdf ├── Lab3-1190200208-change └── change │ ├── .github │ └── workflows │ │ └── maven.yml │ ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── dataSources.local.xml │ ├── inspectionProfiles │ │ └── Project_Default.xml │ ├── jarRepositories.xml │ ├── misc.xml │ ├── uiDesigner.xml │ ├── vcs.xml │ └── workspace.xml │ ├── .replit │ ├── README.md │ ├── doc │ └── Lab3-1190200208-Report.docx │ ├── lib │ ├── hamcrest-core-1.3.jar │ └── junit-4.12.jar │ ├── pom.xml │ ├── src │ ├── ADT │ │ ├── Interval │ │ │ ├── CommonIntervalSet.java │ │ │ ├── IntervalSet.java │ │ │ ├── IntervalSetDecorator.java │ │ │ ├── NoBlankIntervalSet.java │ │ │ └── NonOverlapIntervalSet.java │ │ └── MultiInterval │ │ │ ├── CommonMultiIntervalSet.java │ │ │ ├── MultiIntervalSet.java │ │ │ ├── MultiIntervalSetDecorator.java │ │ │ ├── NoBlankMultiIntervalSet.java │ │ │ ├── NonOverlapMultiIntervalSet.java │ │ │ └── NonPeriodicMultiIntervalSet.java │ ├── API │ │ └── APIs.java │ ├── SubADT │ │ ├── CourseSchedule │ │ │ ├── Course.java │ │ │ ├── CourseIntervalSet.java │ │ │ └── CourseScheduleApp.java │ │ ├── DutyRoster │ │ │ ├── DutyIntervalSet.java │ │ │ ├── DutyRosterApp.java │ │ │ ├── Employee.java │ │ │ └── parserInput.java │ │ └── ProcessSchedule │ │ │ ├── Process.java │ │ │ ├── ProcessIntervalSet.java │ │ │ └── ProcessScheduleApp.java │ └── txt │ │ ├── test1.txt │ │ ├── test2.txt │ │ ├── test3.txt │ │ ├── test4.txt │ │ ├── test5.txt │ │ ├── test6.txt │ │ ├── test7.txt │ │ └── test8.txt │ ├── target │ ├── classes │ │ ├── ADT │ │ │ ├── Interval │ │ │ │ ├── CommonIntervalSet.class │ │ │ │ ├── IntervalSet.class │ │ │ │ ├── IntervalSetDecorator.class │ │ │ │ ├── NoBlankIntervalSet.class │ │ │ │ └── NonOverlapIntervalSet.class │ │ │ └── MultiInterval │ │ │ │ ├── CommonMultiIntervalSet.class │ │ │ │ ├── MultiIntervalSet.class │ │ │ │ ├── MultiIntervalSetDecorator.class │ │ │ │ ├── NoBlankMultiIntervalSet.class │ │ │ │ ├── NonOverlapMultiIntervalSet.class │ │ │ │ └── NonPeriodicMultiIntervalSet.class │ │ ├── API │ │ │ └── APIs.class │ │ ├── SubADT │ │ │ ├── CourseSchedule │ │ │ │ ├── Course.class │ │ │ │ ├── CourseIntervalSet.class │ │ │ │ └── CourseScheduleApp.class │ │ │ ├── DutyRoster │ │ │ │ ├── DutyIntervalSet.class │ │ │ │ ├── DutyRosterApp.class │ │ │ │ ├── Employee.class │ │ │ │ └── parserInput.class │ │ │ └── ProcessSchedule │ │ │ │ ├── Process.class │ │ │ │ ├── ProcessIntervalSet.class │ │ │ │ └── ProcessScheduleApp.class │ │ └── txt │ │ │ ├── test1.txt │ │ │ ├── test2.txt │ │ │ ├── test3.txt │ │ │ ├── test4.txt │ │ │ ├── test5.txt │ │ │ ├── test6.txt │ │ │ ├── test7.txt │ │ │ └── test8.txt │ └── test-classes │ │ ├── ADT │ │ ├── Interval │ │ │ ├── CommonIntervalSetTest.class │ │ │ ├── IntervalSetInstanceTest.class │ │ │ ├── IntervalSetStaticTest.class │ │ │ ├── NoBlankIntervalSetTest.class │ │ │ └── NonOverlapIntervalSetTest.class │ │ └── MultiInterval │ │ │ ├── MultiIntervalSetTest.class │ │ │ ├── NoBlankMultiIntervalSetTest.class │ │ │ ├── NonOverlapMultiIntervalSetTest.class │ │ │ └── NonPeriodicMultiIntervalSetTest.class │ │ ├── API │ │ └── APIsTest.class │ │ └── SubADT │ │ ├── CourseSchedule │ │ └── CourseIntervalSetTest.class │ │ ├── DutyRoster │ │ └── DutyIntervalSetTest.class │ │ └── ProcessSchedule │ │ └── ProcessIntervalSetTest.class │ └── test │ ├── ADT │ ├── Interval │ │ ├── CommonIntervalSetTest.java │ │ ├── IntervalSetInstanceTest.java │ │ ├── IntervalSetStaticTest.java │ │ ├── NoBlankIntervalSetTest.java │ │ └── NonOverlapIntervalSetTest.java │ └── MultiInterval │ │ ├── MultiIntervalSetTest.java │ │ ├── NoBlankMultiIntervalSetTest.java │ │ ├── NonOverlapMultiIntervalSetTest.java │ │ └── NonPeriodicMultiIntervalSetTest.java │ ├── API │ └── APIsTest.java │ └── SubADT │ ├── CourseSchedule │ └── CourseIntervalSetTest.java │ ├── DutyRoster │ └── DutyIntervalSetTest.java │ └── ProcessSchedule │ └── ProcessIntervalSetTest.java ├── Lab3-1190200208-origin ├── .github │ └── workflows │ │ └── maven.yml ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── dataSources.local.xml │ ├── inspectionProfiles │ │ └── Project_Default.xml │ ├── jarRepositories.xml │ ├── misc.xml │ ├── uiDesigner.xml │ ├── vcs.xml │ └── workspace.xml ├── .replit ├── README.md ├── doc │ └── Lab3-1190200208-Report.docx ├── pom.xml ├── src │ ├── ADT │ │ ├── Interval │ │ │ ├── CommonIntervalSet.java │ │ │ ├── IntervalSet.java │ │ │ ├── IntervalSetDecorator.java │ │ │ ├── NoBlankIntervalSet.java │ │ │ └── NonOverlapIntervalSet.java │ │ └── MultiInterval │ │ │ ├── CommonMultiIntervalSet.java │ │ │ ├── MultiIntervalSet.java │ │ │ ├── MultiIntervalSetDecorator.java │ │ │ ├── NoBlankMultiIntervalSet.java │ │ │ ├── NonOverlapMultiIntervalSet.java │ │ │ └── NonPeriodicMultiIntervalSet.java │ ├── API │ │ └── APIs.java │ ├── SubADT │ │ ├── CourseSchedule │ │ │ ├── Course.java │ │ │ ├── CourseIntervalSet.java │ │ │ └── CourseScheduleApp.java │ │ ├── DutyRoster │ │ │ ├── DutyIntervalSet.java │ │ │ ├── DutyRosterApp.java │ │ │ ├── Employee.java │ │ │ └── parserInput.java │ │ └── ProcessSchedule │ │ │ ├── Process.java │ │ │ ├── ProcessIntervalSet.java │ │ │ └── ProcessScheduleApp.java │ └── txt │ │ ├── test1.txt │ │ ├── test2.txt │ │ ├── test3.txt │ │ ├── test4.txt │ │ ├── test5.txt │ │ ├── test6.txt │ │ ├── test7.txt │ │ └── test8.txt ├── target │ ├── classes │ │ ├── ADT │ │ │ ├── Interval │ │ │ │ ├── CommonIntervalSet.class │ │ │ │ ├── IntervalSet.class │ │ │ │ ├── IntervalSetDecorator.class │ │ │ │ ├── NoBlankIntervalSet.class │ │ │ │ └── NonOverlapIntervalSet.class │ │ │ └── MultiInterval │ │ │ │ ├── CommonMultiIntervalSet.class │ │ │ │ ├── MultiIntervalSet.class │ │ │ │ ├── MultiIntervalSetDecorator.class │ │ │ │ ├── NoBlankMultiIntervalSet.class │ │ │ │ ├── NonOverlapMultiIntervalSet.class │ │ │ │ └── NonPeriodicMultiIntervalSet.class │ │ ├── API │ │ │ └── APIs.class │ │ ├── SubADT │ │ │ ├── CourseSchedule │ │ │ │ ├── Course.class │ │ │ │ ├── CourseIntervalSet.class │ │ │ │ └── CourseScheduleApp.class │ │ │ ├── DutyRoster │ │ │ │ ├── DutyIntervalSet.class │ │ │ │ ├── DutyRosterApp.class │ │ │ │ ├── Employee.class │ │ │ │ └── parserInput.class │ │ │ └── ProcessSchedule │ │ │ │ ├── Process.class │ │ │ │ ├── ProcessIntervalSet.class │ │ │ │ └── ProcessScheduleApp.class │ │ └── txt │ │ │ ├── test1.txt │ │ │ ├── test2.txt │ │ │ ├── test3.txt │ │ │ ├── test4.txt │ │ │ ├── test5.txt │ │ │ ├── test6.txt │ │ │ ├── test7.txt │ │ │ └── test8.txt │ └── test-classes │ │ ├── ADT │ │ ├── Interval │ │ │ ├── CommonIntervalSetTest.class │ │ │ ├── IntervalSetInstanceTest.class │ │ │ ├── IntervalSetStaticTest.class │ │ │ ├── NoBlankIntervalSetTest.class │ │ │ └── NonOverlapIntervalSetTest.class │ │ └── MultiInterval │ │ │ ├── MultiIntervalSetTest.class │ │ │ ├── NoBlankMultiIntervalSetTest.class │ │ │ ├── NonOverlapMultiIntervalSetTest.class │ │ │ └── NonPeriodicMultiIntervalSetTest.class │ │ ├── API │ │ └── APIsTest.class │ │ └── SubADT │ │ ├── CourseSchedule │ │ └── CourseIntervalSetTest.class │ │ ├── DutyRoster │ │ └── DutyIntervalSetTest.class │ │ └── ProcessSchedule │ │ └── ProcessIntervalSetTest.class └── test │ ├── ADT │ ├── Interval │ │ ├── CommonIntervalSetTest.java │ │ ├── IntervalSetInstanceTest.java │ │ ├── IntervalSetStaticTest.java │ │ ├── NoBlankIntervalSetTest.java │ │ └── NonOverlapIntervalSetTest.java │ └── MultiInterval │ │ ├── MultiIntervalSetTest.java │ │ ├── NoBlankMultiIntervalSetTest.java │ │ ├── NonOverlapMultiIntervalSetTest.java │ │ └── NonPeriodicMultiIntervalSetTest.java │ ├── API │ └── APIsTest.java │ └── SubADT │ ├── CourseSchedule │ └── CourseIntervalSetTest.java │ ├── DutyRoster │ └── DutyIntervalSetTest.java │ └── ProcessSchedule │ └── ProcessIntervalSetTest.java ├── Lab3-1190200208 ├── .github │ └── workflows │ │ └── maven.yml ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── dataSources.local.xml │ ├── inspectionProfiles │ │ └── Project_Default.xml │ ├── jarRepositories.xml │ ├── misc.xml │ ├── shelf │ │ ├── Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist] │ │ │ ├── Lab3-1190200208-Report.docx │ │ │ ├── hamcrest-core-1.3.jar │ │ │ ├── junit-4.12.jar │ │ │ └── shelved.patch │ │ └── Uncommitted_changes_before_Checkout_at_2021-07-03_20_57__Default_Changelist_.xml │ ├── uiDesigner.xml │ ├── vcs.xml │ └── workspace.xml ├── .replit ├── README.md ├── doc │ └── Lab3-1190200208-Report.docx ├── lib │ ├── hamcrest-core-1.3.jar │ └── junit-4.12.jar ├── pom.xml ├── src │ ├── ADT │ │ ├── Interval │ │ │ ├── CommonIntervalSet.java │ │ │ ├── IntervalSet.java │ │ │ ├── IntervalSetDecorator.java │ │ │ ├── NoBlankIntervalSet.java │ │ │ └── NonOverlapIntervalSet.java │ │ └── MultiInterval │ │ │ ├── CommonMultiIntervalSet.java │ │ │ ├── MultiIntervalSet.java │ │ │ ├── MultiIntervalSetDecorator.java │ │ │ ├── NoBlankMultiIntervalSet.java │ │ │ ├── NonOverlapMultiIntervalSet.java │ │ │ └── NonPeriodicMultiIntervalSet.java │ ├── API │ │ └── APIs.java │ ├── SubADT │ │ ├── CourseSchedule │ │ │ ├── Course.java │ │ │ ├── CourseIntervalSet.java │ │ │ └── CourseScheduleApp.java │ │ ├── DutyRoster │ │ │ ├── DutyIntervalSet.java │ │ │ ├── DutyRosterApp.java │ │ │ ├── Employee.java │ │ │ └── parserInput.java │ │ └── ProcessSchedule │ │ │ ├── Process.java │ │ │ ├── ProcessIntervalSet.java │ │ │ └── ProcessScheduleApp.java │ └── txt │ │ ├── test1.txt │ │ ├── test2.txt │ │ ├── test3.txt │ │ ├── test4.txt │ │ ├── test5.txt │ │ ├── test6.txt │ │ ├── test7.txt │ │ └── test8.txt ├── target │ ├── classes │ │ ├── ADT │ │ │ ├── Interval │ │ │ │ ├── CommonIntervalSet.class │ │ │ │ ├── IntervalSet.class │ │ │ │ ├── IntervalSetDecorator.class │ │ │ │ ├── NoBlankIntervalSet.class │ │ │ │ └── NonOverlapIntervalSet.class │ │ │ └── MultiInterval │ │ │ │ ├── CommonMultiIntervalSet.class │ │ │ │ ├── MultiIntervalSet.class │ │ │ │ ├── MultiIntervalSetDecorator.class │ │ │ │ ├── NoBlankMultiIntervalSet.class │ │ │ │ ├── NonOverlapMultiIntervalSet.class │ │ │ │ └── NonPeriodicMultiIntervalSet.class │ │ ├── API │ │ │ └── APIs.class │ │ ├── SubADT │ │ │ ├── CourseSchedule │ │ │ │ ├── Course.class │ │ │ │ ├── CourseIntervalSet.class │ │ │ │ └── CourseScheduleApp.class │ │ │ ├── DutyRoster │ │ │ │ ├── DutyIntervalSet.class │ │ │ │ ├── DutyRosterApp.class │ │ │ │ ├── Employee.class │ │ │ │ └── parserInput.class │ │ │ └── ProcessSchedule │ │ │ │ ├── Process.class │ │ │ │ ├── ProcessIntervalSet.class │ │ │ │ └── ProcessScheduleApp.class │ │ └── txt │ │ │ ├── test1.txt │ │ │ ├── test2.txt │ │ │ ├── test3.txt │ │ │ ├── test4.txt │ │ │ ├── test5.txt │ │ │ ├── test6.txt │ │ │ ├── test7.txt │ │ │ └── test8.txt │ └── test-classes │ │ ├── ADT │ │ ├── Interval │ │ │ ├── CommonIntervalSetTest.class │ │ │ ├── IntervalSetInstanceTest.class │ │ │ ├── IntervalSetStaticTest.class │ │ │ ├── NoBlankIntervalSetTest.class │ │ │ └── NonOverlapIntervalSetTest.class │ │ └── MultiInterval │ │ │ ├── MultiIntervalSetTest.class │ │ │ ├── NoBlankMultiIntervalSetTest.class │ │ │ ├── NonOverlapMultiIntervalSetTest.class │ │ │ └── NonPeriodicMultiIntervalSetTest.class │ │ ├── API │ │ └── APIsTest.class │ │ └── SubADT │ │ ├── CourseSchedule │ │ └── CourseIntervalSetTest.class │ │ ├── DutyRoster │ │ └── DutyIntervalSetTest.class │ │ └── ProcessSchedule │ │ └── ProcessIntervalSetTest.class └── test │ ├── ADT │ ├── Interval │ │ ├── CommonIntervalSetTest.java │ │ ├── IntervalSetInstanceTest.java │ │ ├── IntervalSetStaticTest.java │ │ ├── NoBlankIntervalSetTest.java │ │ └── NonOverlapIntervalSetTest.java │ └── MultiInterval │ │ ├── MultiIntervalSetTest.java │ │ ├── NoBlankMultiIntervalSetTest.java │ │ ├── NonOverlapMultiIntervalSetTest.java │ │ └── NonPeriodicMultiIntervalSetTest.java │ ├── API │ └── APIsTest.java │ └── SubADT │ ├── CourseSchedule │ └── CourseIntervalSetTest.java │ ├── DutyRoster │ └── DutyIntervalSetTest.java │ └── ProcessSchedule │ └── ProcessIntervalSetTest.java ├── README.md ├── 习题课3可复用与可维护构造技术.pdf ├── 实验指导书 ├── lab-0 lab guidelines.pdf ├── lab-1 fundamental java programming and testing.pdf ├── lab-2 adt and oop.pdf └── lab-3 reusability and maintainability oriented programming v3.pdf ├── 往年考试题 ├── 2018年春季期末考试题.pdf ├── 2019年春季期末考试题.pdf └── 2020年春季期末考试题.pdf └── 软构PPT ├── 1 views and quality objectives of software construction.pdf ├── 10 construction for change.pdf ├── 11 design patterns for reuse and maintainability.pdf ├── 12 construction for robustness and correctness.pdf ├── 2 testing and test-first programming.pdf ├── 3 software construction process and configuration management.pdf ├── 4 data type and type checking.pdf ├── 5 designing specification.pdf ├── 6 abstract data type (adt).pdf ├── 7 object-oriented programming (oop).pdf ├── 8 equality in adt and oop.pdf └── 9 construction for reuse.pdf /Lab1-1190200208/.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/.idea/.gitignore -------------------------------------------------------------------------------- /Lab1-1190200208/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Lab1-1190200208/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Lab1-1190200208/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Lab1-1190200208/.replit: -------------------------------------------------------------------------------- 1 | language = "java10" -------------------------------------------------------------------------------- /Lab1-1190200208/Lab1-1190200208.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Lab1-1190200208/README.md: -------------------------------------------------------------------------------- 1 | [![Work in Repl.it](https://classroom.github.com/assets/work-in-replit-14baed9a392b3a25080506f3b7b6d57f295ec2978f6f33ec97e36a161684cbe9.svg)](https://classroom.github.com/online_ide?assignment_repo_id=4728528&assignment_repo_type=AssignmentRepo) 2 | -------------------------------------------------------------------------------- /Lab1-1190200208/doc/Lab-1 1190200208 李旻翀.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/doc/Lab-1 1190200208 李旻翀.docx -------------------------------------------------------------------------------- /Lab1-1190200208/lib/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/lib/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /Lab1-1190200208/lib/junit-4.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/lib/junit-4.12.jar -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P1/MagicSquare.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P1/MagicSquare.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | P2 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005Test.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/rules/RulesOf6005Test.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action$ActionType.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action$ActionType.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Action.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/DrawableTurtle.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/DrawableTurtle.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/LineSegment.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/LineSegment.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/PenColor.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/PenColor.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Point.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Point.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Turtle.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/Turtle.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$1.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$AnimationThread.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI$AnimationThread.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleGUI.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoup.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoup.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoupTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P2/turtle/TurtleSoupTest.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P3/FriendshipGraph.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P3/FriendshipGraph.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/production/Lab1-1190200208/P3/Person.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/production/Lab1-1190200208/P3/Person.class -------------------------------------------------------------------------------- /Lab1-1190200208/out/test/Lab1-1190200208/P3/FriendshipGraphTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab1-1190200208/out/test/Lab1-1190200208/P3/FriendshipGraphTest.class -------------------------------------------------------------------------------- /Lab1-1190200208/src/P1/txt/1.txt: -------------------------------------------------------------------------------- 1 | 37 78 29 70 21 62 13 54 5 2 | 6 38 79 30 71 22 63 14 46 3 | 47 7 39 80 31 72 23 55 15 4 | 16 48 8 40 81 32 64 24 56 5 | 57 17 49 9 41 73 33 65 25 6 | 26 58 18 50 1 42 74 34 66 7 | 67 27 59 10 51 2 43 75 35 8 | 36 68 19 60 11 52 3 44 76 9 | 77 28 69 20 61 12 53 4 45 -------------------------------------------------------------------------------- /Lab1-1190200208/src/P1/txt/2.txt: -------------------------------------------------------------------------------- 1 | 8 58 59 5 4 62 63 1 2 | 49 15 14 52 53 11 10 56 3 | 41 23 22 44 45 19 18 48 4 | 32 34 35 29 28 38 39 25 5 | 40 26 27 37 36 30 31 33 6 | 17 47 46 20 21 43 42 24 7 | 9 55 54 12 13 51 50 16 8 | 64 2 3 61 60 6 7 57 -------------------------------------------------------------------------------- /Lab1-1190200208/src/P1/txt/3.txt: -------------------------------------------------------------------------------- 1 | 233 256 279 302 325 348 371 394 417 440 1 24 47 70 93 116 139 162 185 208 231 2 | 255 278 301 324 347 370 393 416 439 21 23 46 69 92 115 138 161 184 207 230 232 3 | 277 300 323 346 369 392 415 438 20 22 45 68 91 114 137 160 183 206 229 252 254 4 | 299 322 345 368 391 414 437 19 42 44 67 90 113 136 159 182 205 228 251 253 276 5 | 321 344 367 390 413 436 18 41 43 66 89 112 135 158 181 204 227 250 273 275 298 6 | 343 366 389 412 435 17 40 63 65 88 111 134 157 180 203 226 249 272 274 297 320 7 | 365 388 411 434 16 39 62 64 87 110 133 156 179 202 225 248 271 294 296 319 342 8 | 387 410 433 15 38 61 84 86 109 132 155 178 201 224 247 270 293 295 318 341 364 9 | 409 432 14 37 60 83 85 108 131 154 177 200 223 246 269 292 315 317 340 363 386 10 | 431 13 36 59 82 105 107 130 153 176 199 222 245 268 291 314 316 339 362 385 408 11 | 12 35 58 81 104 106 129 152 175 198 221 244 267 290 313 336 338 361 384 407 430 12 | 34 57 80 103 126 128 151 174 197 220 243 266 289 312 335 337 360 383 406 429 11 13 | 56 79 102 125 127 150 173 196 219 242 265 288 311 334 357 359 382 405 428 10 33 14 | 78 101 124 147 149 172 195 218 241 264 287 310 333 356 358 381 404 427 9 32 55 15 | 100 123 146 148 171 194 217 240 263 286 309 332 355 378 380 403 426 8 31 54 77 16 | 122 145 168 170 193 216 239 262 285 308 331 354 377 379 402 425 7 30 53 76 99 17 | 144 167 169 192 215 238 261 284 307 330 353 376 399 401 424 6 29 52 75 98 121 18 | 166 189 191 214 237 260 283 306 329 352 375 398 400 423 5 28 51 74 97 120 143 19 | 188 190 213 236 259 282 305 328 351 374 397 422 4 27 50 73 96 119 142 165 20 | 210 212 235 258 281 304 327 350 373 396 419 421 3 26 49 72 95 118 141 164 187 21 | 211 234 257 280 303 326 349 372 395 418 441 2 25 48 71 94 117 140 163 186 209 22 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P1/txt/4.txt: -------------------------------------------------------------------------------- 1 | 30 39 48 1 10 19 28 2 | 38 47 7 9 18 27 29 3 | 46 6 8 17 26 -35 37 4 | 5 14 16 25 34 36 45 5 | 13 15 24 33 42 44 4 6 | 21 23 32 41 43 3.01 12 7 | 22 31 40 49.5 2 11 20 8 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P1/txt/6.txt: -------------------------------------------------------------------------------- 1 | 30 39 48 1 10 19 28 2 | 38 47 7 9 18 27 29 3 | 46 6 8 17 26 35 37 4 | 5 14 16 25 34 36 45 5 | 13 15 24 33 42 44 4 6 | 21 23 32 41 43 3 12 7 | 22 31 40 49 2 11 20 8 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | P2 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/rules/RulesOf6005Test.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P2.rules; 5 | 6 | import static org.junit.Assert.*; 7 | 8 | import org.junit.Test; 9 | 10 | /** 11 | * JUnit tests for RulesOf6005. 12 | */ 13 | public class RulesOf6005Test { 14 | 15 | /** 16 | * Tests the mayUseCodeInAssignment method. 17 | */ 18 | @Test 19 | public void testMayUseCodeInAssignment() { 20 | assertFalse("Expected false: un-cited publicly-available code", 21 | RulesOf6005.mayUseCodeInAssignment(false, true, false, false, false)); 22 | assertTrue("Expected true: self-written required code", 23 | RulesOf6005.mayUseCodeInAssignment(true, false, true, true, true)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/turtle/Action.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P2.turtle; 5 | 6 | /** 7 | * An immutable drawable turtle action. 8 | */ 9 | public class Action { 10 | 11 | /** 12 | * Enumeration of turtle action types. 13 | */ 14 | public enum ActionType { 15 | FORWARD, TURN, COLOR 16 | } 17 | 18 | private final ActionType type; 19 | private final String displayString; 20 | private final LineSegment lineSegment; 21 | 22 | /** 23 | * Represent a new action. 24 | * @param type type of action 25 | * @param displayString text that describes the action 26 | * @param lineSeg line segment associated with the action, may be null 27 | */ 28 | public Action(ActionType type, String displayString, LineSegment lineSeg) { 29 | this.type = type; 30 | this.displayString = displayString; 31 | this.lineSegment = lineSeg; 32 | } 33 | 34 | /** 35 | * @return type of this action 36 | */ 37 | public ActionType type() { 38 | return type; 39 | } 40 | 41 | @Override 42 | public String toString() { 43 | return displayString; 44 | } 45 | 46 | /** 47 | * @return line segment associated with this action, or null if none 48 | */ 49 | public LineSegment lineSegment() { 50 | return lineSegment; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/turtle/LineSegment.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P2.turtle; 5 | 6 | /** 7 | * An immutable line segment in pixel space. 8 | */ 9 | public class LineSegment { 10 | 11 | private final Point start; 12 | private final Point end; 13 | private final PenColor color; 14 | 15 | /** 16 | * Construct a line segment from coordinate pairs. 17 | * 18 | * @param startx x-coordinate of start point 19 | * @param starty y-coordinate of start point 20 | * @param endx x-coordinate of end point 21 | * @param endy y-coordinate of end point 22 | * @param color line segment color 23 | */ 24 | public LineSegment(double startx, double starty, double endx, double endy, PenColor color) { 25 | this.start = new Point(startx, starty); 26 | this.end = new Point(endx, endy); 27 | this.color = color; 28 | } 29 | 30 | /** 31 | * Construct a line segment from start and end points. 32 | * 33 | * @param start one end of the line segment 34 | * @param end the other end of the line segment 35 | * @param color line segment color 36 | */ 37 | public LineSegment(Point start, Point end, PenColor color) { 38 | this.start = start; 39 | this.end = end; 40 | this.color = color; 41 | } 42 | 43 | /** 44 | * @return starting point of the line segment 45 | */ 46 | public Point start() { 47 | return start; 48 | } 49 | 50 | /** 51 | * @return ending point of the line segment 52 | */ 53 | public Point end() { 54 | return end; 55 | } 56 | 57 | /** 58 | * @return color of the line segment 59 | */ 60 | public PenColor color() { 61 | return color; 62 | } 63 | 64 | /** 65 | * Compute the length of this segment. 66 | * 67 | * @return the length of the line segment 68 | */ 69 | public double length() { 70 | return Math.sqrt(Math.pow(this.start.x() - this.end.x(), 2.0) 71 | + Math.pow(this.start.y() - this.end.y(), 2.0)); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/turtle/PenColor.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P2.turtle; 5 | 6 | /** 7 | * Enumeration of turtle pen colors. 8 | * 9 | * You may not modify this enumeration. 10 | */ 11 | public enum PenColor { 12 | BLACK, 13 | GRAY, 14 | RED, 15 | PINK, 16 | ORANGE, 17 | YELLOW, 18 | GREEN, 19 | CYAN, 20 | BLUE, 21 | MAGENTA; 22 | } 23 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/turtle/Point.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P2.turtle; 5 | 6 | /** 7 | * An immutable point in floating-point pixel space. 8 | */ 9 | public class Point { 10 | 11 | private final double x; 12 | private final double y; 13 | 14 | /** 15 | * Construct a point at the given coordinates. 16 | * @param x x-coordinate 17 | * @param y y-coordinate 18 | */ 19 | public Point(double x, double y) { 20 | this.x = x; 21 | this.y = y; 22 | } 23 | 24 | /** 25 | * @return x-coordinate of the point 26 | */ 27 | public double x() { 28 | return x; 29 | } 30 | 31 | /** 32 | * @return y-coordinate of the point 33 | */ 34 | public double y() { 35 | return y; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P2/turtle/Turtle.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P2.turtle; 5 | 6 | /** 7 | * Turtle interface. 8 | * 9 | * Defines the interface that any turtle must implement. Note that the 10 | * standard directions/rotations use Logo semantics: initial heading 11 | * of zero is 'up', and positive angles rotate the turtle clockwise. 12 | * 13 | * You may not modify this interface. 14 | */ 15 | public interface Turtle { 16 | 17 | /** 18 | * Move the turtle forward a number of steps. 19 | * 20 | * @param units number of steps to move in the current direction; must be positive 21 | */ 22 | public void forward(int units); 23 | 24 | /** 25 | * Change the turtle's heading by a number of degrees clockwise. 26 | * 27 | * @param degrees amount of change in angle, in degrees, with positive being clockwise 28 | */ 29 | public void turn(double degrees); 30 | 31 | /** 32 | * Change the turtle's current pen color. 33 | * 34 | * @param color new pen color 35 | */ 36 | public void color(PenColor color); 37 | 38 | /** 39 | * Draw the image created by this turtle. 40 | */ 41 | public void draw(); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Lab1-1190200208/src/P3/Person.java: -------------------------------------------------------------------------------- 1 | package P3; 2 | 3 | public class Person { 4 | private String name; 5 | private int index = -1; 6 | 7 | public Person(String name){ 8 | this.name = name; 9 | } 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | 15 | public int getIndex() { 16 | return index; 17 | } 18 | 19 | public void setIndex(int index) { 20 | this.index = index; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Lab2-1190200208/.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/.idea/.gitignore -------------------------------------------------------------------------------- /Lab2-1190200208/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Lab2-1190200208/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Lab2-1190200208/.idea/libraries/hamcrest_all_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Lab2-1190200208/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Lab2-1190200208/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Lab2-1190200208/.replit: -------------------------------------------------------------------------------- 1 | language = "java10" -------------------------------------------------------------------------------- /Lab2-1190200208/.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | dist: trusty 3 | jdk: 4 | - oraclejdk8 -------------------------------------------------------------------------------- /Lab2-1190200208/Lab2-1190200208.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Lab2-1190200208/README.md: -------------------------------------------------------------------------------- 1 | [![Work in Repl.it](https://classroom.github.com/assets/work-in-replit-14baed9a392b3a25080506f3b7b6d57f295ec2978f6f33ec97e36a161684cbe9.svg)](https://classroom.github.com/online_ide?assignment_repo_id=4801685&assignment_repo_type=AssignmentRepo) 2 | -------------------------------------------------------------------------------- /Lab2-1190200208/doc/Lab2-1190200208-Report.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/doc/Lab2-1190200208-Report.docx -------------------------------------------------------------------------------- /Lab2-1190200208/lab2图片.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lab2图片.pptx -------------------------------------------------------------------------------- /Lab2-1190200208/lib/hamcrest-all-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lib/hamcrest-all-1.3.jar -------------------------------------------------------------------------------- /Lab2-1190200208/lib/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lib/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /Lab2-1190200208/lib/junit-4.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/lib/junit-4.12.jar -------------------------------------------------------------------------------- /Lab2-1190200208/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | Lab2-1190200208 9 | 1.0-SNAPSHOT 10 | 11 | 12 | junit 13 | junit 14 | 4.12 15 | test 16 | 17 | 18 | 19 | 20 | 14 21 | 14 22 | 23 | 24 | -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | bin 3 | -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ps2 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/poet/Main.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P1.poet; 5 | 6 | import java.io.File; 7 | import java.io.IOException; 8 | 9 | /** 10 | * Example program using GraphPoet. 11 | * 12 | *

PS2 instructions: you are free to change this example class. 13 | */ 14 | public class Main { 15 | 16 | /** 17 | * Generate example poetry. 18 | * 19 | * @param args unused 20 | * @throws IOException if a poet corpus file cannot be found or read 21 | */ 22 | public static void main(String[] args) throws IOException { 23 | final GraphPoet nimoy = new GraphPoet(new File("src/P1/poet/Sonnet I to X.txt")); 24 | final String input = "Love others, sweet too cruel."; 25 | System.out.println(input + "\n>>>\n" + nimoy.poem(input)); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/poet/The Gettysburg Address.txt: -------------------------------------------------------------------------------- 1 | Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. 2 | 3 | Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. 4 | 5 | We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that nation might live. 6 | 7 | It is altogether fitting and proper that we should do this. 8 | 9 | But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. 10 | 11 | The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. 12 | 13 | The world will little note, nor long remember what we say here, but it can never forget what they did here. 14 | 15 | It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. 16 | 17 | It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion 18 | 19 | that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth. -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/poet/Where no man has gone before.txt: -------------------------------------------------------------------------------- 1 | To explore strange new worlds 2 | To seek out new life and new civilizations -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/poet/hello goodbye.txt: -------------------------------------------------------------------------------- 1 | hello, HelLo, HELLO, GoOdbyE!!!!!! -------------------------------------------------------------------------------- /Lab2-1190200208/src/P1/poet/mugar-omni-theater.txt: -------------------------------------------------------------------------------- 1 | This is a test of the Mugar Omni Theater sound system. 2 | -------------------------------------------------------------------------------- /Lab2-1190200208/src/P2/Person.java: -------------------------------------------------------------------------------- 1 | package P2; 2 | 3 | import java.util.Objects; 4 | 5 | public class Person { 6 | private final String name; 7 | 8 | public Person(String name) { 9 | this.name = name; 10 | } 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | 16 | @Override 17 | public boolean equals(Object o) { 18 | if (this == o) return true; 19 | if (o == null || getClass() != o.getClass()) return false; 20 | Person person = (Person) o; 21 | return Objects.equals(name, person.name); 22 | } 23 | 24 | @Override 25 | public int hashCode() { 26 | return Objects.hash(name); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | bin 3 | -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | ps2 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/graph/ConcreteEdgesGraph.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/ConcreteEdgesGraph.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/graph/ConcreteVerticesGraph.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/ConcreteVerticesGraph.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/graph/Edge.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/Edge.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/graph/Graph.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/Graph.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/graph/Vertex.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/graph/Vertex.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/poet/GraphPoet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/poet/GraphPoet.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/poet/Main.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P1/poet/Main.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/poet/The Gettysburg Address.txt: -------------------------------------------------------------------------------- 1 | Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. 2 | 3 | Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. 4 | 5 | We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that nation might live. 6 | 7 | It is altogether fitting and proper that we should do this. 8 | 9 | But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this ground. 10 | 11 | The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. 12 | 13 | The world will little note, nor long remember what we say here, but it can never forget what they did here. 14 | 15 | It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. 16 | 17 | It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion 18 | 19 | that we here highly resolve that these dead shall not have died in vain -- that this nation, under God, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from the earth. -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/poet/Where no man has gone before.txt: -------------------------------------------------------------------------------- 1 | To explore strange new worlds 2 | To seek out new life and new civilizations -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/poet/hello goodbye.txt: -------------------------------------------------------------------------------- 1 | hello, HelLo, HELLO, GoOdbyE!!!!!! -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P1/poet/mugar-omni-theater.txt: -------------------------------------------------------------------------------- 1 | This is a test of the Mugar Omni Theater sound system. 2 | -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P2/FriendshipGraph.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P2/FriendshipGraph.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/classes/P2/Person.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/classes/P2/Person.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/test-classes/P1/graph/ConcreteEdgesGraphTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/ConcreteEdgesGraphTest.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/test-classes/P1/graph/ConcreteVerticesGraphTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/ConcreteVerticesGraphTest.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/test-classes/P1/graph/GraphInstanceTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/GraphInstanceTest.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/test-classes/P1/graph/GraphStaticTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/graph/GraphStaticTest.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/test-classes/P1/poet/GraphPoetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P1/poet/GraphPoetTest.class -------------------------------------------------------------------------------- /Lab2-1190200208/target/test-classes/P2/FriendshipGraphTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/target/test-classes/P2/FriendshipGraphTest.class -------------------------------------------------------------------------------- /Lab2-1190200208/test/P1/graph/ConcreteEdgesGraphTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P1.graph; 5 | 6 | import static org.junit.Assert.*; 7 | 8 | import org.junit.Test; 9 | 10 | /** 11 | * Tests for ConcreteEdgesGraph. 12 | *

13 | * This class runs the GraphInstanceTest tests against ConcreteEdgesGraph, as 14 | * well as tests for that particular implementation. 15 | *

16 | * Tests against the Graph spec should be in GraphInstanceTest. 17 | */ 18 | public class ConcreteEdgesGraphTest extends GraphInstanceTest { 19 | 20 | /* 21 | * Provide a ConcreteEdgesGraph for tests in GraphInstanceTest. 22 | */ 23 | @Override 24 | public Graph emptyInstance() { 25 | return new ConcreteEdgesGraph<>(); 26 | } 27 | 28 | /* 29 | * Testing ConcreteEdgesGraph... 30 | */ 31 | 32 | // Testing strategy for ConcreteEdgesGraph.toString() 33 | // 对三个点的情况进行测试,观察toString方法是否出错 34 | 35 | // tests for ConcreteEdgesGraph.toString() 36 | @Test 37 | public void testToString(){ 38 | Graph graph =emptyInstance(); 39 | graph.set("a", "b", 1); 40 | graph.set("b", "c", 2); 41 | graph.set("a", "c", 3); 42 | 43 | assertEquals("a->b (1)\n"+"b->c (2)\n"+"a->c (3)\n",graph.toString()); 44 | } 45 | 46 | /* 47 | * Testing Edge... 48 | */ 49 | 50 | // Testing strategy for Edge 51 | // 测试Edge中的三个不同方法:获取原点,获取终点,获取边权 52 | 53 | // tests for operations of Edge 54 | 55 | /* Testing strategy 56 | * 测试原点返回值 57 | */ 58 | @Test 59 | public void testGetSource() { 60 | Edge e = new Edge<>("a", "b", 1); 61 | assertEquals("a", e.getSource()); 62 | } 63 | 64 | /* Testing strategy 65 | * 测试终点返回值 66 | */ 67 | @Test 68 | public void testGetTarget() { 69 | Edge e = new Edge<>("a", "b", 1); 70 | assertEquals("b", e.getTarget()); 71 | } 72 | 73 | /* Testing strategy 74 | * 测试能否返回正确权重 75 | */ 76 | @Test 77 | public void testGetWeight() { 78 | Edge e = new Edge<>("a", "b", 1); 79 | assertEquals(1, e.getWeight()); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /Lab2-1190200208/test/P1/graph/GraphStaticTest.java: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015-2016 MIT 6.005 course staff, all rights reserved. 2 | * Redistribution of original or derived work requires permission of course staff. 3 | */ 4 | package P1.graph; 5 | 6 | import static org.junit.Assert.*; 7 | 8 | import java.util.Collections; 9 | 10 | import org.junit.Test; 11 | 12 | /** 13 | * Tests for static methods of Graph. 14 | *

15 | * To facilitate testing multiple implementations of Graph, instance methods are 16 | * tested in GraphInstanceTest. 17 | */ 18 | public class GraphStaticTest { 19 | 20 | // Testing strategy 21 | // empty() 22 | // no inputs, only output is empty graph 23 | // observe with vertices() 24 | 25 | @Test(expected = AssertionError.class) 26 | public void testAssertionsEnabled() { 27 | assert false; // make sure assertions are enabled with VM argument: -ea 28 | } 29 | 30 | @Test 31 | public void testEmptyVerticesEmpty() { 32 | assertEquals("expected empty() graph to have no vertices", 33 | Collections.emptySet(), Graph.empty().vertices()); 34 | } 35 | 36 | // test other vertex label types in Problem 3.2 37 | @Test 38 | public void testDifferentDataLabel() { 39 | assertEquals("expected empty() graph to have no vertices", 40 | Collections.emptySet(), Graph.empty().vertices()); 41 | assertEquals("expected empty() graph to have no vertices", 42 | Collections.emptySet(), Graph.empty().vertices()); 43 | assertEquals("expected empty() graph to have no vertices", 44 | Collections.emptySet(), Graph.empty().vertices()); 45 | assertEquals("expected empty() graph to have no vertices", 46 | Collections.emptySet(), Graph.empty().vertices()); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Lab2-1190200208/习题课2:adt设计.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab2-1190200208/习题课2:adt设计.pdf -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Maven 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven 3 | 4 | name: Java CI with Maven 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up JDK 8 20 | uses: actions/setup-java@v2 21 | with: 22 | java-version: '8' 23 | distribution: 'adopt' 24 | - name: Build with Maven 25 | run: mvn -B package --file pom.xml 26 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/.idea/.gitignore -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/dataSources.local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/.replit: -------------------------------------------------------------------------------- 1 | language = "java10" -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/README.md: -------------------------------------------------------------------------------- 1 | [![Work in Repl.it](https://classroom.github.com/assets/work-in-replit-14baed9a392b3a25080506f3b7b6d57f295ec2978f6f33ec97e36a161684cbe9.svg)](https://classroom.github.com/online_ide?assignment_repo_id=4889817&assignment_repo_type=AssignmentRepo) 2 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/doc/Lab3-1190200208-Report.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/doc/Lab3-1190200208-Report.docx -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/lib/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/lib/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/lib/junit-4.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/lib/junit-4.12.jar -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | Lab3-1190200208 9 | 1.0-SNAPSHOT 10 | 11 | 12 | junit 13 | junit 14 | 4.12 15 | test 16 | 17 | 18 | 19 | 20 | 14 21 | 14 22 | 23 | 24 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/Interval/IntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.Set; 4 | 5 | public interface IntervalSet { 6 | 7 | /** 8 | * 创建一个空的IntervalSet. 9 | * 10 | * @param L为IntervalSet标签的类型 11 | * @return 一个空的IntervalSet 12 | */ 13 | public static IntervalSet empty() { 14 | return new CommonIntervalSet(); 15 | } 16 | 17 | /** 18 | * 在当前的IntervalSet中插入新的时间段和标签 19 | * 20 | * @param start 时间段的起点 21 | * @param end 时间段的终点 22 | * @param label 时间段的标签 23 | */ 24 | public void insert(long start, long end, L label); 25 | 26 | /** 27 | * 获得当前对象中的标签集合 28 | * 29 | * @return 当前对象中的标签集合 30 | */ 31 | public Set labels(); 32 | 33 | /** 34 | * 从当前IntervalSet中移除某个标签所关联的时间段 35 | * 36 | * @param label 所要移除时间段的对应标签 37 | * @return 移除成功返回true,移除失败返回false 38 | */ 39 | public boolean remove(L label); 40 | 41 | /** 42 | * 返回某个标签对应的时间段的开始时间 43 | * 44 | * @param label 时间段对应的标签 45 | * @return 返回开始时间,若没找到标签对应的时间段,则返回-1 46 | */ 47 | public long start(L label); 48 | 49 | /** 50 | * 返回某个标签对应的时间段的结束时间 51 | * 52 | * @param label 时间段对应的标签 53 | * @return 返回结束时间,若没找到标签对应的时间段,则返回-1 54 | */ 55 | public long end(L label); 56 | 57 | /** 58 | * 判断该IntervalSet是否为空 59 | * 60 | * @return 为空返回true,不为空返回false 61 | */ 62 | public boolean isEmpty(); 63 | 64 | /** 65 | * 判断时间轴是否存在空白 66 | * 67 | * @return 若存在空白,返回true;否则返回false 68 | */ 69 | public boolean checkBlank(); 70 | 71 | /** 72 | * 判断是否存在不同的 interval 之间有重叠 73 | * 74 | * @return 若存在不同的 interval 之间有重叠,返回true;否则返回false 75 | */ 76 | public boolean checkOverlap(); 77 | } 78 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/Interval/IntervalSetDecorator.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.Set; 4 | 5 | public abstract class IntervalSetDecorator implements IntervalSet { 6 | protected final IntervalSet intervalSet; 7 | 8 | // Constructor 9 | public IntervalSetDecorator(IntervalSet intervalSet) { 10 | this.intervalSet = intervalSet; 11 | } 12 | 13 | @Override 14 | public void insert(long start, long end, L label) { 15 | intervalSet.insert(start, end, label); 16 | } 17 | 18 | @Override 19 | public Set labels() { 20 | return intervalSet.labels(); 21 | } 22 | 23 | @Override 24 | public boolean remove(L label) { 25 | return intervalSet.remove(label); 26 | } 27 | 28 | @Override 29 | public long start(L label) { 30 | return intervalSet.start(label); 31 | } 32 | 33 | @Override 34 | public long end(L label) { 35 | return intervalSet.end(label); 36 | } 37 | 38 | @Override 39 | public boolean isEmpty() { 40 | return intervalSet.isEmpty(); 41 | } 42 | 43 | @Override 44 | public boolean checkBlank() { 45 | return intervalSet.checkBlank(); 46 | } 47 | 48 | @Override 49 | public boolean checkOverlap() { 50 | return intervalSet.checkOverlap(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/Interval/NoBlankIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.HashMap; 4 | import java.util.IdentityHashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | 8 | public class NoBlankIntervalSet extends IntervalSetDecorator implements IntervalSet { 9 | 10 | // Constructor 11 | public NoBlankIntervalSet(IntervalSet intervalSet) { 12 | super(intervalSet); 13 | } 14 | 15 | /* 16 | * 思路 17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 18 | * 2.从min到max,步长为1遍历每个键值对 19 | * 3.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false 20 | */ 21 | public boolean checkBlank() { 22 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合 23 | Map map = new IdentityHashMap<>(); 24 | 25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 26 | long min = Long.MAX_VALUE; 27 | long max = Long.MIN_VALUE; 28 | while (it.hasNext()) { 29 | L label = it.next(); 30 | map.put(intervalSet.start(label), intervalSet.end(label)); 31 | min = Math.min(intervalSet.start(label), min); 32 | max = Math.max(intervalSet.end(label), max); 33 | } 34 | 35 | //从min到max,步长为1遍历每个键值对 36 | for (long i = min; i < max; i++) { 37 | boolean flag = false; 38 | for (Map.Entry entry : map.entrySet()) { 39 | if (i >= entry.getKey() && i <= entry.getValue()) { 40 | flag = true; 41 | break; 42 | } 43 | } 44 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中 45 | } 46 | return false; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/Interval/NonOverlapIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.HashMap; 4 | import java.util.IdentityHashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | 8 | public class NonOverlapIntervalSet extends IntervalSetDecorator implements IntervalSet { 9 | 10 | // Constructor 11 | public NonOverlapIntervalSet(IntervalSet intervalSet) { 12 | super(intervalSet); 13 | } 14 | 15 | /* 16 | * 思路 17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 18 | * 2.从min到max,步长为1遍历每个键值对 19 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠 20 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 21 | */ 22 | public boolean checkOverlap() { 23 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合 24 | Map map = new IdentityHashMap<>(); // 保存每个时间轴的起点与终点 25 | 26 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 27 | long min = Long.MAX_VALUE; 28 | long max = Long.MIN_VALUE; 29 | while (it.hasNext()) { 30 | L label = it.next(); 31 | map.put(intervalSet.start(label), intervalSet.end(label)); 32 | min = Math.min(intervalSet.start(label), min); 33 | max = Math.max(intervalSet.end(label), max); 34 | } 35 | 36 | // 从min到max,步长为1遍历每个键值对 37 | for (long i = min; i <= max; i++) { 38 | boolean flag1 = false, flag2 = false; 39 | for (Map.Entry entry : map.entrySet()) { 40 | if (i >= entry.getKey() && i <= entry.getValue()) { 41 | if (!flag1) 42 | flag1 = true; 43 | else { 44 | flag2 = true; 45 | break; 46 | } 47 | } 48 | } 49 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠 50 | } 51 | 52 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/MultiInterval/MultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.Set; 6 | 7 | public interface MultiIntervalSet { 8 | 9 | /** 10 | * 创建一个空的MultiIntervalSet. 11 | * 12 | * @param L为MultiIntervalSet标签的类型 13 | * @return 一个空的MultiIntervalSet 14 | */ 15 | public static MultiIntervalSet empty() { 16 | return new CommonMultiIntervalSet(); 17 | } 18 | 19 | /** 20 | * 判断该MultiIntervalSet是否为空 21 | * 22 | * @return 为空返回true,不为空返回false 23 | */ 24 | public boolean isEmpty(); 25 | 26 | /** 27 | * 在当前的multiIntervalSet中插入新的时间段和标签 28 | * 29 | * @param start 时间段的起点 30 | * @param end 时间段的终点 31 | * @param label 时间段的标签 32 | */ 33 | public void insert(long start, long end, L label); 34 | 35 | /** 36 | * 获得当前对象中的标签集合 37 | * 38 | * @return 当前对象中的标签集合 39 | */ 40 | public Set labels(); 41 | 42 | /** 43 | * 从当前MultiIntervalSet中移除某个标签所关联的所有时间段 44 | * 45 | * @param label 所要移除时间段的对应标签 46 | * @return 移除成功返回true,移除失败返回false 47 | */ 48 | public boolean remove(L label); 49 | 50 | /** 51 | * 从当前对象中获取与某个标签所关联的所有时间段 52 | * 53 | * @param label 所要获取具体信息的时间段的对应标签 54 | * @return 返回IntervalSet,其中的时间段按开始时间从小到大的次序排列 55 | */ 56 | public IntervalSet intervals(L label); 57 | 58 | /** 59 | * 判断时间轴是否允许空白 60 | * 61 | * @return 若存在空白,返回true;否则返回false 62 | */ 63 | public boolean checkBlank(); 64 | 65 | /** 66 | * 判断是否允许不同的 multiInterval 之间有重叠 67 | * 68 | * @return 若允许不同的 multiInterval 之间有重叠,返回true;否则返回false 69 | */ 70 | public boolean checkOverlap(); 71 | 72 | /** 73 | * 是否包含周期性的时间段 74 | * 75 | * @return 若包含周期性的时间段,则返回true;否则返回false 76 | */ 77 | public boolean checkPeriodic(); 78 | 79 | /** 80 | * 从当前MultiIntervalSet中移除某个标签所关联的特定时间段 81 | * 82 | * @param label 所要移除时间段的对应标签 83 | * @param start 所要移除时间段的起点 84 | * @return 移除成功返回true,移除失败返回false 85 | */ 86 | public boolean removeSpecific(L label, long start); 87 | } 88 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/MultiInterval/MultiIntervalSetDecorator.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.Set; 6 | 7 | public abstract class MultiIntervalSetDecorator implements MultiIntervalSet { 8 | protected final MultiIntervalSet multiIntervalSet; 9 | 10 | // Constructor 11 | protected MultiIntervalSetDecorator(MultiIntervalSet multiIntervalSet) { 12 | this.multiIntervalSet = multiIntervalSet; 13 | } 14 | 15 | @Override 16 | public boolean isEmpty() { 17 | return multiIntervalSet.isEmpty(); 18 | } 19 | 20 | @Override 21 | public void insert(long start, long end, L label) { 22 | multiIntervalSet.insert(start,end,label); 23 | } 24 | 25 | @Override 26 | public Set labels() { 27 | return multiIntervalSet.labels(); 28 | } 29 | 30 | @Override 31 | public boolean remove(L label) { 32 | return multiIntervalSet.remove(label); 33 | } 34 | 35 | @Override 36 | public IntervalSet intervals(L label) { 37 | return multiIntervalSet.intervals(label); 38 | } 39 | 40 | @Override 41 | public boolean checkBlank() { 42 | return multiIntervalSet.checkBlank(); 43 | } 44 | 45 | @Override 46 | public boolean checkOverlap() { 47 | return multiIntervalSet.checkOverlap(); 48 | } 49 | 50 | @Override 51 | public boolean checkPeriodic() { 52 | return multiIntervalSet.checkPeriodic(); 53 | } 54 | 55 | @Override 56 | public boolean removeSpecific(L label, long start) { 57 | return multiIntervalSet.removeSpecific(label,start); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/MultiInterval/NoBlankMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.HashMap; 6 | import java.util.IdentityHashMap; 7 | import java.util.Iterator; 8 | import java.util.Map; 9 | 10 | public class NoBlankMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 11 | 12 | // Constructor 13 | public NoBlankMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 14 | super(multiIntervalSet); 15 | } 16 | 17 | /* 18 | * 思路 19 | * 1.找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 20 | * 3.从min到max,步长为1遍历每个键值对 21 | * 4.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false 22 | */ 23 | public boolean checkBlank() { 24 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合 25 | Map map = new IdentityHashMap<>(); 26 | 27 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 28 | long min = Long.MAX_VALUE; 29 | long max = Long.MIN_VALUE; 30 | while (it.hasNext()) { 31 | L label = it.next(); 32 | IntervalSet temp = multiIntervalSet.intervals(label); 33 | for (Integer tempLabel : temp.labels()) { 34 | map.put(temp.start(tempLabel), temp.end(tempLabel)); 35 | min = Math.min(temp.start(tempLabel), min); 36 | max = Math.max(temp.end(tempLabel), max); 37 | } 38 | } 39 | 40 | //从min到max,步长为1遍历每个键值对 41 | for (long i = min; i < max; i++) { 42 | boolean flag = false; 43 | for (Map.Entry entry : map.entrySet()) { 44 | if (i >= entry.getKey() && i <= entry.getValue()) { 45 | flag = true; 46 | break; 47 | } 48 | } 49 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中 50 | } 51 | return false; 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/MultiInterval/NonOverlapMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.*; 6 | 7 | public class NonOverlapMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 8 | 9 | // Constructor 10 | public NonOverlapMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 11 | super(multiIntervalSet); 12 | } 13 | 14 | /* 15 | * 思路 16 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 17 | * 2.从min到max,步长为1遍历每个键值对 18 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠 19 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 20 | */ 21 | public boolean checkOverlap() { 22 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合 23 | List> map = new ArrayList<>(); 24 | 25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 26 | long min = Long.MAX_VALUE; 27 | long max = Long.MIN_VALUE; 28 | while (it.hasNext()) { 29 | L label = it.next(); 30 | IntervalSet temp = multiIntervalSet.intervals(label); 31 | for (Integer tempLabel : temp.labels()) { 32 | List subList = new ArrayList<>(); 33 | subList.add(temp.start(tempLabel)); 34 | subList.add(temp.end(tempLabel)); 35 | map.add(subList); 36 | min = Math.min(temp.start(tempLabel), min); 37 | max = Math.max(temp.end(tempLabel), max); 38 | } 39 | } 40 | 41 | // 从min到max,步长为1遍历每个键值对 42 | for (long i = min; i <= max; i++) { 43 | boolean flag1 = false, flag2 = false; 44 | Iterator> it2 = map.iterator(); 45 | while (it2.hasNext()) { 46 | List entry = it2.next(); 47 | if (i >= entry.get(0) && i <= entry.get(1)) { 48 | if (!flag1) 49 | flag1 = true; 50 | else { 51 | flag2 = true; 52 | break; 53 | } 54 | } 55 | } 56 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠 57 | } 58 | 59 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/ADT/MultiInterval/NonPeriodicMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | public class NonPeriodicMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 4 | 5 | // Constructor 6 | public NonPeriodicMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 7 | super(multiIntervalSet); 8 | } 9 | 10 | public boolean checkPeriodic() { 11 | return false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/SubADT/CourseSchedule/Course.java: -------------------------------------------------------------------------------- 1 | package SubADT.CourseSchedule; 2 | 3 | import java.util.Objects; 4 | 5 | public class Course { 6 | private final String ID; 7 | private final String name; 8 | private final String teacher; 9 | private final String location; 10 | private final int weekHour; 11 | 12 | public Course(String ID, String name, String teacher, String location, int weekHour) { 13 | this.ID = ID; // 课程ID 14 | this.name = name; // 课程名称 15 | this.teacher = teacher; // 授课老师 16 | this.location = location; // 上课地点 17 | this.weekHour = weekHour; // 周最大学时数 18 | } 19 | 20 | public String getID() { 21 | return ID; 22 | } 23 | 24 | public String getName() { 25 | return name; 26 | } 27 | 28 | public String getTeacher() { 29 | return teacher; 30 | } 31 | 32 | public String getLocation() { 33 | return location; 34 | } 35 | 36 | public int getWeekHour() { return weekHour; } 37 | 38 | @Override 39 | public boolean equals(Object o) { 40 | if (this == o) return true; 41 | if (o == null || getClass() != o.getClass()) return false; 42 | Course course = (Course) o; 43 | return Objects.equals(ID, course.ID); 44 | } 45 | 46 | @Override 47 | public int hashCode() { 48 | return Objects.hash(ID); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/SubADT/DutyRoster/Employee.java: -------------------------------------------------------------------------------- 1 | package SubADT.DutyRoster; 2 | 3 | import java.util.Objects; 4 | 5 | public class Employee { 6 | private final String name; // 姓名 7 | private final String duty; // 职务 8 | private final String phone;// 电话 9 | 10 | public Employee(String name, String duty, String phone) { 11 | this.name = name; 12 | this.duty = duty; 13 | this.phone = phone; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public String getDuty() { 21 | return duty; 22 | } 23 | 24 | public String getPhone() { 25 | return phone; 26 | } 27 | 28 | @Override 29 | public boolean equals(Object o) { 30 | if (this == o) return true; 31 | if (o == null || getClass() != o.getClass()) return false; 32 | Employee employee = (Employee) o; 33 | return Objects.equals(name, employee.name); 34 | } 35 | 36 | @Override 37 | public int hashCode() { 38 | return Objects.hash(name); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/SubADT/ProcessSchedule/Process.java: -------------------------------------------------------------------------------- 1 | package SubADT.ProcessSchedule; 2 | 3 | import java.util.Objects; 4 | 5 | public class Process { 6 | private final long ID; // 进程ID 7 | private final String name; // 进程名称 8 | private final long minTime; // 最短执行时间 9 | private final long maxTime; // 最长执行时间 10 | 11 | public Process(long ID, String name, long minTime, long maxTime) { 12 | this.ID = ID; 13 | this.name = name; 14 | this.minTime = minTime; 15 | this.maxTime = maxTime; 16 | } 17 | 18 | public long getID() { 19 | return ID; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public long getMinTime() { 27 | return minTime; 28 | } 29 | 30 | public long getMaxTime() { 31 | return maxTime; 32 | } 33 | 34 | @Override 35 | public boolean equals(Object o) { 36 | if (this == o) return true; 37 | if (o == null || getClass() != o.getClass()) return false; 38 | Process process = (Process) o; 39 | return ID == process.ID; 40 | } 41 | 42 | @Override 43 | public int hashCode() { 44 | return Objects.hash(ID); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test1.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test2.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test3.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test4.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test5.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test6.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test7.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/src/txt/test8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/src/txt/test8.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/Interval/CommonIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/CommonIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSetDecorator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/IntervalSetDecorator.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/Interval/NoBlankIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/NoBlankIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/Interval/NonOverlapIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/Interval/NonOverlapIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/API/APIs.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/API/APIs.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/Course.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/Course.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyRosterApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/DutyRosterApp.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/Employee.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/Employee.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/parserInput.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/DutyRoster/parserInput.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/Process.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/Process.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test1.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test2.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test3.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test4.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test5.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test6.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test7.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/classes/txt/test8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/classes/txt/test8.txt -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/Interval/CommonIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/CommonIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetStaticTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/IntervalSetStaticTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/API/APIsTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/API/APIsTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-change/change/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/Interval/CommonIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | public class CommonIntervalSetTest extends IntervalSetInstanceTest{ 4 | 5 | /* 6 | * Provide a commonIntervalSet for tests in IntervalInstanceTest. 7 | */ 8 | @Override 9 | public IntervalSet emptyInstance() { 10 | return new CommonIntervalSet<>(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/Interval/IntervalSetStaticTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.Collections; 6 | 7 | import static org.junit.Assert.assertEquals; 8 | 9 | public class IntervalSetStaticTest { 10 | @Test(expected = AssertionError.class) 11 | public void testAssertionsEnabled() { 12 | assert false; // make sure assertions are enabled with VM argument: -ea 13 | } 14 | 15 | @Test 16 | public void testEmptyVerticesEmpty() { 17 | assertEquals("expected empty() IntervalSet to have no labels", 18 | Collections.emptySet(), IntervalSet.empty().labels()); 19 | } 20 | 21 | // test other label types 22 | @Test 23 | public void testDifferentDataLabel() { 24 | assertEquals("expected empty() IntervalSet to have no labels", 25 | Collections.emptySet(), IntervalSet.empty().labels()); 26 | assertEquals("expected empty() IntervalSet to have no labels", 27 | Collections.emptySet(), IntervalSet.empty().labels()); 28 | assertEquals("expected empty() IntervalSet to have no labels", 29 | Collections.emptySet(), IntervalSet.empty().labels()); 30 | assertEquals("expected empty() IntervalSet to have no labels", 31 | Collections.emptySet(), IntervalSet.empty().labels()); 32 | assertEquals("expected empty() IntervalSet to have no labels", 33 | Collections.emptySet(), IntervalSet.empty().labels()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/Interval/NoBlankIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class NoBlankIntervalSetTest { 8 | 9 | /** 10 | * Tests that assertions are enabled. 11 | */ 12 | @Test(expected = AssertionError.class) 13 | public void testAssertionsEnabled() { 14 | assert false; 15 | } 16 | 17 | @Test 18 | // 测试时间轴有空白的情况 19 | public void testCheckBlank1(){ 20 | IntervalSet intervalSet = new CommonIntervalSet<>(); 21 | 22 | intervalSet.insert(1,3,"a"); 23 | intervalSet.insert(2,4,"b"); 24 | intervalSet.insert(6,7,"c"); 25 | 26 | assertTrue(intervalSet.checkBlank()); 27 | } 28 | 29 | @Test 30 | // 测试时间轴无空白的情况 31 | public void testCheckBlank2(){ 32 | IntervalSet intervalSet = new CommonIntervalSet<>(); 33 | 34 | intervalSet.insert(10,200,"a"); 35 | intervalSet.insert(200,300,"b"); 36 | intervalSet.insert(20,50,"c"); 37 | intervalSet.insert(250,400,"d"); 38 | 39 | assertFalse(intervalSet.checkBlank()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/Interval/NonOverlapIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NonOverlapIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试允许重叠的情况 20 | public void testCheckOverlap1(){ 21 | IntervalSet intervalSet = new CommonIntervalSet<>(); 22 | 23 | intervalSet.insert(10,200,"a"); 24 | intervalSet.insert(20,300,"b"); 25 | intervalSet.insert(400,500,"c"); 26 | 27 | assertTrue(intervalSet.checkOverlap()); 28 | } 29 | 30 | @Test 31 | // 测试不允许重叠的情况 32 | public void testCheckOverlap2(){ 33 | IntervalSet intervalSet = new CommonIntervalSet<>(); 34 | 35 | intervalSet.insert(10,200,"a"); 36 | intervalSet.insert(201,300,"b"); 37 | intervalSet.insert(400,500,"c"); 38 | 39 | assertFalse(intervalSet.checkOverlap()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/MultiInterval/NoBlankMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NoBlankMultiIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试时间轴有空白的情况 20 | public void testCheckBlank1(){ 21 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>(); 22 | 23 | multiIntervalSet.insert(1,3,"a"); 24 | multiIntervalSet.insert(2,4,"a"); 25 | multiIntervalSet.insert(6,7,"a"); 26 | 27 | assertTrue(multiIntervalSet.checkBlank()); 28 | } 29 | 30 | @Test 31 | // 测试时间轴无空白的情况 32 | public void testCheckBlank2(){ 33 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>(); 34 | 35 | multiIntervalSet.insert(10,200,"a"); 36 | multiIntervalSet.insert(200,300,"a"); 37 | multiIntervalSet.insert(20,50,"b"); 38 | multiIntervalSet.insert(250,400,"b"); 39 | 40 | assertFalse(multiIntervalSet.checkBlank()); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NonOverlapMultiIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试允许重叠的情况 20 | public void testCheckOverlap1(){ 21 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>(); 22 | 23 | MultiIntervalSet.insert(10,200,"a"); 24 | MultiIntervalSet.insert(20,300,"a"); 25 | MultiIntervalSet.insert(400,500,"a"); 26 | 27 | assertTrue(MultiIntervalSet.checkOverlap()); 28 | } 29 | 30 | @Test 31 | // 测试不允许重叠的情况 32 | public void testCheckOverlap2(){ 33 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>(); 34 | 35 | MultiIntervalSet.insert(10,200,"a"); 36 | MultiIntervalSet.insert(201,300,"a"); 37 | MultiIntervalSet.insert(400,500,"a"); 38 | 39 | assertFalse(MultiIntervalSet.checkOverlap()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208-change/change/test/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | public class NonPeriodicMultiIntervalSetTest { 6 | 7 | /** 8 | * Tests that assertions are enabled. 9 | */ 10 | @Test(expected = AssertionError.class) 11 | public void testAssertionsEnabled() { 12 | assert false; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Maven 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven 3 | 4 | name: Java CI with Maven 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up JDK 8 20 | uses: actions/setup-java@v2 21 | with: 22 | java-version: '8' 23 | distribution: 'adopt' 24 | - name: Build with Maven 25 | run: mvn -B package --file pom.xml 26 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/.idea/.gitignore -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/dataSources.local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/.replit: -------------------------------------------------------------------------------- 1 | language = "java10" -------------------------------------------------------------------------------- /Lab3-1190200208-origin/README.md: -------------------------------------------------------------------------------- 1 | [![Work in Repl.it](https://classroom.github.com/assets/work-in-replit-14baed9a392b3a25080506f3b7b6d57f295ec2978f6f33ec97e36a161684cbe9.svg)](https://classroom.github.com/online_ide?assignment_repo_id=4889817&assignment_repo_type=AssignmentRepo) 2 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/doc/Lab3-1190200208-Report.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/doc/Lab3-1190200208-Report.docx -------------------------------------------------------------------------------- /Lab3-1190200208-origin/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | Lab3-1190200208 9 | 1.0-SNAPSHOT 10 | 11 | 12 | junit 13 | junit 14 | 4.12 15 | test 16 | 17 | 18 | 19 | 20 | 14 21 | 14 22 | 23 | 24 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/Interval/IntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.Set; 4 | 5 | public interface IntervalSet { 6 | 7 | /** 8 | * 创建一个空的IntervalSet. 9 | * 10 | * @param L为IntervalSet标签的类型 11 | * @return 一个空的IntervalSet 12 | */ 13 | public static IntervalSet empty() { 14 | return new CommonIntervalSet(); 15 | } 16 | 17 | /** 18 | * 在当前的IntervalSet中插入新的时间段和标签 19 | * 20 | * @param start 时间段的起点 21 | * @param end 时间段的终点 22 | * @param label 时间段的标签 23 | */ 24 | public void insert(long start, long end, L label); 25 | 26 | /** 27 | * 获得当前对象中的标签集合 28 | * 29 | * @return 当前对象中的标签集合 30 | */ 31 | public Set labels(); 32 | 33 | /** 34 | * 从当前IntervalSet中移除某个标签所关联的时间段 35 | * 36 | * @param label 所要移除时间段的对应标签 37 | * @return 移除成功返回true,移除失败返回false 38 | */ 39 | public boolean remove(L label); 40 | 41 | /** 42 | * 返回某个标签对应的时间段的开始时间 43 | * 44 | * @param label 时间段对应的标签 45 | * @return 返回开始时间,若没找到标签对应的时间段,则返回-1 46 | */ 47 | public long start(L label); 48 | 49 | /** 50 | * 返回某个标签对应的时间段的结束时间 51 | * 52 | * @param label 时间段对应的标签 53 | * @return 返回结束时间,若没找到标签对应的时间段,则返回-1 54 | */ 55 | public long end(L label); 56 | 57 | /** 58 | * 判断该IntervalSet是否为空 59 | * 60 | * @return 为空返回true,不为空返回false 61 | */ 62 | public boolean isEmpty(); 63 | 64 | /** 65 | * 判断时间轴是否存在空白 66 | * 67 | * @return 若存在空白,返回true;否则返回false 68 | */ 69 | public boolean checkBlank(); 70 | 71 | /** 72 | * 判断是否存在不同的 interval 之间有重叠 73 | * 74 | * @return 若存在不同的 interval 之间有重叠,返回true;否则返回false 75 | */ 76 | public boolean checkOverlap(); 77 | } 78 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/Interval/IntervalSetDecorator.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.Set; 4 | 5 | public abstract class IntervalSetDecorator implements IntervalSet { 6 | protected final IntervalSet intervalSet; 7 | 8 | // Constructor 9 | public IntervalSetDecorator(IntervalSet intervalSet) { 10 | this.intervalSet = intervalSet; 11 | } 12 | 13 | @Override 14 | public void insert(long start, long end, L label) { 15 | intervalSet.insert(start, end, label); 16 | } 17 | 18 | @Override 19 | public Set labels() { 20 | return intervalSet.labels(); 21 | } 22 | 23 | @Override 24 | public boolean remove(L label) { 25 | return intervalSet.remove(label); 26 | } 27 | 28 | @Override 29 | public long start(L label) { 30 | return intervalSet.start(label); 31 | } 32 | 33 | @Override 34 | public long end(L label) { 35 | return intervalSet.end(label); 36 | } 37 | 38 | @Override 39 | public boolean isEmpty() { 40 | return intervalSet.isEmpty(); 41 | } 42 | 43 | @Override 44 | public boolean checkBlank() { 45 | return intervalSet.checkBlank(); 46 | } 47 | 48 | @Override 49 | public boolean checkOverlap() { 50 | return intervalSet.checkOverlap(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/Interval/NoBlankIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.HashMap; 4 | import java.util.IdentityHashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | 8 | public class NoBlankIntervalSet extends IntervalSetDecorator implements IntervalSet { 9 | 10 | // Constructor 11 | public NoBlankIntervalSet(IntervalSet intervalSet) { 12 | super(intervalSet); 13 | } 14 | 15 | /* 16 | * 思路 17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 18 | * 2.从min到max,步长为1遍历每个键值对 19 | * 3.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false 20 | */ 21 | public boolean checkBlank() { 22 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合 23 | Map map = new IdentityHashMap<>(); 24 | 25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 26 | long min = Long.MAX_VALUE; 27 | long max = Long.MIN_VALUE; 28 | while (it.hasNext()) { 29 | L label = it.next(); 30 | map.put(intervalSet.start(label), intervalSet.end(label)); 31 | min = Math.min(intervalSet.start(label), min); 32 | max = Math.max(intervalSet.end(label), max); 33 | } 34 | 35 | //从min到max,步长为1遍历每个键值对 36 | for (long i = min; i < max; i++) { 37 | boolean flag = false; 38 | for (Map.Entry entry : map.entrySet()) { 39 | if (i >= entry.getKey() && i <= entry.getValue()) { 40 | flag = true; 41 | break; 42 | } 43 | } 44 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中 45 | } 46 | return false; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/Interval/NonOverlapIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.HashMap; 4 | import java.util.IdentityHashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | 8 | public class NonOverlapIntervalSet extends IntervalSetDecorator implements IntervalSet { 9 | 10 | // Constructor 11 | public NonOverlapIntervalSet(IntervalSet intervalSet) { 12 | super(intervalSet); 13 | } 14 | 15 | /* 16 | * 思路 17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 18 | * 2.从min到max,步长为1遍历每个键值对 19 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠 20 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 21 | */ 22 | public boolean checkOverlap() { 23 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合 24 | Map map = new IdentityHashMap<>(); // 保存每个时间轴的起点与终点 25 | 26 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 27 | long min = Long.MAX_VALUE; 28 | long max = Long.MIN_VALUE; 29 | while (it.hasNext()) { 30 | L label = it.next(); 31 | map.put(intervalSet.start(label), intervalSet.end(label)); 32 | min = Math.min(intervalSet.start(label), min); 33 | max = Math.max(intervalSet.end(label), max); 34 | } 35 | 36 | // 从min到max,步长为1遍历每个键值对 37 | for (long i = min; i <= max; i++) { 38 | boolean flag1 = false, flag2 = false; 39 | for (Map.Entry entry : map.entrySet()) { 40 | if (i >= entry.getKey() && i <= entry.getValue()) { 41 | if (!flag1) 42 | flag1 = true; 43 | else { 44 | flag2 = true; 45 | break; 46 | } 47 | } 48 | } 49 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠 50 | } 51 | 52 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/MultiInterval/MultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.Set; 6 | 7 | public interface MultiIntervalSet { 8 | 9 | /** 10 | * 创建一个空的MultiIntervalSet. 11 | * 12 | * @param L为MultiIntervalSet标签的类型 13 | * @return 一个空的MultiIntervalSet 14 | */ 15 | public static MultiIntervalSet empty() { 16 | return new CommonMultiIntervalSet(); 17 | } 18 | 19 | /** 20 | * 判断该MultiIntervalSet是否为空 21 | * 22 | * @return 为空返回true,不为空返回false 23 | */ 24 | public boolean isEmpty(); 25 | 26 | /** 27 | * 在当前的multiIntervalSet中插入新的时间段和标签 28 | * 29 | * @param start 时间段的起点 30 | * @param end 时间段的终点 31 | * @param label 时间段的标签 32 | */ 33 | public void insert(long start, long end, L label); 34 | 35 | /** 36 | * 获得当前对象中的标签集合 37 | * 38 | * @return 当前对象中的标签集合 39 | */ 40 | public Set labels(); 41 | 42 | /** 43 | * 从当前MultiIntervalSet中移除某个标签所关联的所有时间段 44 | * 45 | * @param label 所要移除时间段的对应标签 46 | * @return 移除成功返回true,移除失败返回false 47 | */ 48 | public boolean remove(L label); 49 | 50 | /** 51 | * 从当前对象中获取与某个标签所关联的所有时间段 52 | * 53 | * @param label 所要获取具体信息的时间段的对应标签 54 | * @return 返回IntervalSet,其中的时间段按开始时间从小到大的次序排列 55 | */ 56 | public IntervalSet intervals(L label); 57 | 58 | /** 59 | * 判断时间轴是否允许空白 60 | * 61 | * @return 若存在空白,返回true;否则返回false 62 | */ 63 | public boolean checkBlank(); 64 | 65 | /** 66 | * 判断是否允许不同的 multiInterval 之间有重叠 67 | * 68 | * @return 若允许不同的 multiInterval 之间有重叠,返回true;否则返回false 69 | */ 70 | public boolean checkOverlap(); 71 | 72 | /** 73 | * 是否包含周期性的时间段 74 | * 75 | * @return 若包含周期性的时间段,则返回true;否则返回false 76 | */ 77 | public boolean checkPeriodic(); 78 | } 79 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/MultiInterval/MultiIntervalSetDecorator.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.Set; 6 | 7 | public abstract class MultiIntervalSetDecorator implements MultiIntervalSet { 8 | protected final MultiIntervalSet multiIntervalSet; 9 | 10 | // Constructor 11 | protected MultiIntervalSetDecorator(MultiIntervalSet multiIntervalSet) { 12 | this.multiIntervalSet = multiIntervalSet; 13 | } 14 | 15 | @Override 16 | public boolean isEmpty() { 17 | return multiIntervalSet.isEmpty(); 18 | } 19 | 20 | @Override 21 | public void insert(long start, long end, L label) { 22 | multiIntervalSet.insert(start,end,label); 23 | } 24 | 25 | @Override 26 | public Set labels() { 27 | return multiIntervalSet.labels(); 28 | } 29 | 30 | @Override 31 | public boolean remove(L label) { 32 | return multiIntervalSet.remove(label); 33 | } 34 | 35 | @Override 36 | public IntervalSet intervals(L label) { 37 | return multiIntervalSet.intervals(label); 38 | } 39 | 40 | @Override 41 | public boolean checkBlank() { 42 | return multiIntervalSet.checkBlank(); 43 | } 44 | 45 | @Override 46 | public boolean checkOverlap() { 47 | return multiIntervalSet.checkOverlap(); 48 | } 49 | 50 | @Override 51 | public boolean checkPeriodic() { 52 | return multiIntervalSet.checkPeriodic(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/MultiInterval/NoBlankMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.HashMap; 6 | import java.util.IdentityHashMap; 7 | import java.util.Iterator; 8 | import java.util.Map; 9 | 10 | public class NoBlankMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 11 | 12 | // Constructor 13 | public NoBlankMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 14 | super(multiIntervalSet); 15 | } 16 | 17 | /* 18 | * 思路 19 | * 1.找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 20 | * 3.从min到max,步长为1遍历每个键值对 21 | * 4.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false 22 | */ 23 | public boolean checkBlank() { 24 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合 25 | Map map = new IdentityHashMap<>(); 26 | 27 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 28 | long min = Long.MAX_VALUE; 29 | long max = Long.MIN_VALUE; 30 | while (it.hasNext()) { 31 | L label = it.next(); 32 | IntervalSet temp = multiIntervalSet.intervals(label); 33 | for (Integer tempLabel : temp.labels()) { 34 | map.put(temp.start(tempLabel), temp.end(tempLabel)); 35 | min = Math.min(temp.start(tempLabel), min); 36 | max = Math.max(temp.end(tempLabel), max); 37 | } 38 | } 39 | 40 | //从min到max,步长为1遍历每个键值对 41 | for (long i = min; i < max; i++) { 42 | boolean flag = false; 43 | for (Map.Entry entry : map.entrySet()) { 44 | if (i >= entry.getKey() && i <= entry.getValue()) { 45 | flag = true; 46 | break; 47 | } 48 | } 49 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中 50 | } 51 | return false; 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/MultiInterval/NonOverlapMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.HashMap; 6 | import java.util.IdentityHashMap; 7 | import java.util.Iterator; 8 | import java.util.Map; 9 | 10 | public class NonOverlapMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 11 | 12 | // Constructor 13 | public NonOverlapMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 14 | super(multiIntervalSet); 15 | } 16 | 17 | /* 18 | * 思路 19 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 20 | * 2.从min到max,步长为1遍历每个键值对 21 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠 22 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 23 | */ 24 | public boolean checkOverlap() { 25 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合 26 | Map map = new IdentityHashMap<>(); 27 | 28 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 29 | long min = Long.MAX_VALUE; 30 | long max = Long.MIN_VALUE; 31 | while (it.hasNext()) { 32 | L label = it.next(); 33 | IntervalSet temp = multiIntervalSet.intervals(label); 34 | for (Integer tempLabel : temp.labels()) { 35 | map.put(temp.start(tempLabel), temp.end(tempLabel)); 36 | min = Math.min(temp.start(tempLabel), min); 37 | max = Math.max(temp.end(tempLabel), max); 38 | } 39 | } 40 | 41 | // 从min到max,步长为1遍历每个键值对 42 | for (long i = min; i < max; i++) { 43 | boolean flag1 = false, flag2 = false; 44 | for (Map.Entry entry : map.entrySet()) { 45 | if (i >= entry.getKey() && i <= entry.getValue()) { 46 | if (!flag1) 47 | flag1 = true; 48 | else { 49 | flag2 = true; 50 | break; 51 | } 52 | } 53 | } 54 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠 55 | } 56 | 57 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/ADT/MultiInterval/NonPeriodicMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | public class NonPeriodicMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 4 | 5 | // Constructor 6 | public NonPeriodicMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 7 | super(multiIntervalSet); 8 | } 9 | 10 | public boolean checkPeriodic() { 11 | return false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/SubADT/CourseSchedule/Course.java: -------------------------------------------------------------------------------- 1 | package SubADT.CourseSchedule; 2 | 3 | import java.util.Objects; 4 | 5 | public class Course { 6 | private final String ID; 7 | private final String name; 8 | private final String teacher; 9 | private final String location; 10 | private final int weekHour; 11 | 12 | public Course(String ID, String name, String teacher, String location, int weekHour) { 13 | this.ID = ID; // 课程ID 14 | this.name = name; // 课程名称 15 | this.teacher = teacher; // 授课老师 16 | this.location = location; // 上课地点 17 | this.weekHour = weekHour; // 周最大学时数 18 | } 19 | 20 | public String getID() { 21 | return ID; 22 | } 23 | 24 | public String getName() { 25 | return name; 26 | } 27 | 28 | public String getTeacher() { 29 | return teacher; 30 | } 31 | 32 | public String getLocation() { 33 | return location; 34 | } 35 | 36 | public int getWeekHour() { return weekHour; } 37 | 38 | @Override 39 | public boolean equals(Object o) { 40 | if (this == o) return true; 41 | if (o == null || getClass() != o.getClass()) return false; 42 | Course course = (Course) o; 43 | return Objects.equals(ID, course.ID); 44 | } 45 | 46 | @Override 47 | public int hashCode() { 48 | return Objects.hash(ID); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/SubADT/DutyRoster/Employee.java: -------------------------------------------------------------------------------- 1 | package SubADT.DutyRoster; 2 | 3 | import java.util.Objects; 4 | 5 | public class Employee { 6 | private final String name; // 姓名 7 | private final String duty; // 职务 8 | private final String phone;// 电话 9 | 10 | public Employee(String name, String duty, String phone) { 11 | this.name = name; 12 | this.duty = duty; 13 | this.phone = phone; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public String getDuty() { 21 | return duty; 22 | } 23 | 24 | public String getPhone() { 25 | return phone; 26 | } 27 | 28 | @Override 29 | public boolean equals(Object o) { 30 | if (this == o) return true; 31 | if (o == null || getClass() != o.getClass()) return false; 32 | Employee employee = (Employee) o; 33 | return Objects.equals(name, employee.name); 34 | } 35 | 36 | @Override 37 | public int hashCode() { 38 | return Objects.hash(name); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/SubADT/ProcessSchedule/Process.java: -------------------------------------------------------------------------------- 1 | package SubADT.ProcessSchedule; 2 | 3 | import java.util.Objects; 4 | 5 | public class Process { 6 | private final long ID; // 进程ID 7 | private final String name; // 进程名称 8 | private final long minTime; // 最短执行时间 9 | private final long maxTime; // 最长执行时间 10 | 11 | public Process(long ID, String name, long minTime, long maxTime) { 12 | this.ID = ID; 13 | this.name = name; 14 | this.minTime = minTime; 15 | this.maxTime = maxTime; 16 | } 17 | 18 | public long getID() { 19 | return ID; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public long getMinTime() { 27 | return minTime; 28 | } 29 | 30 | public long getMaxTime() { 31 | return maxTime; 32 | } 33 | 34 | @Override 35 | public boolean equals(Object o) { 36 | if (this == o) return true; 37 | if (o == null || getClass() != o.getClass()) return false; 38 | Process process = (Process) o; 39 | return ID == process.ID; 40 | } 41 | 42 | @Override 43 | public int hashCode() { 44 | return Objects.hash(ID); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test1.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test2.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test3.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test4.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test5.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test6.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test7.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/src/txt/test8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/src/txt/test8.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/Interval/CommonIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/CommonIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSetDecorator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/IntervalSetDecorator.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/Interval/NoBlankIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/NoBlankIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/Interval/NonOverlapIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/Interval/NonOverlapIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/API/APIs.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/API/APIs.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/Course.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/Course.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyRosterApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/DutyRosterApp.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/Employee.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/Employee.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/parserInput.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/DutyRoster/parserInput.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/Process.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/Process.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test1.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test2.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test3.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test4.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test5.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test6.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test7.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/classes/txt/test8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/classes/txt/test8.txt -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/Interval/CommonIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/CommonIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetStaticTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/IntervalSetStaticTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/API/APIsTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/API/APIsTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208-origin/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/Interval/CommonIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | public class CommonIntervalSetTest extends IntervalSetInstanceTest{ 4 | 5 | /* 6 | * Provide a commonIntervalSet for tests in IntervalInstanceTest. 7 | */ 8 | @Override 9 | public IntervalSet emptyInstance() { 10 | return new CommonIntervalSet<>(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/Interval/IntervalSetStaticTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.Collections; 6 | 7 | import static org.junit.Assert.assertEquals; 8 | 9 | public class IntervalSetStaticTest { 10 | @Test(expected = AssertionError.class) 11 | public void testAssertionsEnabled() { 12 | assert false; // make sure assertions are enabled with VM argument: -ea 13 | } 14 | 15 | @Test 16 | public void testEmptyVerticesEmpty() { 17 | assertEquals("expected empty() IntervalSet to have no labels", 18 | Collections.emptySet(), IntervalSet.empty().labels()); 19 | } 20 | 21 | // test other label types 22 | @Test 23 | public void testDifferentDataLabel() { 24 | assertEquals("expected empty() IntervalSet to have no labels", 25 | Collections.emptySet(), IntervalSet.empty().labels()); 26 | assertEquals("expected empty() IntervalSet to have no labels", 27 | Collections.emptySet(), IntervalSet.empty().labels()); 28 | assertEquals("expected empty() IntervalSet to have no labels", 29 | Collections.emptySet(), IntervalSet.empty().labels()); 30 | assertEquals("expected empty() IntervalSet to have no labels", 31 | Collections.emptySet(), IntervalSet.empty().labels()); 32 | assertEquals("expected empty() IntervalSet to have no labels", 33 | Collections.emptySet(), IntervalSet.empty().labels()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/Interval/NoBlankIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class NoBlankIntervalSetTest { 8 | 9 | /** 10 | * Tests that assertions are enabled. 11 | */ 12 | @Test(expected = AssertionError.class) 13 | public void testAssertionsEnabled() { 14 | assert false; 15 | } 16 | 17 | @Test 18 | // 测试时间轴有空白的情况 19 | public void testCheckBlank1(){ 20 | IntervalSet intervalSet = new CommonIntervalSet<>(); 21 | 22 | intervalSet.insert(1,3,"a"); 23 | intervalSet.insert(2,4,"b"); 24 | intervalSet.insert(6,7,"c"); 25 | 26 | assertTrue(intervalSet.checkBlank()); 27 | } 28 | 29 | @Test 30 | // 测试时间轴无空白的情况 31 | public void testCheckBlank2(){ 32 | IntervalSet intervalSet = new CommonIntervalSet<>(); 33 | 34 | intervalSet.insert(10,200,"a"); 35 | intervalSet.insert(200,300,"b"); 36 | intervalSet.insert(20,50,"c"); 37 | intervalSet.insert(250,400,"d"); 38 | 39 | assertFalse(intervalSet.checkBlank()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/Interval/NonOverlapIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NonOverlapIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试允许重叠的情况 20 | public void testCheckOverlap1(){ 21 | IntervalSet intervalSet = new CommonIntervalSet<>(); 22 | 23 | intervalSet.insert(10,200,"a"); 24 | intervalSet.insert(20,300,"b"); 25 | intervalSet.insert(400,500,"c"); 26 | 27 | assertTrue(intervalSet.checkOverlap()); 28 | } 29 | 30 | @Test 31 | // 测试不允许重叠的情况 32 | public void testCheckOverlap2(){ 33 | IntervalSet intervalSet = new CommonIntervalSet<>(); 34 | 35 | intervalSet.insert(10,200,"a"); 36 | intervalSet.insert(201,300,"b"); 37 | intervalSet.insert(400,500,"c"); 38 | 39 | assertFalse(intervalSet.checkOverlap()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/MultiInterval/NoBlankMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NoBlankMultiIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试时间轴有空白的情况 20 | public void testCheckBlank1(){ 21 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>(); 22 | 23 | multiIntervalSet.insert(1,3,"a"); 24 | multiIntervalSet.insert(2,4,"a"); 25 | multiIntervalSet.insert(6,7,"a"); 26 | 27 | assertTrue(multiIntervalSet.checkBlank()); 28 | } 29 | 30 | @Test 31 | // 测试时间轴无空白的情况 32 | public void testCheckBlank2(){ 33 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>(); 34 | 35 | multiIntervalSet.insert(10,200,"a"); 36 | multiIntervalSet.insert(200,300,"a"); 37 | multiIntervalSet.insert(20,50,"b"); 38 | multiIntervalSet.insert(250,400,"b"); 39 | 40 | assertFalse(multiIntervalSet.checkBlank()); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NonOverlapMultiIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试允许重叠的情况 20 | public void testCheckOverlap1(){ 21 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>(); 22 | 23 | MultiIntervalSet.insert(10,200,"a"); 24 | MultiIntervalSet.insert(20,300,"a"); 25 | MultiIntervalSet.insert(400,500,"a"); 26 | 27 | assertTrue(MultiIntervalSet.checkOverlap()); 28 | } 29 | 30 | @Test 31 | // 测试不允许重叠的情况 32 | public void testCheckOverlap2(){ 33 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>(); 34 | 35 | MultiIntervalSet.insert(10,200,"a"); 36 | MultiIntervalSet.insert(201,300,"a"); 37 | MultiIntervalSet.insert(400,500,"a"); 38 | 39 | assertFalse(MultiIntervalSet.checkOverlap()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208-origin/test/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | public class NonPeriodicMultiIntervalSetTest { 6 | 7 | /** 8 | * Tests that assertions are enabled. 9 | */ 10 | @Test(expected = AssertionError.class) 11 | public void testAssertionsEnabled() { 12 | assert false; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Lab3-1190200208/.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Maven 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven 3 | 4 | name: Java CI with Maven 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up JDK 8 20 | uses: actions/setup-java@v2 21 | with: 22 | java-version: '8' 23 | distribution: 'adopt' 24 | - name: Build with Maven 25 | run: mvn -B package --file pom.xml 26 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/.gitignore -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/dataSources.local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/Lab3-1190200208-Report.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/Lab3-1190200208-Report.docx -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/junit-4.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/junit-4.12.jar -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/shelved.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57_[Default_Changelist]/shelved.patch -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/shelf/Uncommitted_changes_before_Checkout_at_2021-07-03_20_57__Default_Changelist_.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Lab3-1190200208/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Lab3-1190200208/.replit: -------------------------------------------------------------------------------- 1 | language = "java10" -------------------------------------------------------------------------------- /Lab3-1190200208/README.md: -------------------------------------------------------------------------------- 1 | [![Work in Repl.it](https://classroom.github.com/assets/work-in-replit-14baed9a392b3a25080506f3b7b6d57f295ec2978f6f33ec97e36a161684cbe9.svg)](https://classroom.github.com/online_ide?assignment_repo_id=4889817&assignment_repo_type=AssignmentRepo) 2 | -------------------------------------------------------------------------------- /Lab3-1190200208/doc/Lab3-1190200208-Report.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/doc/Lab3-1190200208-Report.docx -------------------------------------------------------------------------------- /Lab3-1190200208/lib/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/lib/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /Lab3-1190200208/lib/junit-4.12.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/lib/junit-4.12.jar -------------------------------------------------------------------------------- /Lab3-1190200208/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | org.example 8 | Lab3-1190200208 9 | 1.0-SNAPSHOT 10 | 11 | 12 | junit 13 | junit 14 | 4.12 15 | test 16 | 17 | 18 | 19 | 20 | 14 21 | 14 22 | 23 | 24 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/Interval/IntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.Set; 4 | 5 | public interface IntervalSet { 6 | 7 | /** 8 | * 创建一个空的IntervalSet. 9 | * 10 | * @param L为IntervalSet标签的类型 11 | * @return 一个空的IntervalSet 12 | */ 13 | public static IntervalSet empty() { 14 | return new CommonIntervalSet(); 15 | } 16 | 17 | /** 18 | * 在当前的IntervalSet中插入新的时间段和标签 19 | * 20 | * @param start 时间段的起点 21 | * @param end 时间段的终点 22 | * @param label 时间段的标签 23 | */ 24 | public void insert(long start, long end, L label); 25 | 26 | /** 27 | * 获得当前对象中的标签集合 28 | * 29 | * @return 当前对象中的标签集合 30 | */ 31 | public Set labels(); 32 | 33 | /** 34 | * 从当前IntervalSet中移除某个标签所关联的时间段 35 | * 36 | * @param label 所要移除时间段的对应标签 37 | * @return 移除成功返回true,移除失败返回false 38 | */ 39 | public boolean remove(L label); 40 | 41 | /** 42 | * 返回某个标签对应的时间段的开始时间 43 | * 44 | * @param label 时间段对应的标签 45 | * @return 返回开始时间,若没找到标签对应的时间段,则返回-1 46 | */ 47 | public long start(L label); 48 | 49 | /** 50 | * 返回某个标签对应的时间段的结束时间 51 | * 52 | * @param label 时间段对应的标签 53 | * @return 返回结束时间,若没找到标签对应的时间段,则返回-1 54 | */ 55 | public long end(L label); 56 | 57 | /** 58 | * 判断该IntervalSet是否为空 59 | * 60 | * @return 为空返回true,不为空返回false 61 | */ 62 | public boolean isEmpty(); 63 | 64 | /** 65 | * 判断时间轴是否存在空白 66 | * 67 | * @return 若存在空白,返回true;否则返回false 68 | */ 69 | public boolean checkBlank(); 70 | 71 | /** 72 | * 判断是否存在不同的 interval 之间有重叠 73 | * 74 | * @return 若存在不同的 interval 之间有重叠,返回true;否则返回false 75 | */ 76 | public boolean checkOverlap(); 77 | } 78 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/Interval/IntervalSetDecorator.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.Set; 4 | 5 | public abstract class IntervalSetDecorator implements IntervalSet { 6 | protected final IntervalSet intervalSet; 7 | 8 | // Constructor 9 | public IntervalSetDecorator(IntervalSet intervalSet) { 10 | this.intervalSet = intervalSet; 11 | } 12 | 13 | @Override 14 | public void insert(long start, long end, L label) { 15 | intervalSet.insert(start, end, label); 16 | } 17 | 18 | @Override 19 | public Set labels() { 20 | return intervalSet.labels(); 21 | } 22 | 23 | @Override 24 | public boolean remove(L label) { 25 | return intervalSet.remove(label); 26 | } 27 | 28 | @Override 29 | public long start(L label) { 30 | return intervalSet.start(label); 31 | } 32 | 33 | @Override 34 | public long end(L label) { 35 | return intervalSet.end(label); 36 | } 37 | 38 | @Override 39 | public boolean isEmpty() { 40 | return intervalSet.isEmpty(); 41 | } 42 | 43 | @Override 44 | public boolean checkBlank() { 45 | return intervalSet.checkBlank(); 46 | } 47 | 48 | @Override 49 | public boolean checkOverlap() { 50 | return intervalSet.checkOverlap(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/Interval/NoBlankIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.HashMap; 4 | import java.util.IdentityHashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | 8 | public class NoBlankIntervalSet extends IntervalSetDecorator implements IntervalSet { 9 | 10 | // Constructor 11 | public NoBlankIntervalSet(IntervalSet intervalSet) { 12 | super(intervalSet); 13 | } 14 | 15 | /* 16 | * 思路 17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 18 | * 2.从min到max,步长为1遍历每个键值对 19 | * 3.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false 20 | */ 21 | public boolean checkBlank() { 22 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合 23 | Map map = new IdentityHashMap<>(); 24 | 25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 26 | long min = Long.MAX_VALUE; 27 | long max = Long.MIN_VALUE; 28 | while (it.hasNext()) { 29 | L label = it.next(); 30 | map.put(intervalSet.start(label), intervalSet.end(label)); 31 | min = Math.min(intervalSet.start(label), min); 32 | max = Math.max(intervalSet.end(label), max); 33 | } 34 | 35 | //从min到max,步长为1遍历每个键值对 36 | for (long i = min; i < max; i++) { 37 | boolean flag = false; 38 | for (Map.Entry entry : map.entrySet()) { 39 | if (i >= entry.getKey() && i <= entry.getValue()) { 40 | flag = true; 41 | break; 42 | } 43 | } 44 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中 45 | } 46 | return false; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/Interval/NonOverlapIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import java.util.HashMap; 4 | import java.util.IdentityHashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | 8 | public class NonOverlapIntervalSet extends IntervalSetDecorator implements IntervalSet { 9 | 10 | // Constructor 11 | public NonOverlapIntervalSet(IntervalSet intervalSet) { 12 | super(intervalSet); 13 | } 14 | 15 | /* 16 | * 思路 17 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 18 | * 2.从min到max,步长为1遍历每个键值对 19 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠 20 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 21 | */ 22 | public boolean checkOverlap() { 23 | Iterator it = intervalSet.labels().iterator(); // 方便遍历标签集合 24 | Map map = new IdentityHashMap<>(); // 保存每个时间轴的起点与终点 25 | 26 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 27 | long min = Long.MAX_VALUE; 28 | long max = Long.MIN_VALUE; 29 | while (it.hasNext()) { 30 | L label = it.next(); 31 | map.put(intervalSet.start(label), intervalSet.end(label)); 32 | min = Math.min(intervalSet.start(label), min); 33 | max = Math.max(intervalSet.end(label), max); 34 | } 35 | 36 | // 从min到max,步长为1遍历每个键值对 37 | for (long i = min; i <= max; i++) { 38 | boolean flag1 = false, flag2 = false; 39 | for (Map.Entry entry : map.entrySet()) { 40 | if (i >= entry.getKey() && i <= entry.getValue()) { 41 | if (!flag1) 42 | flag1 = true; 43 | else { 44 | flag2 = true; 45 | break; 46 | } 47 | } 48 | } 49 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠 50 | } 51 | 52 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/MultiInterval/MultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.Set; 6 | 7 | public interface MultiIntervalSet { 8 | 9 | /** 10 | * 创建一个空的MultiIntervalSet. 11 | * 12 | * @param L为MultiIntervalSet标签的类型 13 | * @return 一个空的MultiIntervalSet 14 | */ 15 | public static MultiIntervalSet empty() { 16 | return new CommonMultiIntervalSet(); 17 | } 18 | 19 | /** 20 | * 判断该MultiIntervalSet是否为空 21 | * 22 | * @return 为空返回true,不为空返回false 23 | */ 24 | public boolean isEmpty(); 25 | 26 | /** 27 | * 在当前的multiIntervalSet中插入新的时间段和标签 28 | * 29 | * @param start 时间段的起点 30 | * @param end 时间段的终点 31 | * @param label 时间段的标签 32 | */ 33 | public void insert(long start, long end, L label); 34 | 35 | /** 36 | * 获得当前对象中的标签集合 37 | * 38 | * @return 当前对象中的标签集合 39 | */ 40 | public Set labels(); 41 | 42 | /** 43 | * 从当前MultiIntervalSet中移除某个标签所关联的所有时间段 44 | * 45 | * @param label 所要移除时间段的对应标签 46 | * @return 移除成功返回true,移除失败返回false 47 | */ 48 | public boolean remove(L label); 49 | 50 | /** 51 | * 从当前对象中获取与某个标签所关联的所有时间段 52 | * 53 | * @param label 所要获取具体信息的时间段的对应标签 54 | * @return 返回IntervalSet,其中的时间段按开始时间从小到大的次序排列 55 | */ 56 | public IntervalSet intervals(L label); 57 | 58 | /** 59 | * 判断时间轴是否允许空白 60 | * 61 | * @return 若存在空白,返回true;否则返回false 62 | */ 63 | public boolean checkBlank(); 64 | 65 | /** 66 | * 判断是否允许不同的 multiInterval 之间有重叠 67 | * 68 | * @return 若允许不同的 multiInterval 之间有重叠,返回true;否则返回false 69 | */ 70 | public boolean checkOverlap(); 71 | 72 | /** 73 | * 是否包含周期性的时间段 74 | * 75 | * @return 若包含周期性的时间段,则返回true;否则返回false 76 | */ 77 | public boolean checkPeriodic(); 78 | 79 | /** 80 | * 从当前MultiIntervalSet中移除某个标签所关联的特定时间段 81 | * 82 | * @param label 所要移除时间段的对应标签 83 | * @param start 所要移除时间段的起点 84 | * @return 移除成功返回true,移除失败返回false 85 | */ 86 | public boolean removeSpecific(L label, long start); 87 | } 88 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/MultiInterval/MultiIntervalSetDecorator.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.Set; 6 | 7 | public abstract class MultiIntervalSetDecorator implements MultiIntervalSet { 8 | protected final MultiIntervalSet multiIntervalSet; 9 | 10 | // Constructor 11 | protected MultiIntervalSetDecorator(MultiIntervalSet multiIntervalSet) { 12 | this.multiIntervalSet = multiIntervalSet; 13 | } 14 | 15 | @Override 16 | public boolean isEmpty() { 17 | return multiIntervalSet.isEmpty(); 18 | } 19 | 20 | @Override 21 | public void insert(long start, long end, L label) { 22 | multiIntervalSet.insert(start,end,label); 23 | } 24 | 25 | @Override 26 | public Set labels() { 27 | return multiIntervalSet.labels(); 28 | } 29 | 30 | @Override 31 | public boolean remove(L label) { 32 | return multiIntervalSet.remove(label); 33 | } 34 | 35 | @Override 36 | public IntervalSet intervals(L label) { 37 | return multiIntervalSet.intervals(label); 38 | } 39 | 40 | @Override 41 | public boolean checkBlank() { 42 | return multiIntervalSet.checkBlank(); 43 | } 44 | 45 | @Override 46 | public boolean checkOverlap() { 47 | return multiIntervalSet.checkOverlap(); 48 | } 49 | 50 | @Override 51 | public boolean checkPeriodic() { 52 | return multiIntervalSet.checkPeriodic(); 53 | } 54 | 55 | @Override 56 | public boolean removeSpecific(L label, long start) { 57 | return multiIntervalSet.removeSpecific(label,start); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/MultiInterval/NoBlankMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.HashMap; 6 | import java.util.IdentityHashMap; 7 | import java.util.Iterator; 8 | import java.util.Map; 9 | 10 | public class NoBlankMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 11 | 12 | // Constructor 13 | public NoBlankMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 14 | super(multiIntervalSet); 15 | } 16 | 17 | /* 18 | * 思路 19 | * 1.找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 20 | * 3.从min到max,步长为1遍历每个键值对 21 | * 4.若存在某个值不在一个键值对区间中,则返回true,否则遍历完成后返回false 22 | */ 23 | public boolean checkBlank() { 24 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合 25 | Map map = new IdentityHashMap<>(); 26 | 27 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 28 | long min = Long.MAX_VALUE; 29 | long max = Long.MIN_VALUE; 30 | while (it.hasNext()) { 31 | L label = it.next(); 32 | IntervalSet temp = multiIntervalSet.intervals(label); 33 | for (Integer tempLabel : temp.labels()) { 34 | map.put(temp.start(tempLabel), temp.end(tempLabel)); 35 | min = Math.min(temp.start(tempLabel), min); 36 | max = Math.max(temp.end(tempLabel), max); 37 | } 38 | } 39 | 40 | //从min到max,步长为1遍历每个键值对 41 | for (long i = min; i < max; i++) { 42 | boolean flag = false; 43 | for (Map.Entry entry : map.entrySet()) { 44 | if (i >= entry.getKey() && i <= entry.getValue()) { 45 | flag = true; 46 | break; 47 | } 48 | } 49 | if (!flag) return true; // 此次循环,i不在任何一个键值对区间中 50 | } 51 | return false; 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/MultiInterval/NonOverlapMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import ADT.Interval.IntervalSet; 4 | 5 | import java.util.*; 6 | 7 | public class NonOverlapMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 8 | 9 | // Constructor 10 | public NonOverlapMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 11 | super(multiIntervalSet); 12 | } 13 | 14 | /* 15 | * 思路 16 | * 1.首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 17 | * 2.从min到max,步长为1遍历每个键值对 18 | * 3.若某个点i同时存在于两个键值对中,则return true,即允许重叠 19 | * 4.若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 20 | */ 21 | public boolean checkOverlap() { 22 | Iterator it = multiIntervalSet.labels().iterator(); // 方便遍历标签集合 23 | List> map = new ArrayList<>(); 24 | 25 | // 首先找到时间轴的起点与终点min,max;并将每组标签对应的start-end保存在键值对中 26 | long min = Long.MAX_VALUE; 27 | long max = Long.MIN_VALUE; 28 | while (it.hasNext()) { 29 | L label = it.next(); 30 | IntervalSet temp = multiIntervalSet.intervals(label); 31 | for (Integer tempLabel : temp.labels()) { 32 | List subList = new ArrayList<>(); 33 | subList.add(temp.start(tempLabel)); 34 | subList.add(temp.end(tempLabel)); 35 | map.add(subList); 36 | min = Math.min(temp.start(tempLabel), min); 37 | max = Math.max(temp.end(tempLabel), max); 38 | } 39 | } 40 | 41 | // 从min到max,步长为1遍历每个键值对 42 | for (long i = min; i <= max; i++) { 43 | boolean flag1 = false, flag2 = false; 44 | Iterator> it2 = map.iterator(); 45 | while (it2.hasNext()) { 46 | List entry = it2.next(); 47 | if (i >= entry.get(0) && i <= entry.get(1)) { 48 | if (!flag1) 49 | flag1 = true; 50 | else { 51 | flag2 = true; 52 | break; 53 | } 54 | } 55 | } 56 | if (flag1 && flag2) return true; // 若某个点i同时存在于两个键值对中,则return true,即允许重叠 57 | } 58 | 59 | return false; // 若遍历到最后也没有点同时存在于两个键值对中,则return false,即不允许重叠 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/ADT/MultiInterval/NonPeriodicMultiIntervalSet.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | public class NonPeriodicMultiIntervalSet extends MultiIntervalSetDecorator implements MultiIntervalSet { 4 | 5 | // Constructor 6 | public NonPeriodicMultiIntervalSet(MultiIntervalSet multiIntervalSet) { 7 | super(multiIntervalSet); 8 | } 9 | 10 | public boolean checkPeriodic() { 11 | return false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/SubADT/CourseSchedule/Course.java: -------------------------------------------------------------------------------- 1 | package SubADT.CourseSchedule; 2 | 3 | import java.util.Objects; 4 | 5 | public class Course { 6 | private final String ID; 7 | private final String name; 8 | private final String teacher; 9 | private final String location; 10 | private final int weekHour; 11 | 12 | public Course(String ID, String name, String teacher, String location, int weekHour) { 13 | this.ID = ID; // 课程ID 14 | this.name = name; // 课程名称 15 | this.teacher = teacher; // 授课老师 16 | this.location = location; // 上课地点 17 | this.weekHour = weekHour; // 周最大学时数 18 | } 19 | 20 | public String getID() { 21 | return ID; 22 | } 23 | 24 | public String getName() { 25 | return name; 26 | } 27 | 28 | public String getTeacher() { 29 | return teacher; 30 | } 31 | 32 | public String getLocation() { 33 | return location; 34 | } 35 | 36 | public int getWeekHour() { return weekHour; } 37 | 38 | @Override 39 | public boolean equals(Object o) { 40 | if (this == o) return true; 41 | if (o == null || getClass() != o.getClass()) return false; 42 | Course course = (Course) o; 43 | return Objects.equals(ID, course.ID); 44 | } 45 | 46 | @Override 47 | public int hashCode() { 48 | return Objects.hash(ID); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/SubADT/DutyRoster/Employee.java: -------------------------------------------------------------------------------- 1 | package SubADT.DutyRoster; 2 | 3 | import java.util.Objects; 4 | 5 | public class Employee { 6 | private final String name; // 姓名 7 | private final String duty; // 职务 8 | private final String phone;// 电话 9 | 10 | public Employee(String name, String duty, String phone) { 11 | this.name = name; 12 | this.duty = duty; 13 | this.phone = phone; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public String getDuty() { 21 | return duty; 22 | } 23 | 24 | public String getPhone() { 25 | return phone; 26 | } 27 | 28 | @Override 29 | public boolean equals(Object o) { 30 | if (this == o) return true; 31 | if (o == null || getClass() != o.getClass()) return false; 32 | Employee employee = (Employee) o; 33 | return Objects.equals(name, employee.name); 34 | } 35 | 36 | @Override 37 | public int hashCode() { 38 | return Objects.hash(name); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/SubADT/ProcessSchedule/Process.java: -------------------------------------------------------------------------------- 1 | package SubADT.ProcessSchedule; 2 | 3 | import java.util.Objects; 4 | 5 | public class Process { 6 | private final long ID; // 进程ID 7 | private final String name; // 进程名称 8 | private final long minTime; // 最短执行时间 9 | private final long maxTime; // 最长执行时间 10 | 11 | public Process(long ID, String name, long minTime, long maxTime) { 12 | this.ID = ID; 13 | this.name = name; 14 | this.minTime = minTime; 15 | this.maxTime = maxTime; 16 | } 17 | 18 | public long getID() { 19 | return ID; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public long getMinTime() { 27 | return minTime; 28 | } 29 | 30 | public long getMaxTime() { 31 | return maxTime; 32 | } 33 | 34 | @Override 35 | public boolean equals(Object o) { 36 | if (this == o) return true; 37 | if (o == null || getClass() != o.getClass()) return false; 38 | Process process = (Process) o; 39 | return ID == process.ID; 40 | } 41 | 42 | @Override 43 | public int hashCode() { 44 | return Objects.hash(ID); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test1.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test2.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test3.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test4.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test5.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test6.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test7.txt -------------------------------------------------------------------------------- /Lab3-1190200208/src/txt/test8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/src/txt/test8.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/Interval/CommonIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/CommonIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/Interval/IntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/IntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/Interval/IntervalSetDecorator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/IntervalSetDecorator.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/Interval/NoBlankIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/NoBlankIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/Interval/NonOverlapIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/Interval/NonOverlapIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/CommonMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/MultiIntervalSetDecorator.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/NoBlankMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/NonOverlapMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/ADT/MultiInterval/NonPeriodicMultiIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/API/APIs.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/API/APIs.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/CourseSchedule/Course.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/CourseSchedule/Course.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/CourseSchedule/CourseScheduleApp.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyRosterApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/DutyRosterApp.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/DutyRoster/Employee.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/Employee.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/DutyRoster/parserInput.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/DutyRoster/parserInput.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/ProcessSchedule/Process.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/Process.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessIntervalSet.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/SubADT/ProcessSchedule/ProcessScheduleApp.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test1.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test2.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test3.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test4.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test4.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test5.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test5.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test6.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test6.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test7.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test7.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/classes/txt/test8.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/classes/txt/test8.txt -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/Interval/CommonIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/CommonIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetInstanceTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetStaticTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/IntervalSetStaticTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/NoBlankIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/Interval/NonOverlapIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/MultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NoBlankMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/API/APIsTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/API/APIsTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/SubADT/CourseSchedule/CourseIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/SubADT/DutyRoster/DutyIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/Lab3-1190200208/target/test-classes/SubADT/ProcessSchedule/ProcessIntervalSetTest.class -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/Interval/CommonIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | public class CommonIntervalSetTest extends IntervalSetInstanceTest{ 4 | 5 | /* 6 | * Provide a commonIntervalSet for tests in IntervalInstanceTest. 7 | */ 8 | @Override 9 | public IntervalSet emptyInstance() { 10 | return new CommonIntervalSet<>(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/Interval/IntervalSetStaticTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.Collections; 6 | 7 | import static org.junit.Assert.assertEquals; 8 | 9 | public class IntervalSetStaticTest { 10 | @Test(expected = AssertionError.class) 11 | public void testAssertionsEnabled() { 12 | assert false; // make sure assertions are enabled with VM argument: -ea 13 | } 14 | 15 | @Test 16 | public void testEmptyVerticesEmpty() { 17 | assertEquals("expected empty() IntervalSet to have no labels", 18 | Collections.emptySet(), IntervalSet.empty().labels()); 19 | } 20 | 21 | // test other label types 22 | @Test 23 | public void testDifferentDataLabel() { 24 | assertEquals("expected empty() IntervalSet to have no labels", 25 | Collections.emptySet(), IntervalSet.empty().labels()); 26 | assertEquals("expected empty() IntervalSet to have no labels", 27 | Collections.emptySet(), IntervalSet.empty().labels()); 28 | assertEquals("expected empty() IntervalSet to have no labels", 29 | Collections.emptySet(), IntervalSet.empty().labels()); 30 | assertEquals("expected empty() IntervalSet to have no labels", 31 | Collections.emptySet(), IntervalSet.empty().labels()); 32 | assertEquals("expected empty() IntervalSet to have no labels", 33 | Collections.emptySet(), IntervalSet.empty().labels()); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/Interval/NoBlankIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class NoBlankIntervalSetTest { 8 | 9 | /** 10 | * Tests that assertions are enabled. 11 | */ 12 | @Test(expected = AssertionError.class) 13 | public void testAssertionsEnabled() { 14 | assert false; 15 | } 16 | 17 | @Test 18 | // 测试时间轴有空白的情况 19 | public void testCheckBlank1(){ 20 | IntervalSet intervalSet = new CommonIntervalSet<>(); 21 | 22 | intervalSet.insert(1,3,"a"); 23 | intervalSet.insert(2,4,"b"); 24 | intervalSet.insert(6,7,"c"); 25 | 26 | assertTrue(intervalSet.checkBlank()); 27 | } 28 | 29 | @Test 30 | // 测试时间轴无空白的情况 31 | public void testCheckBlank2(){ 32 | IntervalSet intervalSet = new CommonIntervalSet<>(); 33 | 34 | intervalSet.insert(10,200,"a"); 35 | intervalSet.insert(200,300,"b"); 36 | intervalSet.insert(20,50,"c"); 37 | intervalSet.insert(250,400,"d"); 38 | 39 | assertFalse(intervalSet.checkBlank()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/Interval/NonOverlapIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.Interval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NonOverlapIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试允许重叠的情况 20 | public void testCheckOverlap1(){ 21 | IntervalSet intervalSet = new CommonIntervalSet<>(); 22 | 23 | intervalSet.insert(10,200,"a"); 24 | intervalSet.insert(20,300,"b"); 25 | intervalSet.insert(400,500,"c"); 26 | 27 | assertTrue(intervalSet.checkOverlap()); 28 | } 29 | 30 | @Test 31 | // 测试不允许重叠的情况 32 | public void testCheckOverlap2(){ 33 | IntervalSet intervalSet = new CommonIntervalSet<>(); 34 | 35 | intervalSet.insert(10,200,"a"); 36 | intervalSet.insert(201,300,"b"); 37 | intervalSet.insert(400,500,"c"); 38 | 39 | assertFalse(intervalSet.checkOverlap()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/MultiInterval/NoBlankMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NoBlankMultiIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试时间轴有空白的情况 20 | public void testCheckBlank1(){ 21 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>(); 22 | 23 | multiIntervalSet.insert(1,3,"a"); 24 | multiIntervalSet.insert(2,4,"a"); 25 | multiIntervalSet.insert(6,7,"a"); 26 | 27 | assertTrue(multiIntervalSet.checkBlank()); 28 | } 29 | 30 | @Test 31 | // 测试时间轴无空白的情况 32 | public void testCheckBlank2(){ 33 | MultiIntervalSet multiIntervalSet = new CommonMultiIntervalSet<>(); 34 | 35 | multiIntervalSet.insert(10,200,"a"); 36 | multiIntervalSet.insert(200,300,"a"); 37 | multiIntervalSet.insert(20,50,"b"); 38 | multiIntervalSet.insert(250,400,"b"); 39 | 40 | assertFalse(multiIntervalSet.checkBlank()); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/MultiInterval/NonOverlapMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | public class NonOverlapMultiIntervalSetTest { 9 | 10 | /** 11 | * Tests that assertions are enabled. 12 | */ 13 | @Test(expected = AssertionError.class) 14 | public void testAssertionsEnabled() { 15 | assert false; 16 | } 17 | 18 | @Test 19 | // 测试允许重叠的情况 20 | public void testCheckOverlap1(){ 21 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>(); 22 | 23 | MultiIntervalSet.insert(10,200,"a"); 24 | MultiIntervalSet.insert(20,300,"a"); 25 | MultiIntervalSet.insert(400,500,"a"); 26 | 27 | assertTrue(MultiIntervalSet.checkOverlap()); 28 | } 29 | 30 | @Test 31 | // 测试不允许重叠的情况 32 | public void testCheckOverlap2(){ 33 | MultiIntervalSet MultiIntervalSet = new CommonMultiIntervalSet<>(); 34 | 35 | MultiIntervalSet.insert(10,200,"a"); 36 | MultiIntervalSet.insert(201,300,"a"); 37 | MultiIntervalSet.insert(400,500,"a"); 38 | 39 | assertFalse(MultiIntervalSet.checkOverlap()); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Lab3-1190200208/test/ADT/MultiInterval/NonPeriodicMultiIntervalSetTest.java: -------------------------------------------------------------------------------- 1 | package ADT.MultiInterval; 2 | 3 | import org.junit.Test; 4 | 5 | public class NonPeriodicMultiIntervalSetTest { 6 | 7 | /** 8 | * Tests that assertions are enabled. 9 | */ 10 | @Test(expected = AssertionError.class) 11 | public void testAssertionsEnabled() { 12 | assert false; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HIT-SC-2020Spring 2 | 哈工大2020春哈工大2020春软件构造资料(实验/PPT/往年考试题) 3 | ## 实验 4 | 实验开发环境为IDEA 2020.3.1,**实验建议好好做!!!能学到很多实际开发时的知识!!!只有自己上手敲才知道细节!!!**实验的说明放在每个lab对应文件夹里的doc文件夹中,里面详细记录了每个实验的思路,可供在代码读不懂时参考。不过,也希望你用这份资料仅供参考,而非白嫖(认真) 5 | 6 | ## 往年题 7 | 8 | 考题的格式就是往年题所展示的格式。根据我们这届的情况,往年题做着有用,但选填部分其实参考价值不大...对于大题部分的话,**会写几种设计模式**是最重要的(一定会考!!!) 9 | 10 | ## PPT 11 | 12 | 课程PPT,英文版的 13 | 14 | ## 写在最后的话 15 | 16 | 听说下几届没有软件构造这门课了,其实吧...我觉得这门课算是我学到现在,觉得用处最大的课了(毕竟大部分人最终是要进厂写代码的,搞科研的终究是少数),也不知道为什么要砍掉它。通过这门课,可以难得地在大学期间接触一些实际软件开发用到的理论。如果后面的学弟学妹不学这门课了,可能我把这些资料传在github上的用处也不太大了。但是,如果有后来人想要借这份资料钻研、学习,那这份资料也就有了它存在的意义吧。 -------------------------------------------------------------------------------- /习题课3可复用与可维护构造技术.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/习题课3可复用与可维护构造技术.pdf -------------------------------------------------------------------------------- /实验指导书/lab-0 lab guidelines.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-0 lab guidelines.pdf -------------------------------------------------------------------------------- /实验指导书/lab-1 fundamental java programming and testing.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-1 fundamental java programming and testing.pdf -------------------------------------------------------------------------------- /实验指导书/lab-2 adt and oop.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-2 adt and oop.pdf -------------------------------------------------------------------------------- /实验指导书/lab-3 reusability and maintainability oriented programming v3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/实验指导书/lab-3 reusability and maintainability oriented programming v3.pdf -------------------------------------------------------------------------------- /往年考试题/2018年春季期末考试题.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/往年考试题/2018年春季期末考试题.pdf -------------------------------------------------------------------------------- /往年考试题/2019年春季期末考试题.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/往年考试题/2019年春季期末考试题.pdf -------------------------------------------------------------------------------- /往年考试题/2020年春季期末考试题.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/往年考试题/2020年春季期末考试题.pdf -------------------------------------------------------------------------------- /软构PPT/1 views and quality objectives of software construction.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/1 views and quality objectives of software construction.pdf -------------------------------------------------------------------------------- /软构PPT/10 construction for change.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/10 construction for change.pdf -------------------------------------------------------------------------------- /软构PPT/11 design patterns for reuse and maintainability.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/11 design patterns for reuse and maintainability.pdf -------------------------------------------------------------------------------- /软构PPT/12 construction for robustness and correctness.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/12 construction for robustness and correctness.pdf -------------------------------------------------------------------------------- /软构PPT/2 testing and test-first programming.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/2 testing and test-first programming.pdf -------------------------------------------------------------------------------- /软构PPT/3 software construction process and configuration management.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/3 software construction process and configuration management.pdf -------------------------------------------------------------------------------- /软构PPT/4 data type and type checking.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/4 data type and type checking.pdf -------------------------------------------------------------------------------- /软构PPT/5 designing specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/5 designing specification.pdf -------------------------------------------------------------------------------- /软构PPT/6 abstract data type (adt).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/6 abstract data type (adt).pdf -------------------------------------------------------------------------------- /软构PPT/7 object-oriented programming (oop).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/7 object-oriented programming (oop).pdf -------------------------------------------------------------------------------- /软构PPT/8 equality in adt and oop.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/8 equality in adt and oop.pdf -------------------------------------------------------------------------------- /软构PPT/9 construction for reuse.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LMC117/HIT-SC-2021Spring/0b82897cde1bb4e1c479d029513d40ea41ab888e/软构PPT/9 construction for reuse.pdf --------------------------------------------------------------------------------