fork download
  1. // Lusi Alifatul Laila
  2.  
  3. <?php
  4. class Kamus {
  5. private $data = [];
  6.  
  7. public function tambah($kata, $sinonim) {
  8. if (!isset($this->data[$kata])) {
  9. $this->data[$kata] = [];
  10. }
  11. $this->data[$kata] = array_merge($this->data[$kata], $sinonim);
  12. }
  13.  
  14. public function ambilSinonim($kata) {
  15. // Cari semua sinonim langsung
  16. $result = isset($this->data[$kata]) ? $this->data[$kata] : [];
  17.  
  18. // Cari kata-kata lain yang memiliki $kata sebagai sinonim
  19. foreach ($this->data as $k => $sinonim) {
  20. if (in_array($kata, $sinonim)) {
  21. $result[] = $k;
  22. }
  23. }
  24.  
  25. // Tambahkan kata itu sendiri jika ada kata lain yang memilikinya sebagai sinonim
  26. if (count($result) > 0 && !in_array($kata, $result)) {
  27. array_unshift($result, $kata);
  28. }
  29.  
  30. return count($result) > 0 ? array_unique($result) : null;
  31. }
  32. }
  33.  
  34. // Test cases
  35. $kamus = new Kamus();
  36. $kamus->tambah('big', ['large', 'great']);
  37. $kamus->tambah('big', ['huge', 'fat']);
  38. $kamus->tambah('huge', ['enormous', 'gigantic']);
  39.  
  40. print_r($kamus->ambilSinonim('big')); // ['large', 'great', 'huge', 'fat']
  41. print_r($kamus->ambilSinonim('huge')); // ['big', 'enormous', 'gigantic']
  42. print_r($kamus->ambilSinonim('gigantic')); // ['huge']
  43. print_r($kamus->ambilSinonim('colossal')); // null
  44. ?>
Success #stdin #stdout 0.03s 25888KB
stdin
Standard input is empty
stdout
// Lusi Alifatul Laila

Array
(
    [0] => big
    [1] => large
    [2] => great
    [3] => huge
    [4] => fat
)
Array
(
    [0] => huge
    [1] => enormous
    [2] => gigantic
    [3] => big
)
Array
(
    [0] => gigantic
    [1] => huge
)