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