Did you know ... | Search Documentation: |
Pack logtalk -- logtalk-3.85.0/examples/lpa/timetables/SCRIPT.txt |
This file is part of Logtalk https://logtalk.org/ SPDX-FileCopyrightText: 1998-2023 Paulo Moura <pmoura@logtalk.org> SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
% start by loading the example and the required library files:
| ?- logtalk_load(lpa_timetables(loader))
.
...
% the setup phase initializes the timetable:
| ?- timetable::setup.
yes
| ?- timetable::make(2)
.
+ first_year - p1 - nicky - french + first_year - p2 - nicky - biology + first_year - p3 - brian - maths + first_year - p4 - brian - music + first_year - p5 - clive - prolog + second_year - p1 - brian - maths + second_year - p2 - brian - music + second_year - p3 - nicky - french + second_year - p4 - nicky - biology + second_year - p5 - diane - accountancy + third_year - p1 - dave - maths + third_year - p2 - clive - french + third_year - p3 - clive - prolog + third_year - p4 - diane - accountancy + third_year - p5 - nicky - biology + fourth_year - p1 - clive - french + fourth_year - p2 - dave - maths + fourth_year - p3 - diane - accountancy + fourth_year - p4 - clive - prolog + fourth_year - p5 - brian - music yes
% the partially completed timetable is ...
| ?- timetable::print.
FORM TIMETABLE...
FORM: first_year p1: nicky teaches french p2: nicky teaches biology p3: brian teaches maths p4: brian teaches music p5: clive teaches prolog
FORM: second_year p1: brian teaches maths p2: brian teaches music p3: nicky teaches french p4: nicky teaches biology p5: diane teaches accountancy
FORM: third_year p1: dave teaches maths p2: clive teaches french p3: clive teaches prolog p4: diane teaches accountancy p5: nicky teaches biology
FORM: fourth_year p1: clive teaches french p2: dave teaches maths p3: diane teaches accountancy p4: clive teaches prolog p5: brian teaches music
PERIOD TIMETABLE ...
PERIOD: p1 first_year: nicky teaches french second_year: brian teaches maths third_year: dave teaches maths fourth_year: clive teaches french
PERIOD: p2 first_year: nicky teaches biology second_year: brian teaches music third_year: clive teaches french fourth_year: dave teaches maths
PERIOD: p3 first_year: brian teaches maths second_year: nicky teaches french third_year: clive teaches prolog fourth_year: diane teaches accountancy
PERIOD: p4 first_year: brian teaches music second_year: nicky teaches biology third_year: diane teaches accountancy fourth_year: clive teaches prolog
PERIOD: p5 first_year: clive teaches prolog second_year: diane teaches accountancy third_year: nicky teaches biology fourth_year: brian teaches music
TEACHER TIMETABLE ...
TEACHER: nicky p1: teach french to first_year p2: teach biology to first_year p3: teach french to second_year p4: teach biology to second_year p5: teach biology to third_year
TEACHER: brian p1: teach maths to second_year p2: teach music to second_year p3: teach maths to first_year p4: teach music to first_year p5: teach music to fourth_year
TEACHER: dave p1: teach maths to third_year p2: teach maths to fourth_year p3: p4: p5:
TEACHER: clive p1: teach french to fourth_year p2: teach french to third_year p3: teach prolog to third_year p4: teach prolog to fourth_year p5: teach prolog to first_year
TEACHER: diane p1: p2: p3: teach accountancy to fourth_year p4: teach accountancy to third_year p5: teach accountancy to second_year
TEACHER: phil p1: p2: p3: p4: p5:
SUBJECT TIMETABLE ...
SUBJECT: maths p1: second_year taught by brian p1: third_year taught by dave p2: fourth_year taught by dave p3: first_year taught by brian
SUBJECT: music p2: second_year taught by brian p4: first_year taught by brian p5: fourth_year taught by brian
SUBJECT: french p1: first_year taught by nicky p1: fourth_year taught by clive p2: third_year taught by clive p3: second_year taught by nicky
SUBJECT: prolog p3: third_year taught by clive p4: fourth_year taught by clive p5: first_year taught by clive
SUBJECT: biology p2: first_year taught by nicky p4: second_year taught by nicky p5: third_year taught by nicky
SUBJECT: prolog++
SUBJECT: accountancy p3: fourth_year taught by diane p4: third_year taught by diane p5: second_year taught by diane
yes
| ?- timetable::make(5)
.
+ first_year - p1 - diane - accountancy + first_year - p2 - phil - prolog++ + second_year - p1 - phil - prolog++ Swap subject...
yes
% the completed timetable is ...
| ?- timetable::print.
FORM TIMETABLE...
FORM: first_year p1: nicky teaches french p2: nicky teaches biology p3: brian teaches maths p4: brian teaches music p5: clive teaches prolog
FORM: second_year p1: brian teaches maths p2: brian teaches music p3: nicky teaches french p4: nicky teaches biology p5: diane teaches accountancy
FORM: third_year p1: dave teaches maths p2: diane teaches accountancy p3: clive teaches prolog p4: clive teaches french p5: phil teaches prolog++
FORM: fourth_year p1: clive teaches french p2: dave teaches maths p3: diane teaches accountancy p4: phil teaches prolog++ p5: nicky teaches biology
PERIOD TIMETABLE ...
PERIOD: p1 first_year: nicky teaches french second_year: brian teaches maths third_year: dave teaches maths fourth_year: clive teaches french
PERIOD: p2 first_year: nicky teaches biology second_year: brian teaches music third_year: diane teaches accountancy fourth_year: dave teaches maths
PERIOD: p3 first_year: brian teaches maths second_year: nicky teaches french third_year: clive teaches prolog fourth_year: diane teaches accountancy
PERIOD: p4 first_year: brian teaches music second_year: nicky teaches biology third_year: clive teaches french fourth_year: phil teaches prolog++
PERIOD: p5 first_year: clive teaches prolog second_year: diane teaches accountancy third_year: phil teaches prolog++ fourth_year: nicky teaches biology
TEACHER TIMETABLE ...
TEACHER: nicky p1: teach french to first_year p2: teach biology to first_year p3: teach french to second_year p4: teach biology to second_year p5: teach biology to fourth_year
TEACHER: brian p1: teach maths to second_year p2: teach music to second_year p3: teach maths to first_year p4: teach music to first_year p5: teach music to third_year
TEACHER: dave p1: teach maths to third_year p2: teach maths to fourth_year p3: p4: p5:
TEACHER: clive p1: teach french to fourth_year p2: teach prolog to second_year p3: teach prolog to third_year p4: teach french to third_year p5: teach prolog to first_year
TEACHER: diane p1: teach accountancy to first_year p2: teach accountancy to third_year p3: teach accountancy to fourth_year p4: p5: teach accountancy to second_year
TEACHER: phil p1: teach prolog++ to second_year p2: teach prolog++ to first_year p3: p4: teach prolog++ to fourth_year p5: teach prolog++ to third_year
SUBJECT TIMETABLE ...
SUBJECT: maths p1: second_year taught by brian p1: third_year taught by dave p2: fourth_year taught by dave p3: first_year taught by brian
SUBJECT: music p2: second_year taught by brian p4: first_year taught by brian p5: third_year taught by brian
SUBJECT: french p1: first_year taught by nicky p1: fourth_year taught by clive p3: second_year taught by nicky p4: third_year taught by clive
SUBJECT: prolog p2: second_year taught by clive p3: third_year taught by clive p5: first_year taught by clive
SUBJECT: biology p2: first_year taught by nicky p4: second_year taught by nicky p5: fourth_year taught by nicky
SUBJECT: prolog++ p1: second_year taught by phil p2: first_year taught by phil p4: fourth_year taught by phil p5: third_year taught by phil
SUBJECT: accountancy p1: first_year taught by diane p2: third_year taught by diane p3: fourth_year taught by diane p5: second_year taught by diane
yes