fork(2) download
  1. import java.util.Arrays;
  2. import java.util.Random;
  3. import java.util.stream.IntStream;
  4.  
  5.  
  6. class WinOrLose {
  7.  
  8. private final int winners, losers;
  9.  
  10.  
  11.  
  12. public WinOrLose(int[] contestants) {
  13. int wincount = 0;
  14. int losecount = 0;
  15. if (contestants.length > 1) {
  16. int current = Integer.compare(contestants[0], contestants[contestants.length - 1]);
  17. for (int i = 0; i < contestants.length; i++) {
  18. int previous = current;
  19. current = Integer.compare(contestants[(i + 1) % contestants.length], contestants[i]);
  20. if (current * previous < 0) {
  21. if (current > 0) {
  22. losecount++;
  23. } else {
  24. wincount++;
  25. }
  26. }
  27. }
  28. }
  29. this.winners = wincount;
  30. this.losers = losecount;
  31. }
  32.  
  33.  
  34. @Override
  35. public String toString() {
  36. return String.format("Winners %d, Losers %d", winners, losers);
  37. }
  38.  
  39. public int getWinnerCount() {
  40. return winners;
  41. }
  42.  
  43. public int getLoserCount() {
  44. return losers;
  45. }
  46.  
  47. private static final Random RAND = new Random();
  48.  
  49. private static final int[] randomInts(int size) {
  50. return IntStream.generate(() -> RAND.nextInt(size)).limit(size).toArray();
  51. }
  52.  
  53. public static void main(String[] args) {
  54. for (int i = 0; i < 10; i++) {
  55. int[] data = randomInts(i);
  56. System.out.printf("%3d Data: %s -> %s\n", i, Arrays.toString(data), new WinOrLose(data));
  57. }
  58. }
  59.  
  60. }
  61.  
Success #stdin #stdout 0.19s 320576KB
stdin
Standard input is empty
stdout
  0 Data: [] -> Winners 0, Losers 0
  1 Data: [0] -> Winners 0, Losers 0
  2 Data: [1, 0] -> Winners 1, Losers 1
  3 Data: [0, 0, 2] -> Winners 1, Losers 0
  4 Data: [3, 0, 2, 1] -> Winners 2, Losers 2
  5 Data: [2, 3, 1, 2, 0] -> Winners 2, Losers 2
  6 Data: [3, 2, 5, 5, 0, 4] -> Winners 1, Losers 2
  7 Data: [3, 6, 1, 4, 0, 3, 4] -> Winners 3, Losers 3
  8 Data: [4, 1, 2, 4, 0, 7, 1, 0] -> Winners 3, Losers 3
  9 Data: [3, 6, 2, 3, 5, 1, 3, 5, 4] -> Winners 3, Losers 3