#/*********************************************************** # strmatch.rb -- 文字列照合 #***********************************************************/ def position(txt, pattern) c = pattern[0]; i = 0 while (txt[i] != nil) if (txt[i += 1] == c) k = i; j = 1 while (txt[k] == pattern[j] && pattern[j] != nil) k += 1; j += 1 end if (pattern[j] == nil); return k - j; end # 見つかった end end return -1; # 見つからなかった end =begin # **** あるいは同じことであるが... **** def position(txt, pattern) i = j = 0 while (txt[i] != nil && pattern[j] != nil) if (txt[i] == pattern[j]); i += 1; j += 1 else; i = i - j + 1; j = 0; end end if (pattern[j] == nil); return i - j; end # 見つかった return -1; # 見つからなかった end =end txt = "AAAAAABAAAC" pattern = ["AAA", "AAB", "AAC", "AAD"] for i in 0...4 printf("position(\"%s\", \"%s\") = %d\n",\ txt, pattern[i], position(txt, pattern[i])) end exit 0