.idea | ||
_build | ||
graphs | ||
src | ||
.gitignore | ||
.merlin | ||
_tags | ||
appMedium.native | ||
example_with_source.png | ||
Example_without_source_1.png | ||
Example_without_source_2.png | ||
Example_without_source_3.png | ||
Graph_example.png | ||
Graph_example.svg | ||
INPUT | ||
Makefile | ||
outfile | ||
outFileApp | ||
outFileApp.svg | ||
README.md | ||
test.svg |
Project undertaken by Aurélia LEJEUNE and Raphaël LACROIX as part of our 4th year course on functionnal programming
What is this project about?
Ever needed to organise an day with participants (like children for instance) that can pick a variying number of activities (like hockey football ...) from a list? Avoid yourself the hassle of filling the table by hand for three hours just to realize that little jimmy can't go to the swimming pool because there are no remaining spots for him.
How to use this software ?
Installing and running
- clone this repo make sure you have ocaml installed
- in the root of the directory run
make app
if you want to enter the activities and participants one by one in the terminal (we won't judge you)make appSource
if you prefer to enter those./INPUT
and let the program do it for you
Inputting data
The format for the file is as follows :
Nb_... and id_... are numbers. The first represent the number of possible participants. The latter will be used to say
which activities the participant wants. Participant_... and Activity... must be strings of characters without spaces (you
can replace those with _
or -
)
Activity_1 Nb_available
Activity_2 Nb_available
...
Activity_n Nb_available
Participant_1 id_1 id_2 id_3 ... id_n
Participant_2 id_1 id_2 id_3 ... id_n
...
Participant_m id_1 id_2 id_3 ... id_n
So it may look like :
Foot 15
Hockey 12
Piscine 15
Poney-aquatique 2
Jean 1 2
Jean-Michel 5
Jean-Claude 1
Jean-ti 1 6 2
The formatting is the same should you input the information through the terminal. You will be guided along the way.
Examples
with a source file
with the CLI
NB
- The application seeks to match children/students to activities/courses as a bipartite matching process.
- The user is asked to provide :
- The
names
andcapacities
of activities/courses - The
names
andchoices
of children/students
- The
- The user is NOT ASKED
- the order of interest among the choices for a children/students
- the answer to the question of life, the universe and everything
make test
enables you to test the first step of the project (i.e. just running the Ford-Fulkerson algorithm on a test graph)- ⚠️ But it is needed to roll back in the git history before the changes for the "Medium" part were made like this one
- An image of the final graph (
./outFileApp.svg
) can be used to get a better understanding of the algorithm here is an example :