fork download
  1. <?php
  2.  
  3. class Kamus {
  4. private $kamus = [];
  5.  
  6. public function tambah($kata, $sinonim) {
  7. // Jika kata sudah ada, gabungkan sinonim baru dengan yang lama
  8. if (isset($this->kamus[$kata])) {
  9. $this->kamus[$kata] = array_merge($this->kamus[$kata], $sinonim);
  10. // Hapus duplikat
  11. $this->kamus[$kata] = array_unique($this->kamus[$kata]);
  12. } else {
  13. $this->kamus[$kata] = $sinonim;
  14. }
  15. }
  16.  
  17. public function ambilSinonim($kata) {
  18. $hasil = [];
  19.  
  20. // Jika kata ada di kamus, ambil sinonimnya
  21. if (isset($this->kamus[$kata])) {
  22. $hasil = array_merge($hasil, $this->kamus[$kata]);
  23. }
  24.  
  25. // Cari kata lain yang memiliki kata ini sebagai sinonim
  26. foreach ($this->kamus as $kataLain => $sinonimArray) {
  27. if (in_array($kata, $sinonimArray)) {
  28. $hasil[] = $kataLain;
  29. }
  30. }
  31.  
  32. // Hapus duplikat dan kembalikan hasil
  33. $hasil = array_unique($hasil);
  34.  
  35. // Jika tidak ada hasil, kembalikan null
  36. if (empty($hasil)) {
  37. return null;
  38. }
  39.  
  40. return array_values($hasil); // Reset index array
  41. }
  42. }
  43.  
  44. // Testing sesuai contoh
  45. $kamus = new Kamus();
  46. $kamus->tambah('big', ['large', 'great']);
  47. $kamus->tambah('big', ['huge', 'fat']);
  48. $kamus->tambah('huge', ['enormous', 'gigantic']);
  49.  
  50. echo "Testing ambilSinonim('big'):\n";
  51. print_r($kamus->ambilSinonim('big'));
  52. echo "\n";
  53.  
  54. echo "Testing ambilSinonim('huge'):\n";
  55. print_r($kamus->ambilSinonim('huge'));
  56. echo "\n";
  57.  
  58. echo "Testing ambilSinonim('gigantic'):\n";
  59. print_r($kamus->ambilSinonim('gigantic'));
  60. echo "\n";
  61.  
  62. echo "Testing ambilSinonim('colossal'):\n";
  63. var_dump($kamus->ambilSinonim('colossal'));
  64. echo "\n";
  65.  
  66. ?><?php
  67.  
  68. // your code goes here
Success #stdin #stdout 0.03s 26292KB
stdin
Standard input is empty
stdout
Testing ambilSinonim('big'):
Array
(
    [0] => large
    [1] => great
    [2] => huge
    [3] => fat
)

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

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

Testing ambilSinonim('colossal'):
NULL