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.
b877e4dd-5ef4-4f6a-9fe7-d4f776aa0785
Se te ha dado una lista de cursos, junto con su tiempo correspondiente para completar y el nivel de dificultad. Tu tarea es crear una representación de diccionario de esta información del curso. Además, necesitas asignar el nivel de dificultad y el tiempo necesario para una cadena descriptiva.

Escribe una función `generar_info_curso` que toma tres listas:
- `lista_cursos`: Una lista de cadenas representando los nombres de los cursos, donde cada cadena es única.
- `lista_tiempo`: Una lista de enteros que representa el tiempo necesario para completar cada curso. La longitud de esta lista es igual a la longitud de `lista_cursos`.
- `lista_dificultades`: Una lista de enteros que representa el nivel de dificultad de cada curso. La longitud de esta lista es igual a la longitud de `lista_cursos`.

La función debe devolver un diccionario `info_curso`, donde las claves son los nombres de los cursos y los valores son otro diccionario con dos pares de clave-valor:
- `'eficiencia'`: Representa el tiempo necesario para completar el curso.
- `'dificultad'`: Representa el nivel de dificultad del curso.

Además, necesitas crear dos listas descriptivas de la siguiente manera:
- `lista_dificultades_desc`: Una lista de cadenas que representan el nivel de dificultad descriptivo de cada curso, donde cada cadena corresponde al nivel de dificultad de un curso en la `lista_dificultades`.
- `lista_tiempo_desc`: Una lista de cadenas que representan el tiempo descriptivo necesario para completar cada curso, donde cada cadena corresponde al tiempo necesario de un curso en la `lista_tiempo`.

La asignación de dificultad numérica y tiempo a una descripción se da en los diccionarios `dificultad_desc` y `tiempo_desc` respectivamente.

Implementa la función `generar_info_curso(lista_cursos, lista_tiempo, lista_dificultades)` y devuelve `info_curso`, `lista_dificultades_desc`, y `lista_tiempo_desc`.

**Ejemplo**

Entrada:

list_courses = ['Matemáticas', 'Física', 'Química']
list_timetaken = [60, 90, 120]
lista_dificultades = [2, 3, 4]

dificultad_desc = {
     1: 'Fácil',
     2: 'moderado',
     3: 'Difícil',
     4: 'Muy difícil',
}

tiempo tomado_desc = {
     60: 'Corto',
     90: 'Medio',
     120: 'Largo',
}
Salida:

generar_curso_info(lista_cursos, lista_horas tomadas, lista_dificultades) => {
     'Matemáticas': {'eficiencia': 60, 'dificultad': 2},
     'Física': {'eficiencia': 90, 'dificultad': 3},
     'Química': {'eficiencia': 120, 'dificultad': 4}
}

list_difficulties_desc => ['Moderado', 'Difícil', 'Muy difícil']

list_timetaken_desc => ['Corto', 'Medio', 'Largo']

Nota

En el ejemplo dado, la función generate_course_info toma list_courses, list_timetaken y list_difficulties como entradas y crea un diccionario course_info que contiene información del curso. También asigna el nivel de dificultad y el tiempo necesario a una cadena descriptiva en list_difficulties_desc y list_timetaken_desc respectivamente.

submitted
Se te ha dado una lista de cursos, junto con su tiempo correspondiente para completar y el nivel de dificultad. Tu tarea es crear una representación de diccionario de esta información del curso. Además, necesitas asignar el nivel de dificultad y el tiempo necesario para una cadena descriptiva.

Escribe una función `generar_info_curso` que toma tres listas:
- `lista_cursos`: Una lista de cadenas representando los nombres de los cursos, donde cada cadena es única.
- `lista_tiempo`: Una lista de enteros que representa el tiempo necesario para completar cada curso. La longitud de esta lista es igual a la longitud de `lista_cursos`.
- `lista_dificultades`: Una lista de enteros que representa el nivel de dificultad de cada curso. La longitud de esta lista es igual a la longitud de `lista_cursos`.

La función debe devolver un diccionario `info_curso`, donde las claves son los nombres de los cursos y los valores son otro diccionario con dos pares de clave-valor:
- `'eficiencia'`: Representa el tiempo necesario para completar el curso.
- `'dificultad'`: Representa el nivel de dificultad del curso.

Además, necesitas crear dos listas descriptivas de la siguiente manera:
- `lista_dificultades_desc`: Una lista de cadenas que representan el nivel de dificultad descriptivo de cada curso, donde cada cadena corresponde al nivel de dificultad de un curso en la `lista_dificultades`.
- `lista_tiempo_desc`: Una lista de cadenas que representan el tiempo descriptivo necesario para completar cada curso, donde cada cadena corresponde al tiempo necesario de un curso en la `lista_tiempo`.

La asignación de dificultad numérica y tiempo a una descripción se da en los diccionarios `dificultad_desc` y `tiempo_desc` respectivamente.

Implementa la función `generar_info_curso(lista_cursos, lista_tiempo, lista_dificultades)` y devuelve `info_curso`, `lista_dificultades_desc`, y `lista_tiempo_desc`.

**Ejemplo**

Entrada:
```
lista_cursos = ['Matemáticas', 'Física', 'Química']
lista_tiempo = [60, 90, 120]
lista_dificultades
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}