fork download
  1. class Klasemen {
  2. constructor(klubList) {
  3. this.klub = [];
  4. // loop untuk bikin klub2 baru
  5. for(let i = 0; i < klubList.length; i++) {
  6. this.klub.push({
  7. nama: klubList[i],
  8. totalPoint: 0
  9. });
  10. }
  11. console.log("Klasemen berhasil dibuat!"); // debug
  12. }
  13.  
  14. // fungsi buat catat permainan
  15. catatPermainan(klubKandang, klubTandang, skor) {
  16. // split skor jadi array
  17. var skorArray = skor.split(':');
  18. var skorKandang = parseInt(skorArray[0]);
  19. var skorTandang = parseInt(skorArray[1]);
  20.  
  21. // cari klub kandang
  22. var indexKandang = -1;
  23. for(let i = 0; i < this.klub.length; i++) {
  24. if(this.klub[i].nama == klubKandang) {
  25. indexKandang = i;
  26. break;
  27. }
  28. }
  29.  
  30. // cari klub tandang
  31. var indexTandang = -1;
  32. for(let j = 0; j < this.klub.length; j++) {
  33. if(this.klub[j].nama == klubTandang) {
  34. indexTandang = j;
  35. break;
  36. }
  37. }
  38.  
  39. if(indexKandang == -1 || indexTandang == -1) {
  40. console.log("Error: Klub tidak ditemukan!");
  41. return;
  42. }
  43.  
  44. // logika pemberian point
  45. if(skorKandang > skorTandang) {
  46. // kandang menang
  47. this.klub[indexKandang].totalPoint = this.klub[indexKandang].totalPoint + 3;
  48. console.log(klubKandang + " menang!");
  49. } else if(skorKandang < skorTandang) {
  50. // tandang menang
  51. this.klub[indexTandang].totalPoint = this.klub[indexTandang].totalPoint + 3;
  52. console.log(klubTandang + " menang!");
  53. } else {
  54. // seri
  55. this.klub[indexKandang].totalPoint = this.klub[indexKandang].totalPoint + 1;
  56. this.klub[indexTandang].totalPoint = this.klub[indexTandang].totalPoint + 1;
  57. console.log("Hasil seri!");
  58. }
  59. }
  60.  
  61. // fungsi untuk cetak klasemen
  62. cetakKlasemen() {
  63. // buat array baru buat sorting
  64. var klubArray = [];
  65. for(let i = 0; i < this.klub.length; i++) {
  66. klubArray.push(this.klub[i]);
  67. }
  68.  
  69. // sorting manual (bubble sort)
  70. for(let i = 0; i < klubArray.length - 1; i++) {
  71. for(let j = 0; j < klubArray.length - 1 - i; j++) {
  72. if(klubArray[j].totalPoint < klubArray[j + 1].totalPoint) {
  73. // swap
  74. var temp = klubArray[j];
  75. klubArray[j] = klubArray[j + 1];
  76. klubArray[j + 1] = temp;
  77. }
  78. }
  79. }
  80.  
  81. // buat object hasil
  82. var hasil = {};
  83. for(let i = 0; i < klubArray.length; i++) {
  84. hasil[klubArray[i].nama] = klubArray[i].totalPoint;
  85. }
  86.  
  87. return hasil;
  88. }
  89.  
  90. // fungsi ambil peringkat
  91. ambilPeringkat(peringkat) {
  92. // copy array klub
  93. var klubCopy = [];
  94. for(let i = 0; i < this.klub.length; i++) {
  95. klubCopy.push({
  96. nama: this.klub[i].nama,
  97. totalPoint: this.klub[i].totalPoint
  98. });
  99. }
  100.  
  101. // sorting lagi (pake bubble sort lagi)
  102. for(let i = 0; i < klubCopy.length - 1; i++) {
  103. for(let j = 0; j < klubCopy.length - 1 - i; j++) {
  104. if(klubCopy[j].totalPoint < klubCopy[j + 1].totalPoint) {
  105. var temp = klubCopy[j];
  106. klubCopy[j] = klubCopy[j + 1];
  107. klubCopy[j + 1] = temp;
  108. }
  109. }
  110. }
  111.  
  112. // return nama klub di peringkat yang diminta
  113. if(peringkat >= 1 && peringkat <= klubCopy.length) {
  114. return klubCopy[peringkat - 1].nama;
  115. } else {
  116. return "Peringkat tidak valid";
  117. }
  118. }
  119. }
  120.  
  121. // testing kode
  122. console.log("=== Testing Klasemen ===");
  123.  
  124. // bikin instance klasemen
  125. var klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  126.  
  127. // test pertandingan
  128. klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1');
  129. klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1');
  130. klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3');
  131. klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2');
  132. klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2');
  133. klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0');
  134.  
  135. // cetak hasil
  136. console.log("Hasil klasemen:");
  137. console.log(klasemen.cetakKlasemen());
  138.  
  139. console.log("Peringkat 2:", klasemen.ambilPeringkat(2));
  140.  
  141. // test dengan klub bundesliga
  142. console.log("\n=== Test dengan klub Bundesliga ===");
  143. var klasemen2 = new Klasemen(['Bayern Munich', 'Borussia Dortmund', 'RB Leipzig']);
  144. klasemen2.catatPermainan('Bayern Munich', 'Borussia Dortmund', '3:1');
  145. klasemen2.catatPermainan('RB Leipzig', 'Bayern Munich', '1:2');
  146. console.log("Klasemen Bundesliga:", klasemen2.cetakKlasemen());
Success #stdin #stdout 0.03s 18996KB
stdin
Standard input is empty
stdout
=== Testing Klasemen ===
Klasemen berhasil dibuat!
Arsenal menang!
Hasil seri!
Arsenal menang!
Chelsea menang!
Hasil seri!
Hasil seri!
Hasil klasemen:
[object Object]
Peringkat 2: Chelsea

=== Test dengan klub Bundesliga ===
Klasemen berhasil dibuat!
Bayern Munich menang!
Bayern Munich menang!
Klasemen Bundesliga: [object Object]