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. foreach ($sinonim as $s) {
  11. if (!in_array($s, $this->data[$kata], true)) {
  12. $this->data[$kata][] = $s;
  13. }
  14. }
  15. }
  16.  
  17. public function ambilSinonim(string $kata): ?array {
  18. if (isset($this->data[$kata])) {
  19. return $this->data[$kata];
  20. }
  21.  
  22. foreach ($this->data as $utama => $sinonimList) {
  23. if (in_array($kata, $sinonimList, true)) {
  24. $result = [$utama];
  25. foreach (($this->data[$utama] ?? []) as $s) {
  26. if ($s !== $kata && !in_array($s, $result, true)) {
  27. $result[] = $s;
  28. }
  29. }
  30. return $result;
  31. }
  32. }
  33. return null;
  34. }
  35. }
  36.  
  37.  
  38. $kamus = new Kamus();
  39. $kamus->tambah('big', ['large', 'great']);
  40. $kamus->tambah('big', ['huge', 'fat']);
  41. $kamus->tambah('huge', ['enormous', 'gigantic']);
  42.  
  43. print_r($kamus->ambilSinonim('big'));
  44.  
  45.  
  46. print_r($kamus->ambilSinonim('huge'));
  47.  
  48.  
  49. print_r($kamus->ambilSinonim('gigantic'));
  50.  
  51. var_dump($kamus->ambilSinonim('colossal'));
  52.  
  53.  
Success #stdin #stdout 0.02s 25988KB
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
)
NULL