This commit is contained in:
femsci 2024-04-19 19:07:11 +02:00
parent 3ffc40596a
commit b4ce38c10e
Signed by: femsci
GPG key ID: 21AC2CC03E5BBCD6
3 changed files with 137 additions and 1 deletions

67
BottomSecurePRNG.java Normal file
View file

@ -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());
}
}
}

69
Card.java Normal file
View file

@ -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());
}
}
}

View file

@ -1,5 +1,5 @@
# PPJ # 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) [Go back to main](/femsci/ppj/src/branch/nya)