v 1.26

This is a MathPiperIDE worksheet file, and it
consists of folds which contain source code. A
fold starts with percent<keyword> and ends with
percent/<keyword>. Code is entered inside a fold
and then evaluated by placing the cursor anywhere
inside the code and pressing <shift><enter>. The
result of the evaluation will be placed at the
bottom of the fold within an indented output fold.

Folds can be folded and unfolded by pressing the
small triangles in the gutter which is on the left
side of the text area. There are additional fold
operations in the "Folding" menu at the top of the
window.


%mathpiper,description="Perform a simple calculation."

5 + 6;

%/mathpiper

    %output,mpversion="306",preserve="false"
      Result: 11
.   %/output







%mathpiper,title="Print the integers from 1 - 50."

x := 1;

While(x <=? 50)
{
  Write(x);
  
  WriteString(",");
  
  x := x + 1; 
}

%/mathpiper

    %output,mpversion="306",preserve="false"
      Result: 51
      
      Side Effects:
      1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
.   %/output







%mathpiper,description="Solve an equation."

Solve(MathParse("2 - (-3x-8) = 1"), MathParse("x"));

%/mathpiper

    %output,mpversion="306",preserve="false"
      Result: [_x ==  -3]
.   %/output







%mathpiper,description="Solve numerous equations."

equs := 
[
["2 - (-3x-8) = 1","x"],
["-5(-4+2x)= -50","x"],
["66 = 6(6+5x)","x"],
["0 = -8(x-5)","x"],
["-2+2(8x-7)=-16","x"],
["-21x +12 = -6-3x","x"],
["-1-7x = -8x+7","x"],
["1-12r = 29 - 8r","r"],
["20 - 7x = -12x + 30","x"],
["-32-24x = 34 - 2x","x"],
["-2-5(2-4x) =33 + 5x","x"],
["-4x +  11 = 2(1 - 8x) + 3x","x"],
["-6x - 29 = -4x - 5(x + 1)","x"],
["2(4x-4) = -20 - 4x","x"],
["-x -5(8x-1) = 39 - 7x","x"],
["-57 = -(-x+1) + 2(6 + 8x)","x"],
];

ForEach(equ, equs)
{
    Echo(equ[1] + ": " + Nl() + Solve(MathParse(equ[1]), MathParse(equ[2])) + Nl());
}

%/mathpiper

    %output,mpversion="306",preserve="false"
      Result: True
      
      Side Effects:
      2 - (-3x-8) = 1: 
      [_x ==  -3]
      
      -5(-4+2x)= -50: 
      [_x == 7]
      
      66 = 6(6+5x): 
      [_x == 1]
      
      0 = -8(x-5): 
      [_x == 5]
      
      -2+2(8x-7)=-16: 
      [_x == 0]
      
      -21x +12 = -6-3x: 
      [_x == 1]
      
      -1-7x = -8x+7: 
      [_x == 8]
      
      1-12r = 29 - 8r: 
      [_r ==  -7]
      
      20 - 7x = -12x + 30: 
      [_x == 2]
      
      -32-24x = 34 - 2x: 
      [_x ==  -3]
      
      -2-5(2-4x) =33 + 5x: 
      [_x == 3]
      
      -4x +  11 = 2(1 - 8x) + 3x: 
      [_x ==  -1]
      
      -6x - 29 = -4x - 5(x + 1): 
      [_x == 8]
      
      2(4x-4) = -20 - 4x: 
      [_x ==  -1]
      
      -x -5(8x-1) = 39 - 7x: 
      [_x ==  -1]
      
      -57 = -(-x+1) + 2(6 + 8x): 
      [_x ==  -4]
      
      
.   %/output







%mathpiper,description="Working with units."

2`inch + 3`inch;

%/mathpiper

    %output,mpversion="306",preserve="false"
      Result: 5`inch
.   %/output







%mathpiper,title="Converting between units."

1`mile # inch;

