['music', 'meditation', 'science experiments', 'painting', 'expression']
Estic treballant en un programa que genera frases a partir d'una gramàtica simple utilitzant l'algoritme de substitució recursiva, però no aconsegueixo que funcioni. El meu codi:

```python
import random

grammar = {
    "S": ["NP VP"],
    "NP": ["El gat", "La nena", "Un gos"],
    "VP": ["menja peix", "dorm a la cistella", "juga a la pilota"],
}

def generate_sentence(symbol="S"):
    if symbol not in grammar:
        return symbol
    else:
        return generate_sentence(random.choice(grammar[symbol]))

print(generate_sentence())
```
El problema és que estàs cridant recursivament a `generate_sentence` amb un element aleatori de la llista en comptes de reemplaçar el símbol a la frase. Has de dividir la frase en paraules i aplicar la regla a cada símbol:

```python
import random

# ... (rest of the code)

def generate_sentence(symbol="S"):
    if symbol not in grammar:
        return symbol
    else:
        production = random.choice(grammar[symbol])
        words = production.split()
        sentence = []
        for word in words:
            sentence.append(generate_sentence(word))
        return " ".join(sentence)

print(generate_sentence())
```