fork download
  1. <?php
  2.  
  3. class Kamus {
  4. private $data = [];
  5.  
  6. // Menambahkan kata dan sinonim-sinonimnya
  7. public function tambah($kata, $sinonimArray) {
  8. if (!isset($this->data[$kata])) {
  9. $this->data[$kata] = [];
  10. }
  11.  
  12. foreach ($sinonimArray as $sinonim) {
  13. if (!in_array($sinonim, $this->data[$kata])) {
  14. $this->data[$kata][] = $sinonim;
  15. }
  16. }
  17. }
  18.  
  19. // Mengambil sinonim dari suatu kata
  20. public function ambilSinonim($kata) {
  21. if (isset($this->data[$kata])) {
  22. return $this->data[$kata];
  23. }
  24.  
  25. // Jika kata bukan kunci utama, cek apakah dia muncul sebagai sinonim
  26. foreach ($this->data as $k => $daftarSinonim) {
  27. if (in_array($kata, $daftarSinonim)) {
  28. return array_merge([$k], $this->data[$k]);
  29. }
  30. }
  31.  
  32. return null;
  33. }
  34. }
  35.  
  36. // Pengujian
  37. $kamus = new Kamus();
  38.  
  39. $kamus->tambah('big', ['large', 'great']);
  40. $kamus->tambah('big', ['huge', 'fat']);
  41. $kamus->tambah('huge', ['enormous', 'gigantic']);
  42.  
  43. // Uji hasil
  44. print_r($kamus->ambilSinonim('big')); // ['large', 'great', 'huge', 'fat']
  45. print_r($kamus->ambilSinonim('huge')); // ['big', 'large', 'great', 'huge', 'fat']
  46. print_r($kamus->ambilSinonim('gigantic')); // ['huge', 'enormous', 'gigantic']
  47. print_r($kamus->ambilSinonim('colossal')); // null
  48.  
  49. ?>
  50.  
Success #stdin #stdout 0.03s 26096KB
stdin
Standard input is empty
stdout
Array
(
    [0] => large
    [1] => great
    [2] => huge
    [3] => fat
)
Array
(
    [0] => enormous
    [1] => gigantic
)
Array
(
    [0] => huge
    [1] => enormous
    [2] => gigantic
)