Haskell — Expressions lògiques

Considereu aquesta definició de tipus per a expressions lògiques amb variables o valors booleans a les fulles:

    data LogicExpression
        = Or  LogicExpression LogicExpression
        | And LogicExpression LogicExpression
        | Not LogicExpression
        | Var String
        | Val Bool
  1. Feu que LogicExpression sigui instància de Show de forma que les expressions compostes apareguin totalment parentitzades en forma infixa, tot seguint el format dels exemples.

  2. Feu una funció pushNegations :: LogicExpression -> LogicExpression que, donada una expressió lògica, retorni una expressió lògica equivalent en la que les negacions només apareguin aplicades a variables i que elimini les dobles negacions consecutives.

  3. Escriviu un llista infinita bits :: [[[Int]]] que contingui totes les llistes d’nn bits per a tota n0n \ge 0. No podeu fer servir recursivitat ni importar cap llibreria. Penseu en l’operador <*> de les llistes considerades com a aplicatius. S’espera una solució extremadament concisa. (Aquest apartat és independent dels anteriors.)

El Jutge dóna puntacions parcials per cada apartat: un punt per cada joc de proves públic i un punt per cada joc de proves privat. La puntuació del problema per part del professor és independent d’aquesta puntuació.

Informació del problema

Autoria: Jordi Petit

Generació: 2026-02-03T17:01:54.028Z

© Jutge.org, 2006–2026.
https://jutge.org