You are given a list of courses, along with their corresponding time taken to complete and difficulty level. Your task is to create a dictionary representation of this course information. Additionally, you need to map the difficulty level and time taken to a descriptive string.

Write a function `generate_course_info` that takes in three lists:
- `list_courses`: A list of strings representing the names of the courses, where each string is unique.
- `list_timetaken`: A list of integers representing the time taken to complete each course. The length of this list is equal to the length of `list_courses`.
- `list_difficulties`: A list of integers representing the difficulty level of each course. The length of this list is equal to the length of `list_courses`.

The function should return a dictionary `course_info`, where the keys are the course names and the values are another dictionary with two key-value pairs:
- `'efficiency'`: Represents the time taken to complete the course.
- `'difficulty'`: Represents the difficulty level of the course.

Additionally, you need to create two descriptive lists as follows:
- `list_difficulties_desc`: A list of strings representing the descriptive difficulty level of each course, where each string corresponds to the difficulty level of a course in the `list_difficulties`.
- `list_timetaken_desc`: A list of strings representing the descriptive time taken to complete each course, where each string corresponds to the time taken of a course in the `list_timetaken`.

The mapping of numerical difficulty and time taken to a description is given in the `difficulty_desc` and `timetaken_desc` dictionaries respectively.

Implement the function `generate_course_info(list_courses, list_timetaken, list_difficulties)` and return the `course_info`, `list_difficulties_desc`, and `list_timetaken_desc`.

**Example**

Input:
```
list_courses = ['Math', 'Physics', 'Chemistry']
list_timetaken = [60, 90, 120]
list_difficulties = [2, 3, 4]

difficulty_desc = {
    1: 'Easy',
    2: 'Moderate',
    3: 'Difficult',
    4: 'Very Difficult',
}

timetaken_desc = {
    60: 'Short',
    90: 'Medium',
    120: 'Long',
}
```

Output:
```
generate_course_info(list_courses, list_timetaken, list_difficulties) => {
    'Math': {'efficiency': 60, 'difficulty': 2},
    'Physics': {'efficiency': 90, 'difficulty': 3},
    'Chemistry': {'efficiency': 120, 'difficulty': 4}
}

list_difficulties_desc => ['Moderate', 'Difficult', 'Very Difficult']

list_timetaken_desc => ['Short', 'Medium', 'Long']
```

**Note**
In the given example, the function `generate_course_info` takes the `list_courses`, `list_timetaken`, and `list_difficulties` as inputs, and creates a dictionary `course_info` containing course-wise information. It also maps the difficulty level and time taken to a descriptive string in `list_difficulties_desc` and `list_timetaken_desc` respectively.
f4d8878d-e378-4087-a99b-c31dad5f0609
Σου δίνεται μια λίστα μαθημάτων, μαζί με τον αντίστοιχο χρόνο ολοκλήρωσης και το επίπεδο δυσκολίας τους. Ο στόχος σου είναι να δημιουργήσεις μια αναπαράσταση dictionary των πληροφοριών αυτού του μαθήματος. Επιπλέον, πρέπει να αντιστοιχίσεις το επίπεδο δυσκολίας και τον χρόνο που απαιτείται σε μια περιγραφική συμβολοσειρά.

Γράψε μια συνάρτηση `generate_course_info` που να περιλαμβάνει τρεις λίστες:
- `list_courses`: Μια λίστα συμβολοσειρών που αντιπροσωπεύουν τα ονόματα των μαθημάτων, όπου κάθε συμβολοσειρά είναι μοναδική.
- `list_timetaken`: Μια λίστα ακεραίων αριθμών που αντιπροσωπεύουν το χρόνο που απαιτείται για την ολοκλήρωση κάθε μαθήματος. Το μήκος αυτής της λίστας είναι ίσο με το μήκος του `list_courses`.
- `list_difficulties`: Μια λίστα ακεραίων αριθμών που αντιπροσωπεύουν το επίπεδο δυσκολίας κάθε μαθήματος. Το μήκος αυτής της λίστας είναι ίσο με το μήκος του `list_courses`.

Η συνάρτηση θα πρέπει να επιστρέφει ένα λεξικό `course_info`, όπου τα κλειδιά του είναι τα ονόματα των μαθημάτων και οι τιμές του είναι ένα άλλο λεξικό με δύο ζεύγη κλειδιών-τιμών:
- `efficiency`: Αντιπροσωπεύει το χρόνο που απαιτείται για την ολοκλήρωση του μαθήματος.
- `difficulty`: Αντιπροσωπεύει το επίπεδο δυσκολίας του μαθήματος.

Επιπλέον, πρέπει να δημιουργήσεις δύο περιγραφικές λίστες ως εξής:
- `list_difficulties_desc`: Μια λίστα συμβολοσειρών που αντιπροσωπεύουν το περιγραφικό επίπεδο δυσκολίας κάθε μαθήματος, όπου κάθε συμβολοσειρά αντιστοιχεί στο επίπεδο δυσκολίας ενός μαθήματος της λίστας `list_difficulties`.
- `list_timetaken_desc`: Μια λίστα συμβολοσειρών που αντιπροσωπεύουν τον περιγραφικό χρόνο που απαιτείται για την ολοκλήρωση κάθε μαθήματος, όπου κάθε συμβολοσειρά αντιστοιχεί στον χρόνο που απαιτείται για ένα μάθημα στη `list_timetaken`.

Η αντιστοίχιση της αριθμητικής δυσκολίας και του χρόνου που απαιτείται για μια περιγραφή δίνεται στα λεξικά `difficulty_desc` και `timetaken_desc` αντίστοιχα.

Υλοποίησε τη συνάρτηση `generate_course_info(list_courses, list_timetaken, list_difficulties)` και επέστρεψε τα `course_info`, `list_difficulties_desc` και `list_timetaken_desc`.

**Παράδειγμα**

Είσοδος:
```
list_courses = ['Math', 'Physics', 'Chemistry']
list_timetaken = [60, 90, 120]
list_difficulties = [2, 3, 4]

difficulty_desc = {
    1: 'Easy',
    2: 'Moderate',
    3: 'Difficult',
    4: 'Very Difficult',
}

timetaken_desc = {
    60: 'Short',
    90: 'Medium',
    120: 'Long',
}
```

Έξοδος:
```
generate_course_info(list_courses, list_timetaken, list_difficulties) => {
    'Math': {'efficiency': 60, 'difficulty': 2},
    'Physics': {'efficiency': 90, 'difficulty': 3},
    'Chemistry': {'efficiency': 120, 'difficulty': 4}
}

list_difficulties_desc => ['Moderate', 'Difficult', 'Very Difficult']

list_timetaken_desc => ['Short', 'Medium', 'Long']
```

**Σημείωση**
Στο συγκεκριμένο παράδειγμα, η συνάρτηση `generate_course_info` παίρνει τα `list_courses`, `list_timetaken` και `list_difficulties` ως εισόδους και δημιουργεί ένα λεξικό `course_info` που περιέχει πληροφορίες σχετικά με το μάθημα. Αντιστοιχίζει επίσης το επίπεδο δυσκολίας και τον χρόνο που απαιτείται σε μια περιγραφική συμβολοσειρά στα `list_difficulties_desc` και `list_timetaken_desc` αντίστοιχα.

submitted
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}