From b4ce38c10ec31554018c7e7655111c6043af3c54 Mon Sep 17 00:00:00 2001 From: femsci Date: Fri, 19 Apr 2024 19:07:11 +0200 Subject: [PATCH] task 4 --- BottomSecurePRNG.java | 67 +++++++++++++++++++++++++++++++++++++++++ Card.java | 69 +++++++++++++++++++++++++++++++++++++++++++ README.md | 2 +- 3 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 BottomSecurePRNG.java create mode 100644 Card.java diff --git a/BottomSecurePRNG.java b/BottomSecurePRNG.java new file mode 100644 index 0000000..9eb2430 --- /dev/null +++ b/BottomSecurePRNG.java @@ -0,0 +1,67 @@ +/* + * TASK 4 + * archived at https://git.femboy.science/femsci/ppj/src/branch/task/4 + * by femsci + */ + +// bsprng reference to femsci/bottompass 🥺 + +public class BottomSecurePRNG { + + public static void main(String[] args) { + + // tight or loose? choose one... + + System.out.println("Loosely coupled generator:\n================="); + // loosely coupled <3 + looseCouplingUwU(); + System.out.println("=================\n"); + + System.out.println("Tightly coupled generator:\n================="); + // tightly coupled >.< + tightCouplingඬϖඬ(); + System.out.println("=================\n"); + + } + + private static void tightCouplingඬϖඬ() { + // meow~ + + for (byte __ = 0; __ < 5; ++__) { + int colourVal = (int) (Math.random() * 4 + 1), rankVal = (int) (Math.random() * 13 + 2); + + String colour = switch (colourVal) { + case 1 -> "Spade"; + case 2 -> "Club"; + case 3 -> "Diamond"; + case 4 -> "Heart"; + default -> throw new IllegalArgumentException("Invalid colour value: " + rankVal); + }; + + String rank = switch (rankVal) { + case 2 -> "Deuce"; + case 3 -> "Trey"; + case 4 -> "Four"; + case 5 -> "Five"; + case 6 -> "Six"; + case 7 -> "Seven"; + case 8 -> "Eight"; + case 9 -> "Nine"; + case 10 -> "Ten"; + case 11 -> "Jack"; + case 12 -> "Queen"; + case 13 -> "King"; + case 14 -> "Ace"; + default -> throw new IllegalArgumentException("Invalid rank value: " + rankVal); + }; + + System.out.printf("%s of %ss\n", rank, colour); + } + } + + private static void looseCouplingUwU() { + for (byte __ = 0; __ < 5; ++__) { + System.out.println(Card.random().getCardString()); + } + } +} diff --git a/Card.java b/Card.java new file mode 100644 index 0000000..eb59b7d --- /dev/null +++ b/Card.java @@ -0,0 +1,69 @@ +/* + * TASK 4 + * archived at https://git.femboy.science/femsci/ppj/src/branch/task/4 + * by femsci + */ + +import java.util.Arrays; + +public class Card { + public Card(Colour colour, Rank rank) { + this.colour = colour; + this.rank = rank; + } + + public static Card fromRaw(int colour, int rank) { + return new Card(Colour.from(colour), Rank.from(rank)); + } + + public static Card random() { + return fromRaw((int) (Math.random() * 4 + 1), (int) (Math.random() * 13 + 2)); + } + + private Colour colour; + private Rank rank; + + public String getCardString() { + return String.format("%s of %ss", rank.getName(), colour.getName()); + } + + protected enum Colour { + SPADE(1), CLUB(2), DIAMOND(3), HEART(4); + + private int raw; + + Colour(int c) { + raw = c; + } + + public static Colour from(int colour) { + // modification-proof mapping + return Arrays.stream(Colour.values()).filter(c -> c.raw == colour).findFirst().orElseThrow(); + } + + public String getName() { + return String.format("%s%s", name().charAt(0), name().substring(1).toLowerCase()); + } + } + + protected enum Rank { + DEUCE(2), TREY(3), FOUR(4), FIVE(5), + SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(10), + JACK(11), QUEEN(12), KING(13), ACE(14); + + private int raw; + + Rank(int c) { + raw = c; + } + + public static Rank from(int rank) { + // modification-proof mapping + return Arrays.stream(Rank.values()).filter(r -> r.raw == rank).findFirst().orElseThrow(); + } + + public String getName() { + return String.format("%s%s", name().charAt(0), name().substring(1).toLowerCase()); + } + } +} diff --git a/README.md b/README.md index a4b6575..d211639 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # PPJ -This branch contains the solution for the **nth task**. +This branch contains the solution for the **4th task**. [Go back to main](/femsci/ppj/src/branch/nya)