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;
        
    }
});