Advertisement
sindi29

Kumanovski Dijalekt

Jan 20th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.44 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. class SLLNode<E> {
  6.     protected E element;
  7.     protected SLLNode<E> succ;
  8.  
  9.     public SLLNode(E elem, SLLNode<E> succ) {
  10.         this.element = elem;
  11.         this.succ = succ;
  12.     }
  13.  
  14.     @Override
  15.     public String toString() {
  16.         return element.toString();
  17.     }
  18. }
  19.  
  20. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  21.  
  22.     // Each MapEntry object is a pair consisting of a key (a Comparable
  23.     // object) and a value (an arbitrary object).
  24.     K key;
  25.     E value;
  26.  
  27.     public MapEntry (K key, E val) {
  28.         this.key = key;
  29.         this.value = val;
  30.     }
  31.    
  32.     public int compareTo (K that) {
  33.     // Compare this map entry to that map entry.
  34.         @SuppressWarnings("unchecked")
  35.         MapEntry<K,E> other = (MapEntry<K,E>) that;
  36.         return this.key.compareTo(other.key);
  37.     }
  38.  
  39.     public String toString () {
  40.         return "<" + key + "," + value + ">";
  41.     }
  42. }
  43.  
  44. class OBHT<K extends Comparable<K>,E> {
  45.  
  46.     // An object of class OBHT is an open-bucket hash table, containing entries
  47.     // of class MapEntry.
  48.     public MapEntry<K,E>[] buckets;
  49.    
  50.     // buckets[b] is null if bucket b has never been occupied.
  51.     // buckets[b] is former if bucket b is formerly-occupied
  52.     // by an entry that has since been deleted (and not yet replaced).
  53.  
  54.     static final int NONE = -1; // ... distinct from any bucket index.
  55.    
  56.     private static final MapEntry former = new MapEntry(null, null);
  57.     // This guarantees that, for any genuine entry e,
  58.     // e.key.equals(former.key) returns false.
  59.    
  60.     private int occupancy = 0;
  61.     // ... number of occupied or formerly-occupied buckets in this OBHT.
  62.    
  63.     @SuppressWarnings("unchecked")
  64.     public OBHT (int m) {
  65.     // Construct an empty OBHT with m buckets.
  66.         buckets = (MapEntry<K,E>[]) new MapEntry[m];
  67.     }
  68.  
  69.  
  70.     private int hash (K key) {
  71.     // Translate key to an index of the array buckets.
  72.         return Math.abs(key.hashCode()) % buckets.length;
  73.     }
  74.  
  75.    
  76.     public int search (K targetKey) {
  77.         // Find which if any bucket of this OBHT is occupied by an entry whose key
  78.         // is equal to targetKey. Return the index of that bucket.
  79.             int b = hash(targetKey); int n_search=0;
  80.             for (;;) {
  81.                 MapEntry<K,E> oldEntry = buckets[b];
  82.                 if (oldEntry == null)
  83.                     return NONE;
  84.                 else if (targetKey.equals(oldEntry.key))
  85.                     return b;
  86.                 else
  87.                 {
  88.                     b = (b + 1) % buckets.length;
  89.                     n_search++;
  90.                     if(n_search==buckets.length)
  91.                         return NONE;
  92.  
  93.                 }
  94.             }
  95.     }
  96.  
  97.  
  98.     public void insert (K key, E val) {
  99.     // Insert the entry <key, val> into this OBHT.
  100.         MapEntry<K,E> newEntry = new MapEntry<K,E>(key, val);
  101.         int b = hash(key); int n_search=0;
  102.         for (;;) {
  103.             MapEntry<K,E> oldEntry = buckets[b];
  104.             if (oldEntry == null) {
  105.                 if (++occupancy == buckets.length) {
  106.                     System.out.println("Hash tabelata e polna!!!");
  107.                 }
  108.                 buckets[b] = newEntry;
  109.                 return;
  110.             }
  111.             else if (oldEntry == former
  112.                     || key.equals(oldEntry.key)) {
  113.                 buckets[b] = newEntry;
  114.                 return;
  115.             }
  116.             else
  117.             {
  118.                 b = (b + 1) % buckets.length;
  119.                 n_search++;
  120.                 if(n_search==buckets.length)
  121.                     return;
  122.  
  123.             }
  124.         }
  125.     }
  126.  
  127.    
  128.     @SuppressWarnings("unchecked")
  129.     public void delete (K key) {
  130.     // Delete the entry (if any) whose key is equal to key from this OBHT.
  131.         int b = hash(key); int n_search=0;
  132.         for (;;) {
  133.             MapEntry<K,E> oldEntry = buckets[b];
  134.            
  135.             if (oldEntry == null)
  136.                 return;
  137.             else if (key.equals(oldEntry.key)) {
  138.                 buckets[b] = former;//(MapEntry<K,E>)former;
  139.                 return;
  140.             }
  141.             else{
  142.                 b = (b + 1) % buckets.length;
  143.                 n_search++;
  144.                 if(n_search==buckets.length)
  145.                     return;
  146.  
  147.             }
  148.         }
  149.     }
  150.  
  151.  
  152.     public String toString () {
  153.         String temp = "";
  154.         for (int i = 0; i < buckets.length; i++) {
  155.             temp += i + ":";
  156.             if (buckets[i] == null)
  157.                 temp += "\n";
  158.             else if (buckets[i] == former)
  159.                 temp += "former\n";
  160.             else
  161.                 temp += buckets[i] + "\n";
  162.         }
  163.         return temp;
  164.     }
  165.  
  166.  
  167.     public OBHT<K,E> clone () {
  168.         OBHT<K,E> copy = new OBHT<K,E>(buckets.length);
  169.         for (int i = 0; i < buckets.length; i++) {
  170.             MapEntry<K,E> e = buckets[i];
  171.             if (e != null && e != former)
  172.                 copy.buckets[i] = new MapEntry<K,E>(e.key, e.value);
  173.             else
  174.                 copy.buckets[i] = e;
  175.         }
  176.         return copy;
  177.     }
  178. }
  179.  
  180. public class KumanovskiDijalekt {
  181.  
  182.     public static void main(String[] args) throws IOException {
  183.         // TODO Auto-generated method stub
  184.        
  185.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));      
  186.         String s, word, sporedba, al;
  187.         String[] pom;
  188.         int n, p;
  189.         char b;
  190.        
  191.         s = br.readLine();
  192.         n = Integer.parseInt(s);
  193.         OBHT<String,String> tabela = new OBHT<String,String>(n+1);
  194.        
  195.         for(int i=0; i<n; i++)
  196.         {
  197.             s = br.readLine();
  198.             pom = s.split(" ");
  199.             tabela.insert(pom[0], pom[1]);
  200.         }
  201.        
  202.         s = br.readLine();
  203.         pom = s.split(" ");
  204.        
  205.         for(int i=0; i<pom.length; i++)
  206.         {
  207.             word = pom[i];
  208.             sporedba = pom[i].toLowerCase();
  209.             if(sporedba.contains("?") || sporedba.contains("!") || sporedba.contains(".") || sporedba.contains(","))
  210.                 sporedba = sporedba.substring(0, sporedba.length()-1);
  211.            
  212.             p = tabela.search(sporedba);
  213.            
  214.             if(p == -1)
  215.                 System.out.print(word + " ");
  216.             else
  217.             {
  218.                 al = tabela.buckets[p].value;
  219.                 if(Character.isUpperCase(word.charAt(0)))
  220.                 {
  221.                     al=Character.toUpperCase(al.charAt(0))+al.substring(1);
  222.                     //al=word.substring(0, 1).toUpperCase()+al.substring(1);
  223.                 }
  224.                 if(word.contains("?") || word.contains("!") || word.contains(".") || word.contains(","))
  225.                 {
  226.                     al+=word.substring(word.length()-1);
  227.                 }
  228.                
  229.                 System.out.print(al + " ");
  230.  
  231.             }
  232.            
  233.         }
  234.     }
  235.  
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement