Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.58 KB | None | 0 0
  1.  
  2.  
  3. //proverka na spelling ASP
  4.  
  5. import java.io.BufferedReader;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8.  
  9.  
  10.  
  11. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  12. K key;
  13. E value;
  14.  
  15. public MapEntry (K key, E val) {
  16. this.key = key;
  17. this.value = val;
  18. }
  19. public int compareTo (K that) {
  20. @SuppressWarnings("unchecked")
  21. MapEntry<K,E> other = (MapEntry<K,E>) that;
  22. return this.key.compareTo(other.key);
  23. }
  24. public String toString () {
  25. return "(" + key + "," + value + ")";
  26. }
  27. }
  28.  
  29.  
  30. class OBHT<K extends Comparable<K>,E> {
  31.  
  32. private MapEntry<K,E>[] buckets;
  33. static final int NONE = -1; // ... distinct from any bucket index.
  34. @SuppressWarnings({ "rawtypes", "unchecked" })
  35. private static final MapEntry former = new MapEntry(null, null);
  36. private int occupancy = 0;
  37.  
  38. @SuppressWarnings("unchecked")
  39. public OBHT (int m) {
  40. buckets = (MapEntry<K,E>[]) new MapEntry[m];
  41. }
  42.  
  43. private int hash (K key) {
  44. return Math.abs(key.hashCode()) % buckets.length;
  45. }
  46.  
  47. public MapEntry<K,E> getBucket(int i) {
  48. return buckets[i];
  49. }
  50.  
  51. public int search (K targetKey) {
  52. int b = hash(targetKey);
  53. int n_search=0;
  54. for (;;) {
  55. MapEntry<K,E> oldEntry = buckets[b];
  56. if (oldEntry == null)
  57. return NONE;
  58. else if (targetKey.equals(oldEntry.key))
  59. return b;
  60. else {
  61. b = (b + 1) % buckets.length;
  62. n_search++;
  63. if(n_search==buckets.length)
  64. return NONE;
  65. }
  66. }
  67. }
  68.  
  69. public void insert (K key, E val) {
  70. MapEntry<K,E> newEntry = new MapEntry<K,E>(key, val);
  71. int b = hash(key);
  72. int n_search=0;
  73.  
  74. for (;;) {
  75. MapEntry<K,E> oldEntry = buckets[b];
  76. if (oldEntry == null) {
  77. if (++occupancy == buckets.length) {
  78. System.out.println("Hash tabelata e polna!!!");
  79. }
  80. buckets[b] = newEntry;
  81. return;
  82. } else if (oldEntry == former
  83. || key.equals(oldEntry.key)) {
  84. buckets[b] = newEntry;
  85. return;
  86. } else {
  87. b = (b + 1) % buckets.length;
  88. n_search++;
  89. if(n_search==buckets.length)
  90. return;
  91.  
  92. }
  93. }
  94. }
  95.  
  96. @SuppressWarnings("unchecked")
  97. public void delete (K key) {
  98. int b = hash(key);
  99. int n_search=0;
  100. for (;;) {
  101. MapEntry<K,E> oldEntry = buckets[b];
  102.  
  103. if (oldEntry == null)
  104. return;
  105. else if (key.equals(oldEntry.key)) {
  106. buckets[b] = former;
  107. return;
  108. } else {
  109. b = (b + 1) % buckets.length;
  110. n_search++;
  111. if(n_search==buckets.length)
  112. return;
  113.  
  114. }
  115. }
  116. }
  117.  
  118. public String toString () {
  119. String temp = "";
  120. for (int i = 0; i < buckets.length; i++) {
  121. temp += i + ":";
  122. if (buckets[i] == null)
  123. temp += "\n";
  124. else if (buckets[i] == former)
  125. temp += "former\n";
  126. else
  127. temp += buckets[i] + "\n";
  128. }
  129. return temp;
  130. }
  131. }
  132.  
  133.  
  134. class Zbor implements Comparable<Zbor> {
  135. String zbor;
  136.  
  137. public Zbor(String zbor) {
  138. this.zbor = zbor;
  139. }
  140. @Override
  141. public boolean equals(Object obj) {
  142. Zbor pom = (Zbor) obj;
  143. return this.zbor.equals(pom.zbor);
  144. }
  145. @Override
  146. public int hashCode() {
  147. char ch[];
  148. ch = zbor.toCharArray();
  149. int xlength = zbor.length();
  150.  
  151. int i, sum;
  152. for (sum=0, i=0; i < zbor.length(); i++)
  153. sum += ch[i];
  154. return sum % 31;
  155. }
  156. @Override
  157. public String toString() {
  158. return zbor;
  159. }
  160. @Override
  161. public int compareTo(Zbor arg0) {
  162. return zbor.compareTo(arg0.zbor);
  163. }
  164. }
  165.  
  166. public class Speluvanje {
  167. //isPunct funkcija
  168. public static boolean isPunct(String zbor) {
  169. int length = zbor.length();
  170. char c = zbor.charAt(length-1);
  171. return (c == '!' || c==',' || c == '?'|| c =='.');
  172. }
  173.  
  174. public static void main(String[] args) throws IOException {
  175.  
  176.  
  177.  
  178. OBHT<Zbor, String> tabela;
  179. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  180. int N = Integer.parseInt(br.readLine());
  181. //---Vie odluchete za goleminata na hesh tabelata----
  182. tabela = new OBHT<Zbor,String>(401);
  183.  
  184. //procitaj gi zborovite
  185. //dodaj gi site elementi vo hashot
  186. for(int i = 0 ; i <N; i++) {
  187. String text = br.readLine();
  188. Zbor zbor = new Zbor(text);
  189. tabela.insert(zbor, text);
  190. }
  191. //vcitaj go tekstot
  192. String tekst = br.readLine();
  193.  
  194. String[] strings = tekst.split(" ");
  195.  
  196. boolean isTochno = true;
  197. int br_netochni = 0;
  198. //podeli go tekstot na zborovi i iteriraj niz site niv
  199. if(tekst.length()==1) {
  200. if(isPunct(tekst)) {
  201. System.out.println("Bravo");
  202. }
  203. }
  204. for(int i =0; i<strings.length; i++) {
  205. //proveri dali zavrshuva so interpunciski znak
  206. if(isPunct(strings[i])) {
  207. strings[i] = strings[i].substring(0,strings[i].length()-1);
  208. }
  209.  
  210. if(strings[i].isEmpty()) {
  211. isTochno = true;
  212. }
  213.  
  214.  
  215. Zbor zbor = new Zbor(strings[i].toLowerCase());
  216. int key = tabela.search(zbor);
  217.  
  218. //proveri dali elementot postoi vo hashot so search
  219. if(key!=-1) {
  220.  
  221. if(zbor.toString().equals(tabela.getBucket(key).value)) {
  222. isTochno=true;
  223.  
  224. } else {
  225. isTochno = false;
  226. br_netochni++;
  227. }
  228.  
  229.  
  230. } else {
  231. br_netochni++;
  232. isTochno = false;
  233. System.out.println(strings[i]);
  234. }
  235.  
  236.  
  237. }
  238. if(isTochno==true) {
  239. if(br_netochni==0) {
  240. System.out.println("Bravo");
  241. }
  242. }
  243.  
  244. /*
  245. *
  246. * Vashiot kod tuka....
  247. *
  248. */
  249. }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement