Advertisement
Lusien_Lashans

avtomat

May 2nd, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //t=WScript.StdIn.ReadLine();
  2. //input = 'anananaananas';
  3. //t='ananas';
  4.  
  5. WSH.echo('Type string');
  6.      input = WScript.StdIn.ReadLine();
  7.      alphabet = [];
  8.  
  9.     if (input === ''){
  10.         WSH.echo('Wrong input string');
  11.     }
  12.  
  13.     WSH.echo('Type substring');
  14.      t = WScript.StdIn.ReadLine();
  15.  
  16.     if (t === ''){
  17.         WSH.echo('Wrong input substring');
  18.     }
  19.  
  20. m=t.length;
  21. alph=new Array();
  22. //Определяем алфавит строки t
  23. for(i=0;i<m;i++)
  24.     alph[t.charAt(i)]=0;
  25.     //В двумерном массиве del будем хранить таблицу переходов
  26.     del=new Array(m+1);
  27. for(j=0;j<=m;j++)
  28.     del[j]=new Array();
  29. //Инициализируем таблицу переходов
  30. for(i in alph)
  31.     del[0][i]=0;
  32. //Формируем таблицу переходов
  33. for(j=0;j<m;j++){
  34.     prev=del[j][t.charAt(j)];
  35.     del[j][t.charAt(j)]=j+1;
  36.     for(i in alph)
  37.         del[j+1][i]=del[prev][i];
  38. }
  39. //Выводим таблицу переходов
  40. for(j=0;j<=m;j++){
  41.     out='';
  42.     for(i in alph)
  43.         out+=del[j][i]+'';
  44.     WScript.Echo(out);
  45. }
  46. WSH.Echo('===========');
  47. temp = del[0][input.charAt(0)];
  48. result = [];
  49.  
  50.     for (i = 0; i < input.length; i++){
  51.         if (del[temp][input.charAt(i)] == undefined){
  52.             del[temp][input.charAt(i)] = 0;
  53.         }
  54.         WSH.echo(temp, i, del[temp][input.charAt(i)], input.charAt(i));
  55.         temp = del[temp][input.charAt(i)];
  56.         //i++;
  57.  
  58.         if (temp == m){
  59.             result.push(i - m + 2);
  60.         }
  61.     }
  62.  
  63.     WSH.echo('\n' +  result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement