SashkoKlincharov

[Java][АПС] - Кумановски дијалект

Jan 23rd, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.44 KB | None | 0 0
  1. Кумановски дијалект Problem 1 (1 / 16)
  2. Даден ви е речник на зборови на кумановски дијалект и како тие се пишуваат на македонски јазик. Потоа даден ви е текст којшто е напишан на кумановски дијалект. Потребно е да ги замените сите појавувања на зборовите на кумановскиот дијалект кои се дадени во речникот со соодветни зборови на македонски јазик.
  3.  
  4. Забелешка: Треба да се игнорираат интерпункциските знаци точка (.) , запирка (,), извичник(!) и прашалник (?). Исто така зборовите во текстот можат да се појават и со прва голема буква и во тој случај неговиот синоним на македонски јазик исто така треба да се отпечати со прва голема буква.
  5.  
  6. Име на класата (Java): KumanovskiDijalekt.
  7.  
  8. Sample input
  9. 20
  10. nego otkolku
  11. pesmu pesna
  12. bija bil
  13. u vo
  14. s’s so
  15. zhenu zhena
  16. ubavu ubava
  17. sakaja sakal
  18. ednu edna
  19. poznatu poznata
  20. pesmu pesna
  21. umreja umrel
  22. sliku slika
  23. zelje zelbi
  24. rakiju rakija
  25. ede jade
  26. skup skap
  27. chasku chaska
  28. povishke povekje
  29. narodnu narodna
  30. Batko Gjorgjija e tipichna figura i karakter od Kumanovo, koj bija golem majtapdzija i boem i koj povishke sakaja kjef da tera nego da raboti. U ednu poznatu narodnu pesmu vika se deka umreja s’s tri zelje za ubavu zhenu, za chasku rakiju i za skup pajton.
  31.  
  32.  
  33. Sample output
  34. Batko Gjorgjija e tipichna figura i karakter od Kumanovo, koj bil golem majtapdzija i boem i koj povekje sakal kjef da tera otkolku da raboti. Vo edna poznata narodna pesna vika se deka umrel so tri zelbi za ubava zhena, za chaska rakija i za skap pajton.
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41. import java.util.Scanner;
  42.  
  43. class SLLNode<E> {
  44. protected E element;
  45. protected SLLNode<E> succ;
  46.  
  47. public SLLNode(E elem, SLLNode<E> succ) {
  48. this.element = elem;
  49. this.succ = succ;
  50. }
  51.  
  52. @Override
  53. public String toString() {
  54. return element.toString();
  55. }
  56. }
  57.  
  58. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  59.  
  60. // Each MapEntry object is a pair consisting of a key (a Comparable
  61. // object) and a value (an arbitrary object).
  62. K key;
  63. E value;
  64.  
  65. public MapEntry (K key, E val) {
  66. this.key = key;
  67. this.value = val;
  68. }
  69.  
  70. public int compareTo (K that) {
  71. // Compare this map entry to that map entry.
  72. @SuppressWarnings("unchecked")
  73. MapEntry<K,E> other = (MapEntry<K,E>) that;
  74. return this.key.compareTo(other.key);
  75. }
  76.  
  77. public String toString () {
  78. return "<" + key + "," + value + ">";
  79. }
  80. }
  81.  
  82. class CBHT<K extends Comparable<K>, E> {
  83.  
  84. // An object of class CBHT is a closed-bucket hash table, containing
  85. // entries of class MapEntry.
  86. private SLLNode<MapEntry<K,E>>[] buckets;
  87.  
  88. @SuppressWarnings("unchecked")
  89. public CBHT(int m) {
  90. // Construct an empty CBHT with m buckets.
  91. buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  92. }
  93.  
  94. private int hash(K key) {
  95. // Translate key to an index of the array buckets.
  96. return Math.abs(key.hashCode()) % buckets.length;
  97. }
  98.  
  99. public SLLNode<MapEntry<K,E>> search(K targetKey) {
  100. // Find which if any node of this CBHT contains an entry whose key is
  101. // equal
  102. // to targetKey. Return a link to that node (or null if there is none).
  103. int b = hash(targetKey);
  104. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  105. if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  106. return curr;
  107. }
  108. return null;
  109. }
  110.  
  111. public void insert(K key, E val) { // Insert the entry <key, val> into this CBHT.
  112. MapEntry<K, E> newEntry = new MapEntry<K, E>(key, val);
  113. int b = hash(key);
  114. for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  115. if (key.equals(((MapEntry<K, E>) curr.element).key)) {
  116. // Make newEntry replace the existing entry ...
  117. curr.element = newEntry;
  118. return;
  119. }
  120. }
  121. // Insert newEntry at the front of the 1WLL in bucket b ...
  122. buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  123. }
  124.  
  125. public void delete(K key) {
  126. // Delete the entry (if any) whose key is equal to key from this CBHT.
  127. int b = hash(key);
  128. for (SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b]; curr != null; pred = curr, curr = curr.succ) {
  129. if (key.equals(((MapEntry<K,E>) curr.element).key)) {
  130. if (pred == null)
  131. buckets[b] = curr.succ;
  132. else
  133. pred.succ = curr.succ;
  134. return;
  135. }
  136. }
  137. }
  138.  
  139. public String toString() {
  140. String temp = "";
  141. for (int i = 0; i < buckets.length; i++) {
  142. temp += i + ":";
  143. for (SLLNode<MapEntry<K,E>> curr = buckets[i]; curr != null; curr = curr.succ) {
  144. temp += curr.element.toString() + " ";
  145. }
  146. temp += "\n";
  147. }
  148. return temp;
  149. }
  150.  
  151. }
  152.  
  153. public class KumanovskiDijalekt {
  154.  
  155. public static void main(String[] args) {
  156. Scanner input = new Scanner(System.in);
  157. int n = input.nextInt();
  158. input.nextLine();
  159.  
  160. CBHT<String,String> hashtable = new CBHT<String,String>(n*2);
  161. for(int i=0;i<n;i++) {
  162. String [] string = input.nextLine().split(" ");
  163. hashtable.insert(string[0], string[1]);
  164. }
  165. String tekst = input.nextLine();
  166. String [] splitter = tekst.split(" ");
  167.  
  168. int i = 0;
  169. if(splitter.length>0&&n!=0) {
  170. while(i<splitter.length) {
  171. int pamtiindex = 0, pamtiindex2 = 0;
  172. SLLNode<MapEntry<String,String>> node = null;
  173. if(splitter[i].contains(",")||splitter[i].contains("!")||splitter[i].contains("?")) {
  174.  
  175. node = hashtable.search(splitter[i].substring(0,splitter[i].length()-1));
  176. splitter[i] = splitter[i].substring(0,splitter[i].length()-1);
  177. pamtiindex = i;
  178. }
  179. else if(splitter[i].contains(".")&&i+1<splitter.length)
  180. {
  181.  
  182. node = hashtable.search(splitter[i].substring(0,splitter[i].length()-1));
  183. splitter[i] = splitter[i].substring(0,splitter[i].length()-1);
  184. pamtiindex2 = i;
  185. }
  186.  
  187. else {
  188. node = hashtable.search(splitter[i].toLowerCase());
  189. }
  190.  
  191. if(node!=null) {
  192. // System.out.println(splitter[i]);
  193.  
  194. if(splitter[i].toLowerCase().equals(node.element.key)) {
  195. splitter[i] = node.element.value;
  196.  
  197. }
  198. if(pamtiindex==i&&i>0) {
  199. //System.out.println(splitter[i]);
  200. splitter[i] += ",";
  201. }
  202. if(pamtiindex2==i&&i>0) {
  203. splitter[i]+=".";
  204. }
  205. }
  206. else {
  207. if(pamtiindex==i&&i>0) {
  208. // System.out.println(splitter[i]);
  209. splitter[i] += ",";
  210. }
  211. if(pamtiindex2 ==i&&i>0) {
  212. splitter[i]+=".";
  213. }
  214. }
  215. i++;
  216. }
  217. }
  218. splitter[0] = splitter[0].substring(0,1).toUpperCase() + splitter[0].substring(1,splitter[0].length());
  219. int k = 0;
  220. for(k=0;k<splitter.length-1;k++) {
  221. System.out.print(splitter[k] + " ");
  222. if(splitter[k].contains(".")) {
  223. splitter[k+1] = splitter[k+1].substring(0,1).toUpperCase() + splitter[k+1].substring(1,splitter[k+1].length());
  224. //splitter[k+1] = splitter[k+1].substring(0,1).toUpperCase() + splitter[k+1].substring(1,splitter[k].length());
  225. // splitter[k+1] = splitter[k].substring(0,1).toUpperCase() + splitter[k].substring(1,splitter[k].length());
  226. }
  227. }
  228. System.out.print(splitter[k]);
  229. }
  230.  
  231. }
Add Comment
Please, Sign In to add comment