Kame3

Кумановски дијалект - [хеширање]

Jan 16th, 2021 (edited)
1,019
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Кумановски дијалект Problem 1 (0 / 0)
  2.  
  3. Даден ви е речник на зборови на кумановски дијалект и како тие се пишуваат на македонски јазик. Потоа даден ви е текст којшто е напишан на кумановски дијалект. Потребно е да ги замените сите појавувања на зборовите на кумановскиот дијалект кои се дадени во речникот со соодветни зборови на македонски јазик.
  4.  
  5. Забелешка: Треба да се игнорираат интерпункциските знаци точка (.) , запирка (,), извичник(!) и прашалник (?). Исто така зборовите во текстот можат да се појават и со прва голема буква и во тој случај неговиот синоним на македонски јазик исто така треба да се отпечати со прва голема буква.
  6.  
  7. Име на класата (Java): KumanovskiDijalekt.
  8.  
  9. import java.io.BufferedReader;
  10. import java.io.IOException;
  11. import java.io.InputStreamReader;
  12.  
  13. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  14.  
  15.     // Each MapEntry object is a pair consisting of a key (a Comparable
  16.     // object) and a value (an arbitrary object).
  17.     K key;
  18.     E value;
  19.  
  20.     public MapEntry (K key, E val) {
  21.         this.key = key;
  22.         this.value = val;
  23.     }
  24.    
  25.     public int compareTo (K that) {
  26.     // Compare this map entry to that map entry.
  27.         @SuppressWarnings("unchecked")
  28.         MapEntry<K,E> other = (MapEntry<K,E>) that;
  29.         return this.key.compareTo(other.key);
  30.     }
  31.  
  32.     public String toString () {
  33.         return "<" + key + "," + value + ">";
  34.     }
  35. }
  36.  
  37. class SLLNode<E> {
  38.     protected E element;
  39.     protected SLLNode<E> succ;
  40.  
  41.     public SLLNode(E elem, SLLNode<E> succ) {
  42.         this.element = elem;
  43.         this.succ = succ;
  44.     }
  45.  
  46.     @Override
  47.     public String toString() {
  48.         return element.toString();
  49.     }
  50. }
  51.  
  52. class CBHT<K extends Comparable<K>, E> {
  53.  
  54.     // An object of class CBHT is a closed-bucket hash table, containing
  55.     // entries of class MapEntry.
  56.     private SLLNode<MapEntry<K,E>>[] buckets;
  57.  
  58.     @SuppressWarnings("unchecked")
  59.     public CBHT(int m) {
  60.         // Construct an empty CBHT with m buckets.
  61.         buckets = (SLLNode<MapEntry<K,E>>[]) new SLLNode[m];
  62.     }
  63.  
  64.     private int hash(K key) {
  65.         return 0;
  66.     }
  67.  
  68.     public SLLNode<MapEntry<K,E>> search(K targetKey) {
  69.         // Find which if any node of this CBHT contains an entry whose key is
  70.         // equal
  71.         // to targetKey. Return a link to that node (or null if there is none).
  72.         int b = hash(targetKey);
  73.         for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  74.             if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
  75.                 return curr;
  76.         }
  77.         return null;
  78.     }
  79.  
  80.     public void insert(K key, E val) {      // Insert the entry <key, val> into this CBHT.
  81.         MapEntry<K, E> newEntry = new MapEntry<K, E>(key, val);
  82.         int b = hash(key);
  83.         for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr = curr.succ) {
  84.             if (key.equals(((MapEntry<K, E>) curr.element).key)) {
  85.                 // Make newEntry replace the existing entry ...
  86.                 curr.element = newEntry;
  87.                 return;
  88.             }
  89.         }
  90.         // Insert newEntry at the front of the 1WLL in bucket b ...
  91.         buckets[b] = new SLLNode<MapEntry<K,E>>(newEntry, buckets[b]);
  92.     }
  93.  
  94.     public void delete(K key) {
  95.         // Delete the entry (if any) whose key is equal to key from this CBHT.
  96.         int b = hash(key);
  97.         for (SLLNode<MapEntry<K,E>> pred = null, curr = buckets[b]; curr != null; pred = curr, curr = curr.succ) {
  98.             if (key.equals(((MapEntry<K,E>) curr.element).key)) {
  99.                 if (pred == null)
  100.                     buckets[b] = curr.succ;
  101.                 else
  102.                     pred.succ = curr.succ;
  103.                 return;
  104.             }
  105.         }
  106.     }
  107.  
  108.     public String toString() {
  109.         String temp = "";
  110.         for (int i = 0; i < buckets.length; i++) {
  111.             temp += i + ":";
  112.             for (SLLNode<MapEntry<K,E>> curr = buckets[i]; curr != null; curr = curr.succ) {
  113.                 temp += curr.element.toString() + " ";
  114.             }
  115.             temp += "\n";
  116.         }
  117.         return temp;
  118.     }
  119.  
  120. }
  121.  
  122. public class Main {
  123.     public static void main (String[] args) throws IOException {
  124.        
  125.         BufferedReader br = new BufferedReader(new InputStreamReader(
  126.                 System.in));
  127.         int N = Integer.parseInt(br.readLine());
  128.         if(N != 0){
  129.             CBHT<String,String> ht = new CBHT<>(N*2);
  130.             String rechnik[]=new String[N];
  131.            
  132.             for(int i=0;i<N;i++){
  133.                 rechnik[i]=br.readLine();
  134.                 String pom[] = rechnik[i].split(" ");
  135.                 ht.insert(pom[0],pom[1]);
  136.             }
  137.            
  138.             String tekst=br.readLine();
  139.             String parts[] = tekst.split(" ");
  140.             StringBuilder sb = new StringBuilder();
  141.             for(int i=0;i<parts.length;i++){
  142.                 String mali = parts[i].toLowerCase();
  143.                 String bezPosledna = mali.substring(0,mali.length()-1);
  144.                 if(ht.search(mali) != null){
  145.                     String htString = ht.search(mali).element.value;
  146.                     if(ht.search(parts[i]) == null){
  147.                         char golemaBukva = Character.toUpperCase(htString.charAt(0));
  148.                         sb.append(golemaBukva + htString.substring(1,htString.length()));
  149.                     } else {
  150.                         sb.append(htString);
  151.                     }
  152.                     sb.append(" ");
  153.                 } else if(ht.search(bezPosledna) != null){
  154.                     sb.append(ht.search(bezPosledna).element.value);
  155.                     sb.append(parts[i].charAt(parts[i].length()-1));
  156.                     sb.append(" ");
  157.                 } else {
  158.                     sb.append(parts[i]);
  159.                     sb.append(" ");
  160.                 }
  161.             }
  162.             System.out.println(sb.toString());
  163.         } else {
  164.             System.out.println(br.readLine());
  165.         }
  166.     }
  167. }
  168.  
  169.  
  170.  
  171. Sample input
  172.  
  173. 20
  174. nego otkolku
  175. pesmu pesna
  176. bija bil
  177. u vo
  178. s’s so
  179. zhenu zhena
  180. ubavu ubava
  181. sakaja sakal
  182. ednu edna
  183. poznatu poznata
  184. pesmu pesna
  185. umreja umrel
  186. sliku slika
  187. zelje zelbi
  188. rakiju rakija
  189. ede jade
  190. skup skap
  191. chasku chaska
  192. povishke povekje
  193. narodnu narodna
  194. 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.
  195.  
  196. Sample output
  197.  
  198. 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.
  199.  
  200.  
  201.  
RAW Paste Data