Advertisement
fensa08

[APS] Kumanovski Dijalekt

Sep 17th, 2019
1,278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.29 KB | None | 0 0
  1. Кумановски дијалект Problem 1 (3 / 6)
  2.  
  3. Даден ви е речник на зборови на кумановски дијалект и како тие се пишуваат на македонски јазик. Потоа даден ви е текст којшто е напишан на кумановски дијалект. Потребно е да ги замените сите појавувања на зборовите на кумановскиот дијалект кои се дадени во речникот со соодветни зборови на македонски јазик.
  4.  
  5. Забелешка: Треба да се игнорираат интерпункциските знаци точка (.) , запирка (,), извичник(!) и прашалник (?). Исто така зборовите во текстот можат да се појават и со прва голема буква и во тој случај неговиот синоним на македонски јазик исто така треба да се отпечати со прва голема буква.
  6.  
  7. Име на класата (Java): KumanovskiDijalekt.
  8.  
  9. =========================================================================================================================================
  10.  
  11. import java.io.BufferedReader;
  12. import java.io.IOException;
  13. import java.io.InputStreamReader;
  14.  
  15. public class KumanovskiDijalekt {
  16.  
  17.    static class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  18.  
  19.         // Each MapEntry object is a pair consisting of a key (a Comparable
  20.         // object) and a value (an arbitrary object).
  21.         K key;
  22.         E value;
  23.  
  24.         public MapEntry (K key, E val) {
  25.             this.key = key;
  26.             this.value = val;
  27.         }
  28.  
  29.         public int compareTo (K that) {
  30.             // Compare this map entry to that map entry.
  31.             @SuppressWarnings("unchecked")
  32.             MapEntry<K,E> other = (MapEntry<K,E>) that;
  33.             return this.key.compareTo(other.key);
  34.         }
  35.  
  36.         public String toString () {
  37.             return "<" + key + "," + value + ">";
  38.         }
  39.     }
  40.  
  41.  
  42.     public static class OBHT<K extends Comparable<K>,E> {
  43.  
  44.         // An object of class OBHT is an open-bucket hash table, containing entries
  45.         // of class MapEntry.
  46.         private MapEntry<K,E>[] buckets;
  47.  
  48.         // buckets[b] is null if bucket b has never been occupied.
  49.         // buckets[b] is former if bucket b is formerly-occupied
  50.         // by an entry that has since been deleted (and not yet replaced).
  51.  
  52.         static final int NONE = -1; // ... distinct from any bucket index.
  53.  
  54.         private static final MapEntry former = new MapEntry(null, null);
  55.         // This guarantees that, for any genuine entry e,
  56.         // e.key.equals(former.key) returns false.
  57.  
  58.         private int occupancy = 0;
  59.         // ... number of occupied or formerly-occupied buckets in this OBHT.
  60.  
  61.         @SuppressWarnings("unchecked")
  62.         public OBHT (int m) {
  63.             // Construct an empty OBHT with m buckets.
  64.             buckets = (MapEntry<K,E>[]) new MapEntry[m];
  65.         }
  66.  
  67.  
  68.         private int hash (K key) {
  69.             // Translate key to an index of the array buckets.
  70.             return Math.abs(key.hashCode()) % buckets.length;
  71.         }
  72.  
  73.  
  74.         public int search (K targetKey) {
  75.             // Find which if any bucket of this OBHT is occupied by an entry whose key
  76.             // is equal to targetKey. Return the index of that bucket.
  77.             int b = hash(targetKey); int n_search=0;
  78.             for (;;) {
  79.                 MapEntry<K,E> oldEntry = buckets[b];
  80.                 if (oldEntry == null)
  81.                     return NONE;
  82.                 else if (targetKey.equals(oldEntry.key))
  83.                     return b;
  84.                 else
  85.                 {
  86.                     b = (b + 1) % buckets.length;
  87.                     n_search++;
  88.                     if(n_search==buckets.length)
  89.                         return NONE;
  90.  
  91.                 }
  92.             }
  93.         }
  94.  
  95.  
  96.         public void insert (K key, E val) {
  97.             // Insert the entry <key, val> into this OBHT.
  98.             MapEntry<K,E> newEntry = new MapEntry<K,E>(key, val);
  99.             int b = hash(key); int n_search=0;
  100.             for (;;) {
  101.                 MapEntry<K,E> oldEntry = buckets[b];
  102.                 if (oldEntry == null) {
  103.                     if (++occupancy == buckets.length) {
  104.                         System.out.println("Hash tabelata e polna!!!");
  105.                     }
  106.                     buckets[b] = newEntry;
  107.                     return;
  108.                 }
  109.                 else if (oldEntry == former
  110.                         || key.equals(oldEntry.key)) {
  111.                     buckets[b] = newEntry;
  112.                     return;
  113.                 }
  114.                 else
  115.                 {
  116.                     b = (b + 1) % buckets.length;
  117.                     n_search++;
  118.                     if(n_search==buckets.length)
  119.                         return;
  120.  
  121.                 }
  122.             }
  123.         }
  124.  
  125.  
  126.         @SuppressWarnings("unchecked")
  127.         public void delete (K key) {
  128.             // Delete the entry (if any) whose key is equal to key from this OBHT.
  129.             int b = hash(key); int n_search=0;
  130.             for (;;) {
  131.                 MapEntry<K,E> oldEntry = buckets[b];
  132.  
  133.                 if (oldEntry == null)
  134.                     return;
  135.                 else if (key.equals(oldEntry.key)) {
  136.                     buckets[b] = former;//(MapEntry<K,E>)former;
  137.                     return;
  138.                 }
  139.                 else{
  140.                     b = (b + 1) % buckets.length;
  141.                     n_search++;
  142.                     if(n_search==buckets.length)
  143.                         return;
  144.  
  145.                 }
  146.             }
  147.         }
  148.  
  149.  
  150.         public String toString () {
  151.             String temp = "";
  152.             for (int i = 0; i < buckets.length; i++) {
  153.                 temp += i + ":";
  154.                 if (buckets[i] == null)
  155.                     temp += "\n";
  156.                 else if (buckets[i] == former)
  157.                     temp += "former\n";
  158.                 else
  159.                     temp += buckets[i] + "\n";
  160.             }
  161.             return temp;
  162.         }
  163.  
  164.  
  165.         public OBHT<K,E> clone () {
  166.             OBHT<K,E> copy = new OBHT<K,E>(buckets.length);
  167.             for (int i = 0; i < buckets.length; i++) {
  168.                 MapEntry<K,E> e = buckets[i];
  169.                 if (e != null&&e != former)
  170.                     copy.buckets[i] = new MapEntry<K,E>(e.key, e.value);
  171.                 else
  172.                     copy.buckets[i] = e;
  173.             }
  174.             return copy;
  175.         }
  176.     }
  177.  
  178.  
  179.     public static void main(String[] args) throws IOException {
  180.  
  181.  
  182.         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  183.         int n = Integer.parseInt(in.readLine());
  184.  
  185.         OBHT<String, String> ht = new OBHT<String, String>(n+n+1);
  186.         for(int i = 0; i < n;i++){
  187.             String line = in.readLine();
  188.             String pom[] = line.split(" ");
  189.  
  190.             ht.insert(pom[0], pom[1]);
  191.         }
  192.  
  193.         String rez= "";
  194.         String tekst = in.readLine();
  195.         String pom[] = tekst.split(" ");
  196.         for(int i = 0; i < pom.length;i++){
  197.  
  198.         String zbor = pom[i];
  199.  
  200.         // dali ima karakter na posledna bukva
  201.          boolean last = Character.isAlphabetic(zbor.charAt(zbor.length()-1));
  202.          boolean first = Character.isUpperCase(zbor.charAt(0));
  203.          char lastChar = zbor.charAt(zbor.length()-1);
  204.          if(!last){
  205.              // izostavi go posledniot karakter
  206.               zbor = zbor.substring(0,zbor.length()-1);
  207.          }
  208.         // dali ima prva golema bukva
  209.         if(first)
  210.             zbor = Character.toLowerCase(zbor.charAt(0)) + zbor.substring(1);
  211.  
  212.  
  213.  
  214.         // dali go ima vo ht
  215.         if(ht.search(zbor)>=0){
  216.             // 1. go ima
  217.             int key = ht.search(zbor);
  218.             String sk = ht.buckets[key].value;
  219.             if(first){
  220.                 sk = Character.toUpperCase(sk.charAt(0)) + sk.substring(1);
  221.             }
  222.             if(!last){
  223.                 sk += lastChar;
  224.             }
  225.             System.out.print(sk + " ");
  226.  
  227.         }else{
  228.             // 2. go nema vo ht
  229.  
  230.             if(!last){
  231.                 zbor += lastChar;
  232.             }
  233.  
  234.             if(first){
  235.                 zbor = Character.toUpperCase(zbor.charAt(0)) + zbor.substring(1);
  236.             }
  237.  
  238.             System.out.print(zbor+" ");
  239.         }
  240.     }
  241.  
  242.  
  243.     }
  244.  
  245. }
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252. /*
  253.  
  254.  
  255.  
  256.             String zbor = pom[i];
  257.             char last = zbor.charAt(zbor.length() -1);
  258.             boolean first = Character.isUpperCase(zbor.charAt(0));
  259.             // ako e karakter
  260.             if(Character.isLetter(last)){
  261.                 if(first){
  262.                     zbor = zbor.toLowerCase();
  263.                 }
  264.                 int key = ht.search(zbor);
  265.                 String novZbor = ht.buckets[key].value;
  266.                 if(first){
  267.                     char c = Character.toUpperCase(zbor.charAt(0));
  268.                     String tmp = c+novZbor.substring(1);
  269.                     novZbor = tmp;
  270.                 }
  271.                 zbor.
  272.  
  273.             }
  274.             // ako ne e karakter
  275.  
  276.  
  277.  
  278.  
  279.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement