fork download
  1. <?php
  2.  
  3. class Kamus {
  4. private $kamus = [];
  5.  
  6. /**
  7.   * Menambahkan kata beserta sinonimnya ke dalam kamus
  8.   * @param string $kata - kata yang akan ditambahkan
  9.   * @param array $sinonim - array sinonim untuk kata tersebut
  10.   */
  11. public function tambah($kata, $sinonim) {
  12. // Inisialisasi array untuk kata jika belum ada
  13. if (!isset($this->kamus[$kata])) {
  14. $this->kamus[$kata] = [];
  15. }
  16.  
  17. // Tambahkan sinonim ke kata utama
  18. foreach ($sinonim as $sin) {
  19. if (!in_array($sin, $this->kamus[$kata])) {
  20. $this->kamus[$kata][] = $sin;
  21. }
  22. }
  23.  
  24. // Tambahkan hubungan balik: setiap sinonim juga mengarah ke kata utama
  25. foreach ($sinonim as $sin) {
  26. if (!isset($this->kamus[$sin])) {
  27. $this->kamus[$sin] = [];
  28. }
  29.  
  30. // Tambahkan kata utama ke sinonim jika belum ada
  31. if (!in_array($kata, $this->kamus[$sin])) {
  32. $this->kamus[$sin][] = $kata;
  33. }
  34. }
  35. }
  36.  
  37. /**
  38.   * Mengambil sinonim dari kata yang diberikan
  39.   * @param string $kata - kata yang akan dicari sinonimnya
  40.   * @return array|null - array sinonim atau null jika kata tidak ditemukan
  41.   */
  42. public function ambilSinonim($kata) {
  43. if (isset($this->kamus[$kata])) {
  44. return $this->kamus[$kata];
  45. }
  46. return null;
  47. }
  48. }
  49.  
  50. // Contoh penggunaan sesuai dengan yang diminta
  51. $kamus = new Kamus();
  52. $kamus->tambah('big', ['large', 'great']);
  53. $kamus->tambah('big', ['huge', 'fat']);
  54. $kamus->tambah('huge', ['enormous', 'gigantic']);
  55.  
  56. echo "Sinonim 'big': ";
  57. print_r($kamus->ambilSinonim('big'));
  58. echo "\n";
  59.  
  60. echo "Sinonim 'huge': ";
  61. print_r($kamus->ambilSinonim('huge'));
  62. echo "\n";
  63.  
  64. echo "Sinonim 'gigantic': ";
  65. print_r($kamus->ambilSinonim('gigantic'));
  66. echo "\n";
  67.  
  68. echo "Sinonim 'colossal': ";
  69. var_dump($kamus->ambilSinonim('colossal'));
  70. echo "\n";
  71.  
  72. ?>
Success #stdin #stdout 0.02s 25908KB
stdin
Standard input is empty
stdout
Sinonim 'big': Array
(
    [0] => large
    [1] => great
    [2] => huge
    [3] => fat
)

Sinonim 'huge': Array
(
    [0] => big
    [1] => enormous
    [2] => gigantic
)

Sinonim 'gigantic': Array
(
    [0] => huge
)

Sinonim 'colossal': NULL