Skip to content

Commit 1b53390

Browse files
committed
add Enum.slide/3
1 parent cd85761 commit 1b53390

File tree

5 files changed

+105
-0
lines changed

5 files changed

+105
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
\matrix [list=a] {
2+
\node [index=0]; &
3+
\node [elements between]; &
4+
\node {$a_{\small{\texttt{dst}}}$}; &
5+
\node [elements between]; &
6+
\node (afirst) {$a_{\small{\texttt{first}}}$}; &
7+
\node [elements between]; &
8+
\node (alast) {$a_{\small{\texttt{last}}}$}; &
9+
\node [index=n-1]; \\
10+
};
11+
12+
\matrix [list=b, element=a, below=2 of list a] {
13+
\node [index=0]; &
14+
\node [elements between]; &
15+
\node (bfirst) {$a_{\small{\texttt{first}}}$}; &
16+
\node [elements between]; &
17+
\node (blast) {$a_{\small{\texttt{last}}}$}; &
18+
\node {$a_{\small{\texttt{dst}}}$}; &
19+
\node [elements between]; &
20+
\node [index=n-1]; \\
21+
};
22+
23+
\draw [interval=a, interval segments={{2/5}/solid,{3/5}/dashed,1/solid}] ([yshift=5mm]afirst.north west) -- ([yshift=5mm]alast.north east);
24+
25+
\node [above=0 of interval a mark top 1] {\texttt{first}};
26+
\node [above=0 of interval a mark top 4] {\texttt{last}};
27+
28+
\bracetobrace
29+
{alast.south east}{afirst.south west}
30+
{bfirst.north west}{blast.north east}
31+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
\matrix [list=a] {
2+
\node [index=-n]; &
3+
\node [elements between]; &
4+
\node {$a_{\small{\texttt{src}-1}}$}; &
5+
\node (asrc) {$a_{\small{\texttt{src}}}$}; &
6+
\node {$a_{\small{\texttt{src}+1}}$}; &
7+
\node [elements between]; &
8+
\node {$a_{\small{-\texttt{dst}}}$}; &
9+
\node [elements between]; &
10+
\node [index=-1]; \\
11+
};
12+
13+
\matrix [list=b, element=a, below=2 of list a] {
14+
\node [index=-n]; &
15+
\node [elements between]; &
16+
\node {$a_{\small{\texttt{src}-1}}$}; &
17+
\node {$a_{\small{\texttt{src}+1}}$}; &
18+
\node [elements between]; &
19+
\node {$a_{\small{-\texttt{dst}}}$}; &
20+
\node (bsrc) {$a_{\small{\texttt{src}}}$}; &
21+
\node [elements between]; &
22+
\node [index=-1]; \\
23+
};
24+
25+
\draw [->, out=270, in=90] (asrc) to (bsrc);
26+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
\matrix [list=a] {
2+
\node [index=0]; &
3+
\node [elements between]; &
4+
\node {$a_{\small{\texttt{dst}}}$}; &
5+
\node [elements between]; &
6+
\node {$a_{\small{\texttt{src}-1}}$}; &
7+
\node (asrc) {$a_{\small{\texttt{src}}}$}; &
8+
\node {$a_{\small{\texttt{src}+1}}$}; &
9+
\node [elements between]; &
10+
\node [index=n-1]; \\
11+
};
12+
13+
\matrix [list=b, element=a, below=2 of list a] {
14+
\node [index=0]; &
15+
\node [elements between]; &
16+
\node (bsrc) {$a_{\small{\texttt{src}}}$}; &
17+
\node {$a_{\small{\texttt{dst}}}$}; &
18+
\node [elements between]; &
19+
\node {$a_{\small{\texttt{src}-1}}$}; &
20+
\node {$a_{\small{\texttt{src}+1}}$}; &
21+
\node [elements between]; &
22+
\node [index=n-1]; \\
23+
};
24+
25+
\draw [->, out=270, in=90] (asrc) to (bsrc);
26+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: slide/3
3+
url: Enum/slide/3
4+
---
5+
6+
Slides a single element of the `enumerable` from `src` to `dst`.
7+
8+
{{< figure src="images/functions/Enum/slide-3.svg" >}}
9+
10+
When `src` is a `Range` then multiple elements are slided.
11+
12+
{{< figure src="images/functions/Enum/slide-3.2.svg" >}}
13+
14+
When `dst` is negative count is done from the end.
15+
16+
{{< figure src="images/functions/Enum/slide-3.3.svg" >}}
17+

data/signatures.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,11 @@
329329
defmodule Enum do
330330
def slice(enumerable, start, count)
331331
end
332+
- name: slide/3
333+
signature: |
334+
defmodule Enum do
335+
def slide(enumerable, src, dst)
336+
end
332337
- name: sort/1
333338
signature: |
334339
defmodule Enum do

0 commit comments

Comments
 (0)