Sattolo cycle: Difference between revisions

From Rosetta Code
Content added Content deleted
(Add Csharp)
Line 20: Line 20:


=={{header|Java}}==
=={{header|Java}}==
<lang Java>private static final Random rng = new Random();
<lang Java>void sattoloCycle(Object[] items) {

void sattoloCycle(Object[] items) {
for (int i = items.length; i-- > 1;) {
for (int i = items.length; i-- > 1;) {
int j = (int) (Math.random() * i);
int j = rng.nextInt(i);
Object tmp = items[i];
Object tmp = items[i];
items[i] = items[j];
items[i] = items[j];

Revision as of 21:20, 29 August 2016

Task
Sattolo cycle
You are encouraged to solve this task according to the task description, using any language you may know.
Task

Implement the   Sattolo cycle   for an integer array (or, if possible, an array of any type).

Sattolo cycle is use to shuffle an array ensuring each index is in a new position.

C#

<lang csharp> private static readonly Random Rand = new Random();

void sattoloCycle<T>(IList<T> items) {

   for (var i = items.Count; i-- > 1;) {
       int j = Rand.Next(i);
       var tmp = items[i];
       items[i] = items[j];
       items[j] = tmp;
   }

}</lang>

Java

<lang Java>private static final Random rng = new Random();

void sattoloCycle(Object[] items) {

   for (int i = items.length; i-- > 1;) {
       int j = rng.nextInt(i);
       Object tmp = items[i];
       items[i] = items[j];
       items[j] = tmp;
   }

}</lang>

JavaScript

<lang JavaScript>function sattoloCycle(items) {

   for (var i = items.length; i--> 1;) {
       var j = Math.floor(Math.random() * i);
       var tmp = items[i];
       items[i] = items[j];
       items[j] = tmp;
   }

}</lang>

Python

<lang python>from random import randrange

def sattoloCycle(items):

   i = len(items)
   while i > 1:
       i = i - 1
       j = randrange(i)  # 0 <= j <= i-1
       items[j], items[i] = items[i], items[j]
   return</lang>


TypeScript

<lang TypeScript>function sattoloCycle<T>(items: Array<T>): void {

   for (let i = items.length; i--> 1;) {
       const j = Math.floor(Math.random() * i);
       const tmp = items[i];
       items[i] = items[j];
       items[j] = tmp;
   }

}</lang>