fork download
  1. <?php
  2.  
  3. class Kamus
  4. {
  5. private $data = [];
  6.  
  7. public function tambah(string $kata, array $sinonim): void
  8. {
  9. if (!isset($this->data[$kata])) {
  10. $this->data[$kata] = [];
  11. }
  12.  
  13. foreach ($sinonim as $s) {
  14. if (!in_array($s, $this->data[$kata])) {
  15. $this->data[$kata][] = $s;
  16. }
  17. }
  18. }
  19.  
  20. public function ambilSinonim(string $kata): ?array
  21. {
  22. if (isset($this->data[$kata])) {
  23. return $this->data[$kata];
  24. }
  25.  
  26. foreach ($this->data as $kunci => $daftarSinonim) {
  27. if (in_array($kata, $daftarSinonim)) {
  28. return array_merge([$kunci], $this->data[$kunci]);
  29. }
  30. }
  31.  
  32. return null;
  33. }
  34. }
  35.  
  36. $kamus = new Kamus();
  37. $kamus->tambah('big', ['large', 'great']);
  38. $kamus->tambah('big', ['huge', 'fat']);
  39. $kamus->tambah('huge', ['enormous', 'gigantic']);
  40.  
  41. print_r($kamus->ambilSinonim('big'));
  42. print_r($kamus->ambilSinonim('huge'));
  43. print_r($kamus->ambilSinonim('gigantic'));
  44. print_r($kamus->ambilSinonim('colossal'));
  45.  
Success #stdin #stdout 0.03s 26240KB
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
)