fork download
  1. <?php
  2.  
  3. class Kamus {
  4. private $data;
  5.  
  6. public function __construct() {
  7. $this->data = array();
  8. }
  9.  
  10. public function tambah($kata, $sinonim) {
  11.  
  12.  
  13. // Jika belum ada di kamus, tambahkan
  14. if (!isset($this->data[$kata])) {
  15. $this->data[$kata] = array();
  16. }
  17.  
  18. // Tambahkan sinonim
  19. foreach ($sinonim as $s) {
  20. if (!in_array($s, $this->data[$kata])) {
  21. $this->data[$kata][] = $s;
  22. }
  23. // Lakukan kebalikannya
  24. // Jika belum ada di kamus, tambahkan
  25. if (!isset($this->data[$s])) {
  26. $this->data[$s] = array();
  27. }
  28. if (!in_array($kata, $this->data[$s])) {
  29. $this->data[$s][] = $kata;
  30. }
  31. }
  32. }
  33.  
  34. //ambil dari kamus
  35. public function ambilSinonim($kata) {
  36. if (isset($this->data[$kata])) {
  37. return $this->data[$kata];
  38. } else {
  39. return null;
  40. }
  41. }
  42. }
  43.  
  44.  
  45. function printSinonim($hasil) {
  46. if ($hasil !== null) {
  47. echo "['" . implode("', '", $hasil) . "']\n";
  48. } else {
  49. echo "null\n";
  50. }
  51. }
  52.  
  53.  
  54.  
  55. // test Case
  56. $kamus = new Kamus();
  57. $kamus->tambah('big', ['large', 'great']);
  58. $kamus->tambah('big', ['huge', 'fat']);
  59. $kamus->tambah('huge', ['enormous', 'gigantic']);
  60.  
  61. $hasil_big = $kamus->ambilSinonim('big');
  62. echo "sinonim big: ";
  63. printSinonim($hasil_big);
  64.  
  65. $hasil_huge = $kamus->ambilSinonim('huge');
  66. echo "sinonim huge: ";
  67. printSinonim($hasil_huge);
  68.  
  69. $hasil_gigantic = $kamus->ambilSinonim('gigantic');
  70. echo "sinonim gigantic: ";
  71. printSinonim($hasil_gigantic);
  72.  
  73. $hasil_colossal = $kamus->ambilSinonim('colossal');
  74. echo "sinonim colossal: ";
  75. printSinonim($hasil_colossal);
  76.  
  77. ?>
Success #stdin #stdout 0.03s 25940KB
stdin
Standard input is empty
stdout
=== Test Cases ===
sinonim big: ['large', 'great', 'huge', 'fat']
sinonim huge: ['big', 'enormous', 'gigantic']
sinonim gigantic: ['huge']
sinonim colossal: null