%/mathpiper

    %output,mpversion="306",preserve="false"
      Result: 63360`inch
.   %/output







%group,description="Automatically grade applied math problems."
========================================================================================================
Circular Motion and Force
(obtained from http://iweb.tntech.edu/murdock/books.html)

A 0.015 kg ball is shot from the plunger of a
pinball machine. Because of a centripetal force of
0.028 N, the ball follows a circular arc whose
radius is 0.25 m. What is the speed of the ball?


%mathpiper,name="Problem 1",subtype="problem",unassign_all="true",globalStateShow="true"

Problem()
{
    Description()
    {
        "
        Circular Motion and Force
        (obtained from http://iweb.tntech.edu/murdock/books.html)
        
        A 0.015 kg ball is shot from the plunger of a
        pinball machine. Because of a centripetal force of
        0.028 N, the ball follows a circular arc whose
        radius is 0.25 m. What is the speed of the ball?
        ";
    }
    
    Given()
    {
        m$ := .015`kg;
        
        F$c := .028`N;
        
        r$ := .25`m;
    }
    
    Sought()
    {
        v$::"Speed of the ball.";
    }
    
    Formulas()
    {   
        f5$9 := Formula(F$c`N == (m$`g * v$`(m/s)^2) / r$`m, 
                        Label:"5.9", 
                        Page:"73", 
                        Subject:'v$);
    }

    Evaluations()
    {
        v$ := EvaluateFormula(f5$9, m/s);
    }
}

