Skip to content

Commit a8cc2fe

Browse files
vasergenblakeembrey
authored andcommitted
feat(convert-array): Add javascript solution for convert-array problem (blakeembrey#171)
1 parent 9fdbb66 commit a8cc2fe

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
'use strict';
2+
3+
function getSwapIndex(currentInd, n) {
4+
var swapInd = (currentInd % 3) * n + parseInt(currentInd/3);
5+
while (swapInd < currentInd) {
6+
swapInd = getSwapIndex(swapInd, n);
7+
}
8+
9+
return swapInd;
10+
}
11+
12+
function convert(arr) {
13+
var n = parseInt(arr.length / 3);
14+
15+
for(var i = 0; i < arr.length; i++) {
16+
var swapInd = getSwapIndex(i, n);
17+
18+
var tmp = arr[i];
19+
arr[i] = arr[swapInd];
20+
arr[swapInd] = tmp;
21+
}
22+
23+
return arr;
24+
}
25+
26+
module.exports = convert;

tests/javascript/convert-array.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var assert = require('assert');
2+
var convert = require('../../solutions/javascript/convert-array');
3+
4+
describe('Convert Array', function() {
5+
it('should convert an array', function() {
6+
var arr = [
7+
'a1', 'a2', 'a3', 'a4', 'a5',
8+
'b1', 'b2', 'b3', 'b4', 'b5',
9+
'c1', 'c2', 'c3', 'c4', 'c5'
10+
];
11+
12+
var expectedArr = [
13+
'a1', 'b1', 'c1',
14+
'a2', 'b2', 'c2',
15+
'a3', 'b3', 'c3',
16+
'a4', 'b4', 'c4',
17+
'a5', 'b5', 'c5'
18+
];
19+
20+
convert(arr);
21+
22+
for(var i = 0; i < arr.length; i++) {
23+
assert.equal(arr[i], expectedArr[i]);
24+
}
25+
})
26+
})

0 commit comments

Comments
 (0)