cwtests/cw02/collatz2.while
author Christian Urban <christian.urban@kcl.ac.uk>
Sat, 04 Sep 2021 14:08:00 +0100
changeset 833 7c3b8bb4a174
permissions -rw-r--r--
cwupdates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
833
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
// Collatz series
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
//
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
// needs writing of strings and numbers; comments
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
bnd := 1;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
while bnd < 101 do {
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
  write bnd;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
  write ": ";
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
  n := bnd;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
  cnt := 0;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
  while n > 1 do {
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
    write n;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
    write ",";
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
    
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
    if n % 2 == 0 
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
    then n := n / 2 
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
    else n := 3 * n+1;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
    cnt := cnt + 1
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
  };
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
  write " => ";
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
  write cnt;
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
  write "\n";
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
  bnd := bnd + 1
7c3b8bb4a174 cwupdates
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
}