%/mathpiper

    %output,parent="Problem 1",mpversion="306",preserve="false"
      Result: 0.6831300511`(m / s)
      
      Side Effects:
      === RESULT VALUES ===
      v$: 0.6831300511`(m / s)
      
      === FORMULAS (2D VIEW) ===
      /                                                                          \
      | ( 5.9 ) /               2 \ ( ==SUBJECT==> ) /           / F$c * r$ \ \  |
      |         |        m$ * v$  |                  | v$ == Sqrt| -------- | |  |
      |         | F$c == -------- |                  \           \    m$    / /  |
      |         \           r$    /                                              |
      \                                                                          /
      
      === STEPS (CODE VIEW) ===
       1: m$ := .015`kg ==> .015`kg
       2: F$c := .028`N ==> .028`N
       3: r$ := .25`m ==> .25`m
       4: (5.9) F$c == (m$ * v$^2) / r$ ==SUBJECT==> v$ == Sqrt((F$c * r$) / m$)
       5: v$ := EvaluateFormula(f5$9, m / s) ==> 0.6831300511`(m / s)
      
.   %/output





%mathpiper_grade,name="Problem 1",base_six_four="true"

CnsKICAgIEZvbGRHcmFkZSgiTWF0aFBpcGVyIHZlcnNpb24gPj0gMjk3IiwgMSwgVHJ1ZSkKICAgIHsKICAgICAgICBTdHJpbmdUb051bWJlcihWZXJzaW9uKCkpID49PyAyOTc7CiAgICB9CgogICAgRm9sZEdyYWRlKCJUaGUgY29kZSBkb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBldmFsdWF0ZWQiLCAxLCBUcnVlKQogICAgewogICAgICAgIEV4Y2VwdGlvbkNhdGNoKCBQaXBlVG9TdHJpbmcoKSBFdmFsKD9mb2xkQ29kZVsxXSksICIiLCAnRXhjZXB0aW9uKSAhPT8gJ0V4Y2VwdGlvbjsKICAgIH0KICAgICAgICAKICAgIEZvbGRHcmFkZSgiVGhlIGNvZGUgZm9sbG93cyB0aGUgTWF0aFBpcGVyIGNvZGUgc3R5bGUgYnJhY2UgYWxpZ25tZW50IGd1aWRlbGluZXMiLCAxLCBGYWxzZSkKICAgIHsKICAgICAgICBCcmFjZVRlc3QoUGlwZUZyb21TdHJpbmcoP2ZvbGRDb2RlU3RyaW5nKSBQYXJzZU1hdGhQaXBlcigpKTsKICAgIH0KICAgIAogICAgRm9sZEdyYWRlKCJUaGUgY29kZSBmb2xsb3dzIHRoZSBNYXRoUGlwZXIgY29kZSBzdHlsZSBpbmRlbnRhdGlvbiBndWlkZWxpbmVzIiwgMSwgRmFsc2UpCiAgICB7CiAgICAgICAgSW5kZW50YXRpb25UZXN0KFBpcGVGcm9tU3RyaW5nKD9mb2xkQ29kZVN0cmluZykgUGFyc2VNYXRoUGlwZXIoKSk7CiAgICB9CgogICAgRm9sZEdyYWRlKCJBIGNvcnJlY3QgZ2l2ZW4gdmFsdWUgaXMgYXNzaWduZWQgdG8gIiArICJtJCIsIDEsIEZhbHNlKQogICAgewogICAgICAgIEV4Y2VwdGlvbkNhdGNoKFVuaXRzRXF1YWw/KG0kLCAuMDE1YGtnKSwgIiIsIEV4Y2VwdGlvbkdldCgpWyJtZXNzYWdlIl0pOwogICAgfQoKICAgIEZvbGRHcmFkZSgiQSBjb3JyZWN0IGdpdmVuIHZhbHVlIGlzIGFzc2lnbmVkIHRvICIgKyAiRiRjIiwgMSwgRmFsc2UpCiAgICB7CiAgICAgICAgRXhjZXB0aW9uQ2F0Y2goVW5pdHNFcXVhbD8oRiRjLCAuMDI4YE4pLCAiIiwgRXhjZXB0aW9uR2V0KClbIm1lc3NhZ2UiXSk7CiAgICB9CgogICAgRm9sZEdyYWRlKCJBIGNvcnJlY3QgZ2l2ZW4gdmFsdWUgaXMgYXNzaWduZWQgdG8gIiArICJyJCIsIDEsIEZhbHNlKQogICAgewogICAgICAgIEV4Y2VwdGlvbkNhdGNoKFVuaXRzRXF1YWw/KHIkLCAuMjVgbSksICIiLCBFeGNlcHRpb25HZXQoKVsibWVzc2FnZSJdKTsKICAgIH0KCiAgICBGb2xkR3JhZGUoIkEgY29ycmVjdCB2YWx1ZSBpcyBhc3NpZ25lZCB0byAiICsgInYkIiArICIgdXNpbmcgdGhlIEV2YWx1YXRlRm9ybXVsYSBwcm9jZWR1cmUiLCAxLCBGYWxzZSkKICAgIHsKICAgICAgICBFeGNlcHRpb25DYXRjaChVbml0c0VxdWFsPyh2JCwgMC42ODMxMzAwNTExYChtIC8gcykpLCAiIiwgRXhjZXB0aW9uR2V0KClbIm1lc3NhZ2UiXSk7CiAgICB9Cn0KCg==

%/mathpiper_grade

    %output,parent="Problem 1",mpversion="306",preserve="false"
      Result: True
      
      Side Effects:
        PASS: The code does not throw an exception when parsed. (1/1)
        PASS: The fold is not empty. (1/1)
        PASS: The ':' operator is not used to assign a value to a variable. (1/1)
        PASS: The results of all arithmetic operations are assigned to a variable. For example 'count := (count + 1) is okay, but (count + 1) by itself is not okay. (1/1)
        PASS: The version of "Append" that does not end with a '!' is not used. (1/1)
        ------------------------------------------
        PASS: MathPiper version >= 297. (1/1)
        PASS: The code does not throw an exception when evaluated. (1/1)
        PASS: The code follows the MathPiper code style brace alignment guidelines. (1/1)
        PASS: The code follows the MathPiper code style indentation guidelines. (1/1)
        PASS: A correct given value is assigned to m$. (1/1)
        PASS: A correct given value is assigned to F$c. (1/1)
        PASS: A correct given value is assigned to r$. (1/1)
        PASS: A correct value is assigned to v$ using the EvaluateFormula procedure. (1/1)
      
        13/13 passes
.   %/output

%/group







%group,name="Problem 3",description="Automatic grading of programs."
========================================================================================================

Problem 3

Create a program that uses a While() loop and a
NegativeNumber?() procedure to copy all of the
negative numbers in the following list into a new
list in the order which they appear in the
original list. Use the variable
"negativeNumbersList" to hold the new list. Return
the contents of the list after it has been
created. Do not assign the value from the input
list to a variable.

[36,-29,-33,-6,14,7,-16,-3,-14,37,-38,-8,-45,-21,-26,6,6,38,-20,33,41,-4,24,37,40,29]


%mathpiper,name="Problem 3",subtype="problem",unassign_all="true",globalStateShow="true",truncate="1500",timeout="5000"

list := [36,-29,-33,-6,14,7,-16,-3,-14,37,-38,-8,-45,-21,-26,6,6,38,-20,33,41,-4,24,37,40,29];

negativeNumbersList := [];

listLength := Length(list);

index := 1;

While(index <=? listLength)
{
    If(NegativeNumber?(list[index]))
    {
        Append!(negativeNumbersList, list[index]);
    }

    index := (index + 1);
}

negativeNumbersList;

%/mathpiper

    %output,parent="Problem 3",mpversion="306",preserve="false"
      Result: [-29,-33,-6,-16,-3,-14,-38,-8,-45,-21,-26,-20,-4]
.   %/output





%mathpiper_grade,name="Problem 3",base_six_four="true"

CkxvY2FsU3ltYm9scyhmb2xkUmVzdWx0KQp7CiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgCiAgICBGb2xkR3JhZGUoIlRoZSBjb2RlIGRvZXMgbm90IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRlZCIsIDEsIFRydWUpCiAgICB7CiAgICAgICAgRXhjZXB0aW9uQ2F0Y2goZm9sZFJlc3VsdCA6PSBFdmFsKD9mb2xkQ29kZVsxXSksICIiLCAnRXhjZXB0aW9uKSAhPT8gJ0V4Y2VwdGlvbjsKICAgIH0KICAgIAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIAogICAgRm9sZEdyYWRlKCJNYXRoUGlwZXIgdmVyc2lvbiA+PSAuMjU3IiwgMSwgVHJ1ZSkKICAgIHsKICAgICAgICBTdHJpbmdUb051bWJlcihWZXJzaW9uKCkpID49PyAuMjU3OwogICAgfQogICAgCiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIAogICAgCiAgICBGb2xkR3JhZGUoIlRoZSBjb2RlIGRvZXMgbm90IHByb2R1Y2Ugc2lkZSBlZmZlY3Qgb3V0cHV0IiwgMSwgRmFsc2UpCiAgICBMb2NhbFN5bWJvbHMocHJvY2VkdXJlTmFtZXMpCiAgICB7CiAgICAgICAgcHJvY2VkdXJlTmFtZXMgOj0gUHJvY2VkdXJlTGlzdCg/Zm9sZENvZGUpOwogICAgICAgIAogICAgICAgICE/IENvbnRhaW5zPyhwcm9jZWR1cmVOYW1lcywiRWNobyIpICY/ICE/IENvbnRhaW5zPyhwcm9jZWR1cmVOYW1lcywiV3JpdGUiKSAmPyAhPyBDb250YWlucz8ocHJvY2VkdXJlTmFtZXMsIlRhYmxlRm9ybSIpOwogICAgfQogICAgCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgCiAgICBGb2xkR3JhZGUoIlRoZSBBcHBlbmQhKCkgcHJvY2VkdXJlIGlzIHVzZWQiLCAxLCBGYWxzZSkKICAgIExvY2FsU3ltYm9scyhwcm9jZWR1cmVOYW1lcykKICAgIHsKICAgICAgICBwcm9jZWR1cmVOYW1lcyA6PSBQcm9jZWR1cmVMaXN0KD9mb2xkQ29kZSk7CiAgICAgICAgQ29udGFpbnM/KHByb2NlZHVyZU5hbWVzLCJBcHBlbmQhIik7CiAgICB9CiAgICAKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAKICAgIEZvbGRHcmFkZSgiVGhlIEFwcGVuZCEoKSBwcm9jZWR1cmUncyBmaXJzdCBhcmd1bWVudCBpcyAnbmVnYXRpdmVOdW1iZXJzTGlzdCciLCAxLCBGYWxzZSkKICAgIHsKICAgICAgICBQb3NpdGlvbnNQYXR0ZXJuMig/Zm9sZENvZGUsICcoIEFwcGVuZCEoYV8sIGJfKTo6KGEgPT8gJ25lZ2F0aXZlTnVtYmVyc0xpc3QpKSkgIT0/IFtdOwogICAgfQogICAgCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgCiAgICBGb2xkR3JhZGUoIlRoZSBBcHBlbmQhKCkgcHJvY2VkdXJlJ3Mgc2Vjb25kIGFyZ3VtZW50IGFjY2Vzc2VzIGFuIGVsZW1lbnQgaW4gdGhlIGlucHV0IGxpc3QuIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbm90IHRoZSB3aG9sZSBsaXN0LCBhbmQgaXQgaXMgbm90IGp1c3QgYW4gaW5kZXgiLCAxLCBGYWxzZSkKICAgIHsKICAgICAgICBQb3NpdGlvbnNQYXR0ZXJuMig/Zm9sZENvZGUsICcoIEFwcGVuZCEoYV8sIGJfKTo6KFR5cGUoYikgPT8gIk50aCIpKSkgIT0/IFtdOwogICAgfQogICAgCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgCiAgICBGb2xkR3JhZGUoIlRoZSByZXN1bHQgaXMgYSBsaXN0IiwgMSwgVHJ1ZSkKICAgIHsKICAgICAgICBMaXN0Pyhmb2xkUmVzdWx0KTsKICAgIH0KICAgIAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIAogICAgRm9sZEdyYWRlKCJUaGUgZXhwcmVzc2lvbiAnbmVnYXRpdmVOdW1iZXJzTGlzdDsnIGlzIHRoZSBsYXN0IGV4cHJlc3Npb24gaW4gdGhlIGZvbGQiLCAxLCBGYWxzZSkKICAgIExvY2FsU3ltYm9scyhtYWluUG9zaXRpb24pCiAgICB7CiAgICAgICAgP2ZvbGRDb2RlWzFdW0xlbmd0aCg/Zm9sZENvZGVbMV0pXSA9PyAnbmVnYXRpdmVOdW1iZXJzTGlzdDsKICAgIH0KICAgIAogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIAoKICAgIEZvbGRHcmFkZSgiVGhlIHJlc3VsdCBpcyBub3QgaW4gdGhlIGNvZGUgYXMgYSBsaXRlcmFsIiwgMSwgVHJ1ZSkKICAgIExvY2FsU3ltYm9scyh2YWx1ZXMpCiAgICB7ICAKICAgICAgICB2YWx1ZXMgOj0gU3VidHJlZXNQYXR0ZXJuKD9mb2xkQ29kZSwgYV9MaXN0PyApOwoKICAgICAgICAhPyBDb250YWlucz8odmFsdWVzLCAiWy0yOSwtMzMsLTYsLTE2LC0zLC0xNCwtMzgsLTgsLTQ1LC0yMSwtMjYsLTIwLC00XSIpOwogICAgfQogICAgCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgCiAgICBGb2xkR3JhZGUoIlRoZSBjb3JyZWN0IHZhbHVlIGlzIHJldHVybmVkIiwgMSwgVHJ1ZSkKICAgIHsKICAgICAgICBmb2xkUmVzdWx0ID0/IFstMjksLTMzLC02LC0xNiwtMywtMTQsLTM4LC04LC00NSwtMjEsLTI2LC0yMCwtNF07CiAgICB9CiAgICAKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAKICAgIEZvbGRHcmFkZSgiVGhlIHByb2NlZHVyZSBXaGlsZSgpIGlzIHVzZWQgaW4gdGhlIGNvZGUiLCAxLCBGYWxzZSkKICAgIExvY2FsU3ltYm9scyhwcm9jZWR1cmVOYW1lcykKICAgIHsKICAgICAgICBwcm9jZWR1cmVOYW1lcyA6PSBQcm9jZWR1cmVMaXN0KD9mb2xkQ29kZSk7CiAgICAgICAgQ29udGFpbnM/KHByb2NlZHVyZU5hbWVzLCJXaGlsZSIpICY/ICE/IENvbnRhaW5zPyhwcm9jZWR1cmVOYW1lcywiVW50aWwiKTsKICAgIH0KfQoK

%/mathpiper_grade

    %output,parent="Problem 3",mpversion="306",preserve="false"
      Result: True
      
      Side Effects:
        PASS: The code does not throw an exception when parsed. (1/1)
        PASS: The fold is not empty. (1/1)
        PASS: The ':' operator is not used to assign a value to a variable. (1/1)
        PASS: The results of all arithmetic operations are assigned to a variable. For example 'count := (count + 1) is okay, but (count + 1) by itself is not okay. (1/1)
        PASS: The version of "Append" that does not end with a '!' is not used. (1/1)
        ------------------------------------------
        PASS: The code does not throw an exception when evaluated. (1/1)
        PASS: MathPiper version >= .257. (1/1)
        PASS: The code does not produce side effect output. (1/1)
        PASS: The Append!() procedure is used. (1/1)
        PASS: The Append!() procedure's first argument is 'negativeNumbersList'. (1/1)
        PASS: The Append!() procedure's second argument accesses an element in the input list. The second argument is not the whole list, and it is not just an index. (1/1)
        PASS: The result is a list. (1/1)
        PASS: The expression 'negativeNumbersList;' is the last expression in the fold. (1/1)
        PASS: The result is not in the code as a literal. (1/1)
        PASS: The correct value is returned. (1/1)
        PASS: The procedure While() is used in the code. (1/1)
      
        16/16 passes
.   %/output

%/group







%html,width="700",height="440",description="Rendering HTML"

    <html>
        <h1 align="center">HTML Color Values</h1>
        <table border="0" cellpadding="10" cellspacing="1" width="600">
            <tr>
                <th bgcolor="white" colspan="2"></th>
                <th colspan="6">where blue=cc</th>
            </tr>
            <tr>
                <th rowspan="6">where&nbsp;red=</th>
                <th>ff</th>
                <th bgcolor="#ff00cc">ff00cc</th>
                <th bgcolor="#ff33cc">ff33cc</th>
                <th bgcolor="#ff66cc">ff66cc</th>
                <th bgcolor="#ff99cc">ff99cc</th>
                <th bgcolor="#ffcccc">ffcccc</th>
                <th bgcolor="#ffffcc">ffffcc</th>
            </tr>
            <tr>
                <th>cc</th>
                <th bgcolor="#cc00cc">cc00cc</th>
                <th bgcolor="#cc33cc">cc33cc</th>
                <th bgcolor="#cc66cc">cc66cc</th>
                <th bgcolor="#cc99cc">cc99cc</th>
                <th bgcolor="#cccccc">cccccc</th>
                <th bgcolor="#ccffcc">ccffcc</th>
            </tr>
            <tr>
                <th>99</th>
                <th bgcolor="#9900cc">
                    <font color="#ffffff">9900cc</font>
                </th>
                <th bgcolor="#9933cc">9933cc</th>
                <th bgcolor="#9966cc">9966cc</th>
                <th bgcolor="#9999cc">9999cc</th>
                <th bgcolor="#99cccc">99cccc</th>
                <th bgcolor="#99ffcc">99ffcc</th>
            </tr>
            <tr>
                <th>66</th>
                <th bgcolor="#6600cc">
                    <font color="#ffffff">6600cc</font>
                </th>
                <th bgcolor="#6633cc">
                    <font color="#FFFFFF">6633cc</font>
                </th>
                <th bgcolor="#6666cc">6666cc</th>
                <th bgcolor="#6699cc">6699cc</th>
                <th bgcolor="#66cccc">66cccc</th>
                <th bgcolor="#66ffcc">66ffcc</th>
            </tr>
            <tr>
                <th colspan="1"></th>
                <th>00</th>
                <th>33</th>
                <th>66</th>
                <th>99</th>
                <th>cc</th>
                <th>ff</th>
            </tr>
            <tr>
                <th colspan="2"></th>
                <th colspan="4">where green=</th>
            </tr>
        </table>
    </html>
    
%/html