fork download
  1. <?php
  2.  
  3. class Kamus {
  4. private $data = [];
  5.  
  6. public function tambah(string $kata, array $sinonim): void {
  7. if (!isset($this->data[$kata])) {
  8. $this->data[$kata] = [];
  9. }
  10.  
  11. foreach ($sinonim as $s) {
  12. if (!in_array($s, $this->data[$kata])) {
  13. $this->data[$kata][] = $s;
  14. }
  15. }
  16. }
  17.  
  18. public function ambilSinonim(string $kata): ?array {
  19. if (isset($this->data[$kata])) {
  20. return $this->data[$kata];
  21. }
  22.  
  23. // cek apakah kata ini merupakan sinonim dari kata lain
  24. foreach ($this->data as $key => $sinonimList) {
  25. if (in_array($kata, $sinonimList)) {
  26. return array_merge([$key], $this->ambilSinonim($key));
  27. }
  28. }
  29.  
  30. return null;
  31. }
  32. }
  33.  
  34. // Contoh penggunaan
  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')); // ['huge', 'enormous', 'gigantic']
  42. print_r($kamus->ambilSinonim('gigantic')); // ['huge']
  43. print_r($kamus->ambilSinonim('colossal')); // null
  44.  
Success #stdin #stdout 0.04s 25788KB
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
)