Skip to content

Commit

Permalink
Shuffles.
Browse files Browse the repository at this point in the history
  • Loading branch information
cao-awa committed Oct 6, 2024
1 parent 1ab32b9 commit d07a107
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 1 deletion.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
kotlin.code.style=official
version_name=1.0.38
version_name=1.0.39
artifact_id=catheter
group_id=com.github.cao.awa
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/BooleanCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.*;
import java.util.random.RandomGenerator;
import java.util.stream.LongStream;
import java.util.stream.Stream;

Expand Down Expand Up @@ -1168,6 +1169,27 @@ public BooleanCatheter shuffle() {
return this;
}

public BooleanCatheter shuffle(RandomGenerator random) {
sort((t1, t2) -> RANDOM.nextInt());
return this;
}

public BooleanCatheter swapShuffle(RandomGenerator random) {
boolean[] elements = this.targets;
int i = elements.length;

for (int j = i; j > 1; --j) {
int swapTo = random.nextInt(j);
int swapFrom = j - 1;
boolean fromElement = elements[swapFrom];
boolean toElement = elements[swapTo];
elements[swapTo] = fromElement;
elements[swapFrom] = toElement;
}

return this;
}

public BooleanCatheter dump() {
return new BooleanCatheter(array());
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/ByteCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.*;
import java.util.random.RandomGenerator;
import java.util.stream.LongStream;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
Expand Down Expand Up @@ -1172,6 +1173,27 @@ public ByteCatheter shuffle() {
return this;
}

public ByteCatheter shuffle(RandomGenerator random) {
sort((t1, t2) -> RANDOM.nextInt());
return this;
}

public ByteCatheter swapShuffle(RandomGenerator random) {
byte[] elements = this.targets;
int i = elements.length;

for (int j = i; j > 1; --j) {
int swapTo = random.nextInt(j);
int swapFrom = j - 1;
byte fromElement = elements[swapFrom];
byte toElement = elements[swapTo];
elements[swapTo] = fromElement;
elements[swapFrom] = toElement;
}

return this;
}

public ByteCatheter dump() {
return new ByteCatheter(array());
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/Catheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.*;
import java.util.random.RandomGenerator;
import java.util.stream.LongStream;
import java.util.stream.Stream;

Expand Down Expand Up @@ -1641,6 +1642,27 @@ public Catheter<T> shuffle() {
return this;
}

public Catheter<T> shuffle(RandomGenerator random) {
sort((t1, t2) -> RANDOM.nextInt());
return this;
}

public Catheter<T> swapShuffle(RandomGenerator random) {
T[] elements = this.targets;
int i = elements.length;

for (int j = i; j > 1; --j) {
int swapTo = random.nextInt(j);
int swapFrom = j - 1;
T fromElement = elements[swapFrom];
T toElement = elements[swapTo];
elements[swapTo] = fromElement;
elements[swapFrom] = toElement;
}

return this;
}

public Catheter<T> dump() {
return new Catheter<>(array());
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/DoubleCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.*;
import java.util.random.RandomGenerator;
import java.util.stream.DoubleStream;
import java.util.stream.LongStream;

Expand Down Expand Up @@ -1146,6 +1147,27 @@ public DoubleCatheter shuffle() {
return this;
}

public DoubleCatheter shuffle(RandomGenerator random) {
sort((t1, t2) -> RANDOM.nextInt());
return this;
}

public DoubleCatheter swapShuffle(RandomGenerator random) {
double[] elements = this.targets;
int i = elements.length;

for (int j = i; j > 1; --j) {
int swapTo = random.nextInt(j);
int swapFrom = j - 1;
double fromElement = elements[swapFrom];
double toElement = elements[swapTo];
elements[swapTo] = fromElement;
elements[swapFrom] = toElement;
}

return this;
}

public boolean isPresent() {
return count() > 0;
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/IntCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.*;
import java.util.random.RandomGenerator;
import java.util.stream.IntStream;
import java.util.stream.LongStream;

Expand Down Expand Up @@ -1165,6 +1166,27 @@ public IntCatheter shuffle() {
return this;
}

public IntCatheter shuffle(RandomGenerator random) {
sort((t1, t2) -> RANDOM.nextInt());
return this;
}

public IntCatheter swapShuffle(RandomGenerator random) {
int[] elements = this.targets;
int i = elements.length;

for (int j = i; j > 1; --j) {
int swapTo = random.nextInt(j);
int swapFrom = j - 1;
int fromElement = elements[swapFrom];
int toElement = elements[swapTo];
elements[swapTo] = fromElement;
elements[swapFrom] = toElement;
}

return this;
}

public IntCatheter dump() {
return new IntCatheter(array());
}
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/com/github/cao/awa/catheter/LongCatheter.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.*;
import java.util.random.RandomGenerator;
import java.util.stream.LongStream;

public class LongCatheter {
Expand Down Expand Up @@ -1173,6 +1174,27 @@ public LongCatheter shuffle() {
return this;
}

public LongCatheter shuffle(RandomGenerator random) {
sort((t1, t2) -> RANDOM.nextInt());
return this;
}

public LongCatheter swapShuffle(RandomGenerator random) {
long[] elements = this.targets;
int i = elements.length;

for (int j = i; j > 1; --j) {
int swapTo = random.nextInt(j);
int swapFrom = j - 1;
long fromElement = elements[swapFrom];
long toElement = elements[swapTo];
elements[swapTo] = fromElement;
elements[swapFrom] = toElement;
}

return this;
}

public LongCatheter dump() {
return new LongCatheter(array());
}
Expand Down

0 comments on commit d07a107

Please sign in to comment.