Concatenate and Alternate
tags: alternate concatenate zip
Write a function that concatenates two lists. [a,b,c], [1,2,3] → [a,b,c,1,2,3]
1
2
3
4
5
6
7
8
9
10
11
12
| def concatenate(a, b)
for i in (0..b.size-1)
a << b[i]
end
a
end
a = ['a','b','c']
b = [1,2,3]
p concatenate(a, b)
|
If the input data structure cannot be modified:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| def concatenate(a, b)
result = []
for i in (0..a.size-1)
result << a[i]
end
for i in (0..b.size-1)
result << b[i]
end
result
end
a = ['a','b','c']
b = [1,2,3]
p concatenate(a, b)
|
Write a function that combines two lists by alternatingly taking elements, e.g. [a,b,c], [1,2,3] → [a,1,b,2,c,3].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| def alternate(a, b)
result = []
for i in (0..a.size - 1)
result << a[i]
result << b[i]
end
result
end
a = ['a', 'b', 'c']
b = [1, 2, 3]
p alternate(a, b)
|
This can be extended for three arrays:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| def zip(a, b, c)
result = []
for i in (0..a.size-1)
result << "#{a[i]}#{b[i]}#{c[i]}"
end
result
end
a = ['a', 'b', 'c']
b = ['A', 'B', 'C']
c = [1, 2, 3]
p zip(a, b, c)
|
This method outputs the same output as the Ruby builtin zip method.
1
| ['a','b','c'].zip(['A','B','C'], [1,2,3]) {|i,j,k| puts "#{i}#{j}#{k}"}
|