Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- f[x_] := Abs[Extract[list, x + n] - Extract[list, x]]
- g = Length[Cases[Map[f, Table[i, {i, Length[list] - n}]], 0]]
- k[list_, dist_] := Count[ListConvolve[Join[{1}, ConstantArray[0, dist - 1], {1}], list, {-1, 1}, 0,
- Times, First@# == Last@# &@List@## &],
- True]
- list = {a, e, a, e, b, e, b, c, d};
- k[{a, e, a, e, b, e, b, c, d}, #] & /@ Range[Length[list] - 2]
- (* {0, 4, 0, 1, 0, 0, 0} *)
- Clear[countSameLetters]
- countSameLetters[list_List, distance_Integer] :=
- Position[
- Flatten@Differences@Position[list, #] & /@
- CharacterRange["a", "z"], distance] // Length
- Clear[countAndDisplaySameLetters]
- countAndDisplaySameLetters[list_List, distance_Integer] :=
- Module[{distancePerLetter, aToZ, letterPositions},
- aToZ = CharacterRange["a", "z"];
- letterPositions =
- First /@
- Position[Differences@Flatten@Position[list, #] & /@ aToZ,
- distance];
- {distance, Length[letterPositions],
- Part[aToZ, DeleteDuplicates@letterPositions]}
- ]
- randomChar = RandomChoice[CharacterRange["a", "z"], 100]
- countSameLetters[randomChar, 5]
- (* 2 *)
- countAndDisplaySameLetters[randomChar, 5]
- (* {5, 2, {"e", "i"}} *)
- countAndDisplaySameLetters[randomChar, #] & /@ Range[1, 10] //
- TableForm[#,
- TableHeadings -> {None, {"Distance", "Count", "Letters"}},
- TableSpacing -> {5, 2}] &
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement