From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- .../fr/epita/assistants/streamstudent/Pair.java | 67 ++++++++++++++++++++++ .../epita/assistants/streamstudent/Streamer.java | 58 +++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Pair.java create mode 100644 graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Streamer.java (limited to 'graphs/java/streamStudent/src/main') diff --git a/graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Pair.java b/graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Pair.java new file mode 100644 index 0000000..c3cde84 --- /dev/null +++ b/graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Pair.java @@ -0,0 +1,67 @@ +package fr.epita.assistants.streamstudent; + +public class Pair { + + /** + * Key of this pair. + */ + private K key; + + /** + * Gets the key for this pair. + * + * @return key for this pair + */ + public K getKey() { + return key; + } + + /** + * Value of this pair. + */ + private V value; + + /** + * Gets the value for this pair. + * + * @return value for this pair + */ + public V getValue() { + return value; + } + + /** + * Creates a new pair. + * + * @param key The key for this pair + * @param value The value to use for this pair + */ + public Pair(K key, V value) { + this.key = key; + this.value = value; + } + + + @Override + public int hashCode() { + return key.hashCode() * 13 + (value == null ? 0 : value.hashCode()); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o instanceof Pair) { + Pair pair = (Pair) o; + if (key != null ? !key.equals(pair.key) : pair.key != null) return false; + if (value != null ? !value.equals(pair.value) : pair.value != null) return false; + return true; + } + return false; + } + + @Override + public String toString() { + return "(" + key + ", " + value + ")"; + } +} + diff --git a/graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Streamer.java b/graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Streamer.java new file mode 100644 index 0000000..87654a4 --- /dev/null +++ b/graphs/java/streamStudent/src/main/java/fr/epita/assistants/streamstudent/Streamer.java @@ -0,0 +1,58 @@ +package fr.epita.assistants.streamstudent; + +import java.util.Comparator; +import java.util.Objects; +import java.util.Optional; +import java.util.regex.Pattern; +import java.util.stream.Stream; + +public class Streamer { + public Stream> validator(Stream> stream) { + return stream.filter(student -> student.getKey() >= 0 && student.getKey() <= 100 && (Pattern.matches("[^_" + + ".]*\\.[^_.]*", student.getValue()) || Pattern.matches("[^._]*_[^._]*", student.getValue()))); + } + + public Stream> orderGrade(Stream> stream) { + return stream.sorted((i, j) -> { + if (!Objects.equals(i.getKey(), j.getKey())) + return i.getKey().compareTo(j.getKey()); + else + return i.getValue().compareTo(j.getValue()); + }); + } + + public Stream> lowercase(Stream> stream) { + return stream.map(i -> { + if (Pattern.matches(".*[A-Z]+.*", i.getValue())) { + return new Pair<>(i.getKey() / 2, i.getValue().toLowerCase()); + } else + return new Pair<>(i.getKey(), i.getValue().toLowerCase()); + }); + } + + public Optional> headOfTheClass(Stream> stream) { + return stream.max((i, j) -> { + if (j.getKey().equals(i.getKey())) + return j.getValue().compareTo(i.getValue()); + else + return i.getKey().compareTo(j.getKey()); + }); + } + + public Stream> quickFix(Stream> stream) { + return stream.map(i -> { + if (Pattern.matches("[mM][Aa].*", i.getValue()) || Pattern.matches("[lL].*[xX]", i.getValue())) { + return new Pair<>(Math.clamp(i.getKey() * 2, 0, 100), i.getValue()); + } else return i; + }); + } + + public Stream> encryption(Stream> stream) { + return stream.map(i -> { + StringBuilder sb = new StringBuilder(); + sb.append(i.getValue(), i.getValue().length() / 2, i.getValue().length()); + sb.append(i.getValue(), 0, i.getValue().length() / 2); + return new Pair<>(i.getKey(), sb.toString()); + }); + } +} -- cgit v1.2.3