Advertisement
Guest User

Untitled

a guest
Jan 31st, 2017
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Golfed - 946 bytes
  2. w=prompt();f=w.length;a=[];b=[];c=[];d=[];e=[];for(k=0;k<f;d.push(0),k++)c.push(0);for(k=0;k<f-2;k++){g=[j=0];for(i=1;i<(f-k)/3;i++){while(j&&w.charAt(k+i)!=w.charAt(k+j))j=g[j-1];w.charAt(k+i)==w.charAt(k+j)&&j++;g.push(j);}a.push(g);}for(k=0;k<f-2;k++){h=[];for(i=j=0;i<f;i++){if(w.charAt(i)!=w.charAt(k+j)){while(j&&w.charAt(i)!=w.charAt(k+j))j=a[k][j-1];w.charAt(i)==w.charAt(k+j)?i--:h.push(j);}else{h.push(++j);if(j==a[k].length)j=a[k][j-1];}}b.push(h);}for(k=0;k<f-2;k++){l=[];for(i=0;i<a[k].length+1;i++)l.push([]);for(i=0;i<f;i++)for(l[m=b[k][i]].push(i);m>0;l[m].push(i))m=a[k][m-1];for(i=1;i<a[k].length+1;i++)if(l[i].length==3)for(j=0;j<3;j++)if(c[l[i][j]-i+1]<i)c[l[i][j]-i+1]=i;}for(k=0;k<f&&e.push(w.substring(k,c[k]+k));k++)for(i=1;i<c[k];c[k]<c[k+i]+i++?d[k]=1:0)d[k+i]=1;for(k=0;k<f;k++)if(d[k])for(i=0;i<3;d[o]=0,i++)e[o=e.indexOf(n=e[k])]="";for(i=0;i<e.length;i++)for(;!e[i]&&i<e.length;)e.splice(i,1);console.log(e.join` `)
  3.  
  4. //Ungolfed
  5.  
  6. w = prompt();
  7. f = w.length;
  8. a = [];
  9. b = [];
  10. c = [];
  11. d = [];
  12. e = [];
  13. for (k = 0; k < f; d.push(0),k++)
  14.   c.push(0);
  15. for (k = 0; k < f - 2; k++) {
  16.   g = [j=0];
  17.   for (i = 1; i < (f - k) / 3; i++) {
  18.     while (j && w.charAt(k + i) != w.charAt(k + j)) j = g[j - 1];
  19.     w.charAt(k + i) == w.charAt(k + j) && j++;
  20.     g.push(j);
  21.   }
  22.   a.push(g);
  23. }
  24. for (k = 0; k < f - 2; k++) {
  25.   h = [];
  26.   for (i = j = 0; i < f; i++) {
  27.     if (w.charAt(i) != w.charAt(k + j)) {
  28.       while (j && w.charAt(i) != w.charAt(k + j)) j = a[k][j - 1];
  29.       w.charAt(i) == w.charAt(k + j)?i--:h.push(j);
  30.     } else {
  31.       h.push(++j);
  32.       if (j == a[k].length) j = a[k][j - 1];
  33.     }
  34.   }
  35.   b.push(h);
  36. }
  37. for (k = 0; k < f - 2; k++) {
  38.   l = [];
  39.   for (i = 0; i < a[k].length + 1; i++) l.push([]);
  40.   for (i = 0; i < f; i++)
  41.     for (l[m = b[k][i]].push(i);m > 0;l[m].push(i))
  42.       m = a[k][m - 1];
  43.   for (i = 1; i < a[k].length + 1; i++)
  44.     if (l[i].length == 3)
  45.       for (j = 0; j < 3; j++)
  46.         if (c[l[i][j] - i + 1] < i) c[l[i][j] - i + 1] = i;
  47. }
  48. for (k = 0; k < f&&e.push(w.substring(k, c[k] + k)); k++)
  49.   for (i = 1; i < c[k]; c[k] < c[k + i] + i++?d[k] = 1:0)
  50.     d[k + i] = 1;
  51. for (k = 0; k < f; k++)
  52.   if (d[k])
  53.     for (i = 0; i < 3; d[o] = 0,i++)
  54.       e[o= e.indexOf(n = e[k])] = "";
  55. for (i = 0; i < e.length; i++)
  56.   for (;!e[i] && i < e.length;) e.splice(i, 1);
  57. console.log(e.join` `);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement