fork download
  1. <?php
  2. class Kamus {
  3. private $kamus = [];
  4.  
  5. // Menambah kata beserta sinonimnya
  6. public function tambah(string $kata, array $sinonim): void {
  7. if (!isset($this->kamus[$kata])) {
  8. $this->kamus[$kata] = [];
  9. }
  10. foreach ($sinonim as $s) {
  11. if (!in_array($s, $this->kamus[$kata], true)) {
  12. $this->kamus[$kata][] = $s;
  13. }
  14. }
  15. }
  16.  
  17. // Mengambil sinonim sesuai aturan soal
  18. public function ambilSinonim(string $kata): ?array {
  19. if (!isset($this->kamus[$kata])) {
  20. // Cek apakah kata ini adalah sinonim dari kata lain
  21. foreach ($this->kamus as $k => $sinonims) {
  22. if (in_array($kata, $sinonims, true)) {
  23. // Jika kata ini adalah sinonim dari kata lain, kembalikan array berisi kata itu saja
  24. return [$kata];
  25. }
  26. }
  27. // Jika tidak ditemukan, return null
  28. return null;
  29. }
  30. // Jika kata utama, kembalikan semua sinonim langsungnya
  31. return $this->kamus[$kata];
  32. }
  33. }
  34.  
  35. $kamus = new Kamus();
  36. $kamus->tambah('big', ['large', 'great']);
  37. $kamus->tambah('big', ['huge', 'fat']);
  38. $kamus->tambah('huge', ['enormous', 'gigantic']);
  39. $kamus->tambah('small', ['tiny', 'little']);
  40.  
  41.  
  42. function cetakHasil($kata, $hasil) {
  43. echo "ambilSinonim('$kata'): ";
  44. if ($hasil === null) {
  45. echo "null\n";
  46. } else {
  47. echo "[" . implode(", ", $hasil) . "]\n";
  48. }
  49. }
  50.  
  51. cetakHasil('big', $kamus->ambilSinonim('big'));
  52. cetakHasil('huge', $kamus->ambilSinonim('huge'));
  53. cetakHasil('gigantic', $kamus->ambilSinonim('gigantic'));
  54. cetakHasil('colossal', $kamus->ambilSinonim('colossal'));
  55. cetakHasil('small', $kamus->ambilSinonim('small'));
Success #stdin #stdout 0.03s 26128KB
stdin
Standard input is empty
stdout
ambilSinonim('big'): [large, great, huge, fat]
ambilSinonim('huge'): [enormous, gigantic]
ambilSinonim('gigantic'): [gigantic]
ambilSinonim('colossal'): null
ambilSinonim('small'): [tiny, little]