Array Rotate
Rotate in place
by rocketegg0
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0-beta.3/angular.min.js"></script>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0-beta.3/angular-sanitize.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.css">
<div ng-controller="myController">
<div class="panel panel-default">
<div class="panel-heading">
Array Rotate
</div>
<div class="panel-body">
<input type="string" ng-model="str"/>
<input type="number" ng-model="pos"/>
<button ng-click="reverse(str, pos)">Reverse</button>
<pre>{{str}} {{rotated}}</pre>
</div>
</div>
</div>
CSS
.blue {
color:blue;
}
.red {
color:red;
}
JavaScript
var mymodule = angular.module('mymodule', ['ngSanitize']);
mymodule.controller("myController", function ($scope) {
$scope.reverse = function(array, pos) {
var ints = array.split(',').map(function(c) { return parseInt(c)});
$scope.ints = ints;
var len = ints.length;
var temp = ints[0], temp2;
var from = 0, to;
for (var i = 0; i < len; i++) {
to = from + pos;
if (to > len - 1) { to = to - len; }
temp2 = ints[to];
ints[to] = temp;
from = to;
temp = temp2;
}
//1 - [5,4,3,2,1]
// - f: 0, t: 2, temp: 5
// - temp2: 3, [5,4,5,2,1], f = 2; temp: 3
//2 - [5,4,5,2,1]
// - f: 2, t: 4, temp: 3
// - temp2: 1, [5,4,5,2,3], f = 4; temp: 1
//3 - [5,4,5,2,3]
// - f:4, t:1, temp: 1
// - temp2: 4, [5,1,5,2,3], f = 1; temp: 4
$scope.rotated = ints;
}
});