In [ ] Problem 3 Write a function buckets : ('a -> 'a -> bool) -> 'a list -> 'a list list that partitions a list into equivalence classes. That is, buckets equiv 1st should return a list of lists where each sublist in the result contains equivalent elements, where two elements are considered equivalent if equiv returns true. For example: buckets () [1; 2; 3; 4] = [[1]; [2]; [3]; [4]] buckets () [1; 2; 3; 4; 2; 3; 4; 3; 4] = buckets (fun x y-> (=) (x mod 3) The order of the buckets must reflect the order in which the elements appear in the original list. For example, the output of buckets (=) [1;2;3;4] should be [[1]; [2]; [3]; [4]] and not [[2]; [1]; [3];[4]] or any other permutation. [[1]; [2; 2]; [3; 3; 3]; [4; 4; 4]] (y mod 3)) [1; 2; 3; 4; 5; 6] = [[1;4]; [2;5]; [3;6]] The order of the elements in each bucket must reflect the order in which the elements appear in the original list. For example, the output of buckets (fun x y-> (=) (x mod 3) (y mod 3)) [1;2;3; 4; 5; 6] should be [[1;4]; [2;5]; [3;6]] and not [[4;1]; [5;2]; [3;6]] or any other permutations. Assume that the comparison function ('a -> 'a -> bool) is commutative, associative and idempotent. Just use lists. Do not use sets or hash tables. List append function @ may come in handy. [1;2;3] @[4;5;6] = [1;2;3; 4; 5;6]. let buckets p 1 = (* YOUR CODE HERE *) In [ ]: assert (buckets (=) [1;2;3;4] = [[1]; [2]; [3]; [4]]); assert (buckets (=) [1; 2; 3; 4; 2; 3; 4;3;4] = [[1]; [2; 2]; [3; 3; 3]; [4;4;4]]); assert (buckets (fun x y-> (=) (x mod 3) (y mod 3)) [1; 2; 3; 4; 5; 6] = [[1;4]; [2;5]; [3; 6]])

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

OCAML Problem

Problem 3
In [ ]:
Write a function
buckets : ('a -> 'a -> bool) -> 'a list -> 'a list list
that partitions a list into equivalence classes. That is, buckets equiv 1st should return a list of lists where each sublist in the result contains equivalent
elements, where two elements are considered equivalent if equiv returns true. For example:
buckets (=) [1; 2; 3; 4] = [[1]; [2] ; [3]; [4]]
buckets (=) [1; 2; 3; 4; 2; 3; 4; 3; 4]
buckets (fun x y -> (=) (x mod 3)
[[1;4]; [2;5]; [3; 6]]
The order of the buckets must reflect the order in which the elements appear in the original list. For example, the output of buckets (=) [1;2;3;4]
should be [[1] ; [2] ; [3] ; [4]] and not [[2]; [¹]; [3]; [4]] or any other permutation.
=
The order of the elements in each bucket must reflect the order in which the elements appear in the original list. For example, the output of buckets (fun x
y -> (=) (x mod 3) (y mod 3)) [1; 2; 3; 4; 5; 6] should be [[1;4]; [2;5]; [3;6]] and not [[4;1]; [5;2]; [3;6]] or any other
permutations.
Just use lists. Do not use sets or hash tables.
[[1]; [2; 2]; [3; 3; 3]; [4; 4;4]]
(y mod 3)) [1; 2; 3; 4; 5; 6]
Assume that the comparison function ('a -> 'a -> bool) is commutative, associative and idempotent.
In [] let buckets p 1 =
List append function @ may come in handy. [1;2;3] @ [4;5;6]
(* YOUR CODE HERE *)
assert (buckets (=) [1; 2; 3; 4] [[¹]; [2] ; [3]; [4]]);
assert (buckets (=) [1; 2; 3; 4; 2; 3; 4; 3; 4]
assert (buckets (fun x y -> (=) (x mod 3)
=
=
[1; 2; 3; 4; 5; 6].
[[1]; [2; 2]; [3; 3; 3]; [4; 4; 4]]);
(y mod 3)) [1; 2; 3; 4; 5; 6]
=
[[1;4]; [2;5]; [3; 6]])
Transcribed Image Text:Problem 3 In [ ]: Write a function buckets : ('a -> 'a -> bool) -> 'a list -> 'a list list that partitions a list into equivalence classes. That is, buckets equiv 1st should return a list of lists where each sublist in the result contains equivalent elements, where two elements are considered equivalent if equiv returns true. For example: buckets (=) [1; 2; 3; 4] = [[1]; [2] ; [3]; [4]] buckets (=) [1; 2; 3; 4; 2; 3; 4; 3; 4] buckets (fun x y -> (=) (x mod 3) [[1;4]; [2;5]; [3; 6]] The order of the buckets must reflect the order in which the elements appear in the original list. For example, the output of buckets (=) [1;2;3;4] should be [[1] ; [2] ; [3] ; [4]] and not [[2]; [¹]; [3]; [4]] or any other permutation. = The order of the elements in each bucket must reflect the order in which the elements appear in the original list. For example, the output of buckets (fun x y -> (=) (x mod 3) (y mod 3)) [1; 2; 3; 4; 5; 6] should be [[1;4]; [2;5]; [3;6]] and not [[4;1]; [5;2]; [3;6]] or any other permutations. Just use lists. Do not use sets or hash tables. [[1]; [2; 2]; [3; 3; 3]; [4; 4;4]] (y mod 3)) [1; 2; 3; 4; 5; 6] Assume that the comparison function ('a -> 'a -> bool) is commutative, associative and idempotent. In [] let buckets p 1 = List append function @ may come in handy. [1;2;3] @ [4;5;6] (* YOUR CODE HERE *) assert (buckets (=) [1; 2; 3; 4] [[¹]; [2] ; [3]; [4]]); assert (buckets (=) [1; 2; 3; 4; 2; 3; 4; 3; 4] assert (buckets (fun x y -> (=) (x mod 3) = = [1; 2; 3; 4; 5; 6]. [[1]; [2; 2]; [3; 3; 3]; [4; 4; 4]]); (y mod 3)) [1; 2; 3; 4; 5; 6] = [[1;4]; [2;5]; [3; 6]])
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Linked List Representation
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education