Advertisement
madegoff

PermutationTest.java

May 15th, 2024
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.58 KB | None | 0 0
  1. import java.util.LinkedList;
  2. import java.util.Arrays;
  3.  
  4. import static org.junit.jupiter.api.Assertions.*;
  5. import org.junit.jupiter.api.Test;
  6.  
  7. class PermutationTest {
  8. PermutationVariation p1;
  9. PermutationVariation p2;
  10. public int n1;
  11. public int n2;
  12. int cases=1;
  13.  
  14. void initialize() {
  15. n1=4;
  16. n2=6;
  17. Cases c= new Cases();
  18. p1= c.switchforTesting(cases, n1);
  19. p2= c.switchforTesting(cases, n2);
  20. }
  21.  
  22.  
  23. @Test
  24. void testPermutation() {
  25. initialize();
  26. // TODO
  27.  
  28. //fuer beide?? und was machen wenn sie nicht korrekt sind? exeption?
  29.  
  30. //erste permutetion constructor testen
  31.  
  32. //laenge korrekt?
  33. if (n1 != p1.original.length)
  34. throw new RuntimeException("Die Laenge der ersten Permutation ist nicht korrekt");
  35.  
  36. // wie oft eine zahl vorkommt - machen erstmal wie in count sort - dafuer erstmal maximum finden
  37. int max1 = -100;
  38. for (int i = 0; i<n1; i++){
  39. if (p1.original[i] > max1) max1 = p1.original[i];
  40. }
  41. int[] count_array = new int[max1];
  42. for (int j = 0; j<n1; j++){
  43. int pos = p1.original[j];
  44. count_array[pos]++;
  45. if(count_array[pos] > 1) throw new RuntimeException("Die Zahlen der Permutation 1 kommen mindestens doppelt vor");
  46. }
  47.  
  48. //ob die allDerangements mit einer leeren Liste initialisiert ist
  49. if(!p1.allDerangements.isEmpty())
  50. throw new RuntimeException("allDerangements der ersten Permutation nicht mit der leeren Liste initialisiert");
  51.  
  52. //fuer die zweite analog??
  53. }
  54.  
  55. @Test
  56. void testDerangements() {
  57. initialize();
  58. //in case there is something wrong with the constructor
  59. fixConstructor();
  60. // TODO
  61.  
  62. //erste Permutation
  63. // dass die Anzahl der erzeugten Derangements korrekt ist
  64.  
  65. // die Eigenschaft der Fixpunktfreiheit erfüllt <-> jeder zahl am anderen Platz als davor
  66. for (int[] derangement : p1.allDerangements){ //fuer jede Permutation
  67. //pruefen, ob keine Zahl an ihrem vorherigen platz steht
  68. for (int i = 0; i < n1; i++){
  69. if (derangement[i] == p1.original[i])
  70. throw new RuntimeException("allDeragements enthaelt mindestens eine nicht fixpunktfreie Permutation");
  71. }
  72. }
  73.  
  74. }
  75.  
  76. @Test
  77. void testsameElements() {
  78. initialize();
  79. //in case there is something wrong with the constructor
  80. fixConstructor();
  81. // TODO
  82.  
  83. // ob alle von der derangments()-Methode erzeugten Folgen tatsächlich Permutationen sind
  84. for (int[] derangement : p1.allDerangements){
  85. //pruefen erstmal, ob die laengen uebereinstimmen
  86. if(derangement.length != n1)
  87. throw new RuntimeException("allDeragements enthaelt Folge(n) unterschiedlicher Laenge als p1.original");
  88. //schauen, ob jedes element von p1.original im derangement drin ist
  89.  
  90. //wollen die methode contains benutzen, also brauchen ein LinkedList derangement
  91. LinkedList<Integer> derangement_list = new LinkedList<Integer>(); //initialisieren, mit elementen befuellen
  92. for (int elem : derangement){
  93. derangement_list.add(elem);
  94. }
  95. //nun koennen wir contains anwenden, um zu ueberpruefen dass alle elemente p1.original da auch vorhanden
  96. for(int elem : p1.original){
  97. if (!derangement_list.contains(elem)) //wenn irgendein element nicht gefunden
  98. throw new RuntimeException("allDeragements enthaelt Folge(n) die gar keine Permutation(en) ist/sind");
  99. }
  100. }
  101. }
  102.  
  103. void setCases(int c) {
  104. this.cases=c;
  105. }
  106.  
  107. public void fixConstructor() {
  108. //in case there is something wrong with the constructor
  109. p1.allDerangements=new LinkedList<int[]>();
  110. for(int i=0;i<n1;i++)
  111. p1.original[i]=2*i+1;
  112.  
  113. p2.allDerangements=new LinkedList<int[]>();
  114. for(int i=0;i<n2;i++)
  115. p2.original[i]=i+1;
  116. }
  117. }
  118.  
  119.  
  120.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement