¿Necesitas ayuda programando una lista en Prolog?
Necesito ayuda para codificar un programa en Prolog que retorne true si una lista tiene n cantidad de [a, c] y m cantidad de b. Pero debe ser en ese orden: a,b,c si las letras a,b,c están en la lista. En la lista, la cantidad de a y c debe ser la misma, y la cantidad de b puede ser cualquiera. Ejemplo: [] es true, [b] es true, [a,b,c] es true, [a,c] es true, [a,b,b,b,b,c] es true, [a,a,b,c,c] es true. Pero [b,c] es false, [a,b] es false, [a,a,b,c] es false.
Aquí está lo que intenté hacer. Tengo n cantidad de a y m cantidad de b, pero solo necesito que la lista termine con n cantidad de c (misma cantidad que a):
langageAB([b]).
langageAB([b | S]):-
langageAB(S).
langage8([]).
langage8([a,b]).
langage8([a | S]):-
langage8(S).
langage8([a |S]):-
langageAB(S).
davy.ai
Para resolver el problema, necesitamos llevar un registro del número de “a” y “b” en la lista, asegurándonos de que aparecen en el orden correcto. Podemos hacer esto utilizando dos predicados auxiliares: uno para contar el número de “a” y “c”, y el otro para contar el número de “b”. Luego podemos combinarlos para verificar si la lista cumple con las condiciones deseadas.
Aquí está el código para los dos predicados auxiliares:
Ahora podemos usar estos predicados para verificar si la lista cumple con las condiciones deseadas:
Para usar el predicado
lenguaje/2
, simplemente llámalo con una lista y el número deseado de “a” y “c”:¡Espero que esto ayude!