Skip to content

Natuurlijke getallen, binair

Bart Jacobs edited this page Feb 15, 2018 · 2 revisions

Matchen op meerdere waardes tegelijk

Opdracht:

  • Tik de volgende functie in:

    let rec zip xs ys =
      match xs, ys with
        [], [] -> []
      | xsKop::xsStaart, ysKop::ysStaart -> (xsKop, ysKop)::zip xsStaart ysStaart
    
  • Tik dan zip [1;2;3] ["Jan"; "Piet"; "Joris"] in.

  • OCaml antwoordt met [(1, "Jan"); (2, "Piet"); (3, "Joris")].

Natuurlijke getallen, binair

We kunnen natuurlijke getallen voorstellen als lijsten van Booleaanse waarden.

Oefening:

  • Schrijf een functie binair die een gegeven natuurlijk getal omzet naar binaire notatie:

    binair 0 = []
    binair 1 = [true]
    binair 2 = [false; true]
    binair 3 = [true; true]
    binair 4 = [false; false; true]
    binair 5 = [true; false; true]
    binair 6 = [false; true; true]
    binair 7 = [true; true; true]
    

Merk op dat de volgorde van de elementen in de lijst de tegenovergestelde is van hoe je het getal in binaire notatie op papier zou neerschrijven.

Oefening:

  • Schrijf een functie nat_van_binair die het natuurlijke getal voorgesteld door een gegeven lijst van bits (Booleaanse waarden) berekent.

Oefening:

  • Schrijf een functie binair_plus_een die, gegeven een binaire voorstelling van een getal N, de binaire voorstelling van N + 1 berekent. Je mag hiervoor niet de getallen van OCaml gebruiken.

Oefening:

  • Schrijf een functie binair_plus die, gegeven twee getallen in binaire voorstelling, de binaire voorstelling van hun som berekent. Je mag hiervoor niet de getallen van OCaml gebruiken.

Oefening:

  • Schrijf een functie binair_min die, gegeven twee getallen in binaire voorstelling, de binaire voorstelling van hun verschil berekent. Merk op: als het tweede getal groter is dan het eerste, is het verschil 0.

Oefening:

  • Schrijf een functie binair_kleiner_of_gelijk die, gegeven twee getallen in binaire voorstelling, true teruggeeft als en slechts als het eerste getal kleiner is dan, of gelijk is aan het tweede getal.

Oefening:

  • Schrijf een functie binair_maal die, gegeven twee getallen in binaire voorstelling, de binaire voorstelling van hun product berekent.

Oefening:

  • Schrijf een functie binaire_deling die, gegeven twee getallen in binaire voorstelling, een paar teruggeeft met het quotiënt en de rest bij deling van het eerste getal door het tweede.
Clone this wiki locally