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. $this->data[$kata] = array_unique(array_merge($this->data[$kata], $sinonim));
  13. }
  14.  
  15. public function ambilSinonim(string $kata): ?array
  16. {
  17. if (isset($this->data[$kata])) {
  18. return $this->data[$kata];
  19. }
  20.  
  21. foreach ($this->data as $kunciUtama => $daftarSinonim) {
  22. if (in_array($kata, $daftarSinonim)) {
  23. $hasilSinonim = [];
  24. $hasilSinonim[] = $kunciUtama;
  25.  
  26. if (isset($this->data[$kunciUtama])) {
  27. $hasilSinonim = array_merge($hasilSinonim, $this->data[$kunciUtama]);
  28. }
  29.  
  30. if (isset($this->data[$kata])) {
  31. $hasilSinonim = array_merge($hasilSinonim, $this->data[$kata]);
  32. }
  33.  
  34. $hasilSinonim = array_values(array_unique(array_filter($hasilSinonim, function($item) use ($kata) {
  35. return $item !== $kata;
  36. })));
  37.  
  38. if (empty($hasilSinonim) && in_array($kata, $daftarSinonim)) {
  39. return [$kunciUtama];
  40. }
  41.  
  42. return $hasilSinonim;
  43. }
  44. }
  45. return null;
  46. }
  47. }
  48.  
Success #stdin #stdout 0.03s 25712KB
stdin
Standard input is empty
stdout
Standard output is empty