How to resolve the algorithm Set step by step in the Icon and Unicon programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Set step by step in the Icon and Unicon programming language

Table of Contents

Problem Statement

A   set  is a collection of elements, without duplicates and without order.

Show each of these set operations:

As an option, show some other set operations. (If A ⊆ B, but A ≠ B, then A is called a true or proper subset of B, written A ⊂ B or A ⊊ B.) As another option, show how to modify a mutable set.

One might implement a set using an associative array (with set elements as array keys and some dummy value as the values). One might also implement a set with a binary search tree, or with a hash table, or with an ordered array of binary bits (operated on with bit-wise binary operators). The basic test, m ∈ S, is O(n) with a sequential list of elements, O(log n) with a balanced binary search tree, or (O(1) average-case, O(n) worst case) with a hash table.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Set step by step in the Icon and Unicon programming language

Source code in the icon programming language

procedure display_set (s)
  writes ("[")
  every writes (!s || " ")
  write ("]")
end

# fail unless s1 and s2 contain the same elements
procedure set_equals (s1, s2)
  return subset(s1, s2) & subset(s2, s1)
end

# fail if every element in s2 is not contained in s1
procedure subset (s1, s2)
  every (a := !s2) do {
    if not(member(s1,a)) then fail
  }
  return s2
end

procedure main ()
  a := set(1, 1, 2, 3, 4)
  b := set(2, 3, 5)
  writes ("a: ")
  display_set (a)
  writes ("b: ")
  display_set (b)
  # basic set operations
  writes ("Intersection: ")
  display_set (a ** b)
  writes ("Union: ")
  display_set (a ++ b)
  writes ("Difference: ")
  display_set (a -- b)
  # membership
  if member(a, 2) then
    write ("2 is a member of a")
  else
    write ("2 is not a member of a")
  if member(a, 5) then
    write ("5 is a member of a")
  else
    write ("5 is not a member of a")
  # equality
  if set_equals(a, set(1,2,3,4,4)) then
    write ("a equals set(1,2,3,4,4)")
  else
    write ("a does not equal set(1,2,3,4,4)")
  if set_equals(a, b) then
    write ("a equals b")
  else
    write ("a does not equal b")
  # subset
  if subset(a, set(1,2)) then
    write ("(1,2) is included in a")
  else
    write ("(1,2) is not included in a")
  if subset(a, set(1,2,5)) then
    write ("(1,2,5) is included in a")
  else
    write ("(1,2,5) is not included in a")
end


link sets

procedure main ()
  a := set(1, 1, 2, 3, 4)
  b := set(2, 3, 5)
  write ("a: ", simage(a))
  write ("b: ", simage(b))
  # basic set operations
  write ("Intersection: ", simage (a**b))
  write ("Union: ", simage        (a++b))
  write ("Difference: ", simage   (a--b))
  # membership
  if member(a, 2) then
    write ("2 is a member of a")
  else
    write ("2 is not a member of a")
  if member(a, 5) then
    write ("5 is a member of a")
  else
    write ("5 is not a member of a")
  # equality
  if seteq(a, set(1,2,3,4,4)) then
    write ("a equals set(1,2,3,4,4)")
  else
    write ("a does not equal set(1,2,3,4,4)")
  if seteq(a, b) then
    write ("a equals b")
  else
    write ("a does not equal b")
  # check subset
  if setlt(set(1,2), a) then
    write ("(1,2) is included in a")
  else
    write ("(1,2) is not included in a")
  if setlt(a, set(1,2,5), a) then
    write ("(1,2,5) is included in a")
  else
    write ("(1,2,5) is not included in a")
end


  

You may also check:How to resolve the algorithm Apply a callback to an array step by step in the PowerShell programming language
You may also check:How to resolve the algorithm Reverse a string step by step in the Amazing Hopper programming language
You may also check:How to resolve the algorithm Mutex step by step in the PureBasic programming language
You may also check:How to resolve the algorithm CSV to HTML translation step by step in the Groovy programming language
You may also check:How to resolve the algorithm String comparison step by step in the JavaScript programming language