Difference between revisions of "Higher Order Functions Hall of Fame Assignment"

From CSE425S Wiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 42: Line 42:
  
 
==Clients==
 
==Clients==
{{JavaToImplement|HofClients|filterWordsWhichContainAllVowels<br>filterEvens<br/>sum<br>countBetweenMinAndMaxExclusive<br/>mapToLengths<br>mapToStrictlyLessThan<br/>findFirstPalindrome|hof.clients.exercise}}
+
{{JavaToImplement|HofClients|toOnlyWordsWhichContainAllVowels<br>firstPalindrome<br/>sum<br>countBetweenMinAndMaxExclusive<br/>reverse<br>toLengths<br/>toStrictlyLessThan|hof.clients.exercise}}
  
<nowiki>public static ImmutableList<String> filterWordsWhichContainAllVowels(ImmutableList<String> words)</nowiki>
+
===toOnlyWordsWhichContainAllVowels===
 +
<syntaxhighlight lang="java>
 +
public static ImList<String> toOnlyWordsWhichContainAllVowels(ImList<String> words)
 +
</syntaxhighlight>
  
<nowiki>public static ImmutableList<Integer> filterEvens(ImmutableList<Integer> xs)</nowiki>
+
===toOnlyEvens===
 +
<syntaxhighlight lang="java>
 +
public static ImList<Integer> toOnlyEvens(ImList<Integer> xs)
 +
</syntaxhighlight>
 +
 
 +
===toOnlyWordsWhichContainAllVowels===
 +
<syntaxhighlight lang="java>
 +
public static ImList<String> toOnlyWordsWhichContainAllVowels(ImList<String> words)
 +
</syntaxhighlight>
 +
 
 +
===firstPalindrome===
 +
<syntaxhighlight lang="java>
 +
public static Optional<String> firstPalindrome(ImList<String> words)
 +
</syntaxhighlight>
  
 
===sum===
 
===sum===
<nowiki>public static int sum(ImmutableList<Integer> xs)</nowiki>
+
<syntaxhighlight lang="java>
 +
public static int sum(ImList<Integer> xs)
 +
</syntaxhighlight>
 +
 
 
===countBetweenMinAndMaxExclusive===
 
===countBetweenMinAndMaxExclusive===
<nowiki>public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImmutableList<Integer> xs)</nowiki>
+
<syntaxhighlight lang="java>
 
+
public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImList<Integer> xs)
===mapToLengths===
+
</syntaxhighlight>
<nowiki>public static ImmutableList<Integer> mapToLengths(ImmutableList<String> texts)</nowiki>
 
  
Use the [https://docs.oracle.com/javase/8/docs/api/java/lang/String.html String] class's [https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#length-- length()] method.
+
===reverse===
 +
<syntaxhighlight lang="java>
 +
public static <E> ImList<E> reverse(ImList<E> xs)
 +
</syntaxhighlight>
  
===mapToStrictlyLessThan===
+
===toLengths===
<nowiki>public static ImmutableList<Boolean> mapToStrictlyLessThan(ImmutableList<Integer> xs, int threshold)</nowiki>
+
<syntaxhighlight lang="java>
 +
public static ImList<Integer> toLengths(ImList<String> texts)
 +
</syntaxhighlight>
  
===findFirstPalindrome===
+
===toStrictlyLessThan===
<nowiki>public static Optional<String> findFirstPalindrome(ImmutableList<String> words)</nowiki>
+
<syntaxhighlight lang="java>
 +
public static ImList<Boolean> toStrictlyLessThan(ImList<Integer> xs, int threshold)
 +
</syntaxhighlight>
  
 
=Test=
 
=Test=
 
{{TestSuite|HigherOrderFunctionTestSuite|hof}}
 
{{TestSuite|HigherOrderFunctionTestSuite|hof}}
==Map==
 
{{TestSuite|MapTestSuite|hof.map}}
 
==Filter==
 
{{TestSuite|FilterTestSuite|hof.filter}}
 
==Fold==
 
{{TestSuite|FoldTestSuite|hof.fold}}
 
==Filter==
 
{{TestSuite|FindTestSuite|hof.find}}
 

Latest revision as of 03:32, 12 October 2023

Code To Implement

Higher-order Functions

class: Hof.java Java.png
methods: filter
foldLeft
foldRight
map
find
package: hof.util.exercise
source folder: src/main/java

filter Laurel Wreath

SML List filter

public static <E> ImList<E> filter(Predicate<E> predicate, ImList<E> list)

foldLeft Laurel Wreath

SML List foldl

foldLeft(f, initial_value, [x1, x2, ..., xn])
returns f(xn,...,f(x2, f(x1, initial_value))...) or initial_value if the list is empty.
public static <E, R> R foldLeft(BiFunction<E, R, R> f, R acc, ImList<E> list)

foldRight Laurel Wreath

SML List foldr

foldRight(f, initial_value, [x1, x2, ..., xn])
returns f(x1, f(x2, ..., f(xn, init)...)) or initial_value if the list is empty.
public static <E, R> R foldRight(BiFunction<E, R, R> f, R acc, ImList<E> list)

map Laurel Wreath

SML List map

public static <E, R> ImList<R> map(Function<E, R> f, ImList<E> list)

find Laurel Wreath

SML List map

public static <E> Optional<E> find(Predicate<E> predicate, ImList<E> list)

Clients

class: HofClients.java Java.png
methods: toOnlyWordsWhichContainAllVowels
firstPalindrome
sum
countBetweenMinAndMaxExclusive
reverse
toLengths
toStrictlyLessThan
package: hof.clients.exercise
source folder: src/main/java

toOnlyWordsWhichContainAllVowels

public static ImList<String> toOnlyWordsWhichContainAllVowels(ImList<String> words)

toOnlyEvens

public static ImList<Integer> toOnlyEvens(ImList<Integer> xs)

toOnlyWordsWhichContainAllVowels

public static ImList<String> toOnlyWordsWhichContainAllVowels(ImList<String> words)

firstPalindrome

public static Optional<String> firstPalindrome(ImList<String> words)

sum

public static int sum(ImList<Integer> xs)

countBetweenMinAndMaxExclusive

public static int countBetweenMinAndMaxExclusive(int min, int maxExclusive, ImList<Integer> xs)

reverse

public static <E> ImList<E> reverse(ImList<E> xs)

toLengths

public static ImList<Integer> toLengths(ImList<String> texts)

toStrictlyLessThan

public static ImList<Boolean> toStrictlyLessThan(ImList<Integer> xs, int threshold)

Test

class: HigherOrderFunctionTestSuite.java Junit.png
package: hof
source folder: src/test/java