fork download
  1. <?php
  2.  
  3. class Kamus
  4. {
  5. private $data = [];
  6.  
  7. // Fungsi untuk menambah kata beserta sinonimnya
  8. public function tambah(string $kata, array $sinonim): void
  9. {
  10. if (!isset($this->data[$kata])) {
  11. $this->data[$kata] = [];
  12. }
  13.  
  14. // Gabungkan sinonim lama dan baru lalu hapus duplikat
  15. $this->data[$kata] = array_unique(array_merge($this->data[$kata], $sinonim));
  16.  
  17. // Pastikan relasi dua arah
  18. foreach ($sinonim as $sin) {
  19. if (!isset($this->data[$sin])) {
  20. $this->data[$sin] = [];
  21. }
  22. if (!in_array($kata, $this->data[$sin])) {
  23. $this->data[$sin][] = $kata;
  24. }
  25. }
  26. }
  27.  
  28. // Fungsi untuk mengambil sinonim dari kata
  29. public function ambilSinonim(string $kata): ?array
  30. {
  31. if (!isset($this->data[$kata])) {
  32. return null;
  33. }
  34.  
  35. return count($this->data[$kata]) > 0 ? $this->data[$kata] : [$kata];
  36. }
  37. }
  38.  
  39. // Contoh penggunaan
  40. $kamus = new Kamus();
  41. $kamus->tambah('cepat', ['gesit', 'lincah']);
  42. $kamus->tambah('cepat', ['kilat', 'tangkas']);
  43. $kamus->tambah('kilat', ['segera', 'pesat']);
  44.  
  45. print_r($kamus->ambilSinonim('cepat'));
  46. // Hasil: ['gesit', 'lincah', 'kilat', 'tangkas']
  47.  
  48. print_r($kamus->ambilSinonim('kilat'));
  49. // Hasil: ['cepat', 'segera', 'pesat']
  50.  
  51. print_r($kamus->ambilSinonim('pesat'));
  52. // Hasil: ['kilat']
  53.  
  54. print_r($kamus->ambilSinonim('segera'));
  55. // Hasil: ['kilat']
  56.  
  57. print_r($kamus->ambilSinonim('lambat'));
  58. // Hasil: null
  59.  
  60. ?>
Success #stdin #stdout 0.04s 26144KB
stdin
Standard input is empty
stdout
Array
(
    [0] => gesit
    [1] => lincah
    [2] => kilat
    [3] => tangkas
)
Array
(
    [0] => cepat
    [1] => segera
    [2] => pesat
)
Array
(
    [0] => kilat
)
Array
(
    [0] => kilat
)