fork download
  1. // your code goes here
  2. function Klasemen(daftarKlub) {
  3. this.klubData = {};
  4. for (var i = 0; i < daftarKlub.length; i++) {
  5. var klub = daftarKlub[i];
  6. this.klubData[klub] = { poin: 0, gol: 0 };
  7. }
  8. }
  9.  
  10. Klasemen.prototype.catatPermainan = function(klubKandang, klubTandang, skor) {
  11. var skorSplit = skor.split(":");
  12. var golKandang = parseInt(skorSplit[0]);
  13. var golTandang = parseInt(skorSplit[1]);
  14.  
  15. this.klubData[klubKandang].gol += golKandang;
  16. this.klubData[klubTandang].gol += golTandang;
  17.  
  18. if (golKandang > golTandang) {
  19. this.klubData[klubKandang].poin += 3;
  20. } else if (golKandang < golTandang) {
  21. this.klubData[klubTandang].poin += 3;
  22. } else {
  23. this.klubData[klubKandang].poin += 1;
  24. this.klubData[klubTandang].poin += 1;
  25. }
  26. };
  27.  
  28. Klasemen.prototype.cetakKlasemen = function() {
  29. var klubArray = [];
  30. for (var nama in this.klubData) {
  31. klubArray.push([nama, this.klubData[nama]]);
  32. }
  33.  
  34. klubArray.sort(function(a, b) {
  35. if (b[1].poin !== a[1].poin) {
  36. return b[1].poin - a[1].poin;
  37. }
  38. if (b[1].gol !== a[1].gol) {
  39. return b[1].gol - a[1].gol;
  40. }
  41. return a[0].localeCompare(b[0]);
  42. });
  43.  
  44. return klubArray;
  45. };
  46.  
  47. Klasemen.prototype.ambilPeringkat = function(n) {
  48. var klasemen = this.cetakKlasemen();
  49. var listKlub = [];
  50. for (var nama in klasemen) {
  51. listKlub.push(nama);
  52. }
  53. return listKlub[n - 1] || "Tidak ada";
  54. };
  55.  
  56. // ========== Uji Coba ==========
  57. var klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  58. klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1');
  59. klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1');
  60. klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3');
  61. klasemen.catatPermainan('Chelsea', 'Liverpool', '2:2');
  62. klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2');
  63. klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0');
  64.  
  65. print("=== Klasemen ===");
  66. var hasil = klasemen.cetakKlasemen();
  67. for (var i = 0; i < hasil.length; i++) {
  68. var klub = hasil[i][0];
  69. var data = hasil[i][1];
  70. print(klub + ": " + data.poin + " Poin, " + data.gol + " gol" );
  71. }
  72.  
  73. print("\nPeringkat ke-2: " + klasemen.ambilPeringkat(2));
  74.  
Success #stdin #stdout 0.03s 16708KB
stdin
Standard input is empty
stdout
=== Klasemen ===
Arsenal: 8 Poin, 8 gol
Liverpool: 3 Poin, 5 gol
Chelsea: 3 Poin, 3 gol

Peringkat ke-2: 1