Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. f[x_] := Abs[Extract[list, x + n] - Extract[list, x]]
  2.  
  3. g = Length[Cases[Map[f, Table[i, {i, Length[list] - n}]], 0]]
  4.  
  5. k[list_, dist_] := Count[ListConvolve[Join[{1}, ConstantArray[0, dist - 1], {1}], list, {-1, 1}, 0,
  6. Times, First@# == Last@# &@List@## &],
  7. True]
  8.  
  9. list = {a, e, a, e, b, e, b, c, d};
  10. k[{a, e, a, e, b, e, b, c, d}, #] & /@ Range[Length[list] - 2]
  11.  
  12. (* {0, 4, 0, 1, 0, 0, 0} *)
  13.  
  14. Clear[countSameLetters]
  15. countSameLetters[list_List, distance_Integer] :=
  16. Position[
  17. Flatten@Differences@Position[list, #] & /@
  18. CharacterRange["a", "z"], distance] // Length
  19.  
  20. Clear[countAndDisplaySameLetters]
  21. countAndDisplaySameLetters[list_List, distance_Integer] :=
  22. Module[{distancePerLetter, aToZ, letterPositions},
  23. aToZ = CharacterRange["a", "z"];
  24. letterPositions =
  25. First /@
  26. Position[Differences@Flatten@Position[list, #] & /@ aToZ,
  27. distance];
  28. {distance, Length[letterPositions],
  29. Part[aToZ, DeleteDuplicates@letterPositions]}
  30. ]
  31.  
  32. randomChar = RandomChoice[CharacterRange["a", "z"], 100]
  33.  
  34. countSameLetters[randomChar, 5]
  35. (* 2 *)
  36.  
  37. countAndDisplaySameLetters[randomChar, 5]
  38. (* {5, 2, {"e", "i"}} *)
  39.  
  40. countAndDisplaySameLetters[randomChar, #] & /@ Range[1, 10] //
  41. TableForm[#,
  42. TableHeadings -> {None, {"Distance", "Count", "Letters"}},
  43. TableSpacing -> {5, 2}] &
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement