cw2_marking/c2.sc
author Christian Urban <christian.urban@kcl.ac.uk>
Mon, 03 Feb 2025 13:25:59 +0000
changeset 980 0c491eff5b01
parent 978 8778d23fef92
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
978
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
// for testing compilation
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
import $file.cw02
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
import cw02._
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
val ufile = """
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
// Collatz series
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
//
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
// needs writing of strings and numbers; comments
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
bnd := 1;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
while bnd < 101 do {
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
  write bnd;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
  write ": ";
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
  n := bnd;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
  cnt := 0;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
  while n > 1 do {
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
    write n;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
    write ",";
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
    
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
    if n % 2 == 0 
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
    then n := n / 2 
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
    else n := 3 * n+1;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
    cnt := cnt + 1
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
  };
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
  write " => ";
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
  write cnt;
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
  write "\n";
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
  bnd := bnd + 1
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
}
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
"""
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
8778d23fef92 updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
println(tokenise(ufile))