$29
THIS ASSIGNMENT IS ONLY WORTH 10% OF YOUR FINAL GRADE.
Instructions
In this assignment, you will be required to write JavaScript functions that simplify playing of the variation of basic train Dominoes.
1.1 Data File Speci cation
An example of properly formatted le is shown in Figure 1. The rst le encodes the hands, the second le encodes the trains that are to be changed during every move.
test.hands.doc
8 ,11;0 ,9;2 ,3;9 ,12;5 ,8;4 ,5;4 ,8;1 ,11;11 ,12;3 ,7;5 ,10;5 ,12;4 ,12;10 ,12;7 ,10;0 ,0;1 ,2
1 ,6;3 ,5;6 ,9;4 ,4;5 ,5;10 ,10;2 ,4;5 ,9;2 ,10;9 ,11;9 ,10;0 ,10;4 ,7;3 ,6;7 ,11;2 ,8;6 ,10
0 ,12;2 ,2;0 ,6;3 ,11;3 ,3;7 ,9;0 ,8;1 ,7;0 ,3;3 ,12;7 ,8;0 ,11;1 ,12;7 ,7;5 ,7;2 ,5;1 ,10
5 ,6;8 ,12;6 ,11;7 ,12;5 ,11;8 ,10;0 ,7;2 ,9;4 ,10;3 ,8;0 ,1;2 ,7;10 ,11;6 ,8;1 ,4;11 ,11;6 ,12
1 ,5;3 ,4;1 ,8;4 ,11;3 ,9;0 ,4;8 ,9;0 ,2;6 ,7;4 ,9;4 ,6;3 ,10;1 ,9;2 ,6;1 ,3;0 ,5;2 ,11
test.trains.doc
,12
1 ,1
6 ,6
9 ,9
8 ,8
Figure 1: A properly formatted game encoding
One Player, One Move
The rst part (onePlayerOneMove in the le csce322Homework02Part01.js) will take in one (1) argument (a train) and return a function that takes in one (1) argument (a hand), and returns the train that is the result of making a move based on the follow rules (in order of precedence).
Move from First to Last Domino in Hand
Place the Domino as is on the Front of the Train
Place the Domino ipped on the Front of the Train
1
Place the Domino as is on the Back of the Train
Place the Domino ipped on the Back of the Train
A train is valid when neighboring dominoes share the same number for touch halves.
3 ,11;2 ,6;1 ,10;4 ,5;0 ,0;1 ,6;4 ,8;7 ,10;2 ,9;3 ,9
2 ,4;0 ,9;9 ,9;3 ,4;2 ,10;0 ,6;7 ,11;1 ,9;1 ,2;6 ,7
5 ,7;0 ,12;2 ,11;10 ,12;4 ,6;0 ,3;6 ,6;6 ,10;2 ,3;9 ,11
0 ,5;0 ,11;1 ,8;6 ,12;3 ,7;1 ,7;1 ,11;6 ,11;5 ,10;5 ,9
5 ,12;10 ,11;4 ,9;1 ,12;4 ,7;2 ,5;2 ,12;4 ,12;4 ,10;0 ,8
0 ,2;6 ,8;3 ,8;9 ,12;5 ,6;1 ,4;7 ,9;0 ,4;3 ,6;1 ,5
7 ,8;4 ,11;8 ,10;5 ,11;5 ,8;9 ,10;7 ,12;3 ,3;0 ,7;7 ,7
3 ,12;1 ,3;8 ,9;3 ,10;8 ,11;8 ,12;0 ,1;2 ,7;2 ,8;3 ,5
,2
1 ,1
10 ,10
5 ,5
4 ,4
8 ,8
12 ,12
11 ,11
Figure 2: Before onePlayerOneMove
[[6,2],[2,2]]
Figure 3: After onePlayerOneMove
One Player, Many Moves
The second part (onePlayerManyMoves in the le csce322Homework02Part02.js) will take in one
argument (a train) and return a function that takes in one (1) argument (a hand), and returns the train that is the result of attempting to place as many dominoes from the hand as possible into the train. If the hand has already been emptied, or the train cannot be extended, the train is returned unchanged. The same rules of precedence apply.
Page 2
0 ,9;2 ,11;6 ,9;1 ,2;4 ,7;5 ,12;3 ,5;4 ,9;5 ,11;4 ,5;2 ,8;11 ,12
1 ,7;2 ,12;6 ,7;1 ,8;4 ,8;0 ,0;5 ,10;10 ,11;3 ,11;8 ,9;2 ,3;2 ,9
2 ,10;0 ,6;6 ,10;11 ,11;2 ,5;1 ,11;1 ,10;9 ,11;8 ,8;0 ,5;0 ,1;6 ,8
4 ,6;0 ,12;4 ,10;7 ,11;1 ,4;0 ,3;1 ,3;8 ,11;8 ,10;0 ,2;3 ,9;1 ,12
5 ,6;6 ,11;9 ,12;0 ,11;0 ,10;9 ,10;1 ,6;1 ,9;3 ,12;10 ,12;9 ,9;4 ,11
5 ,9;2 ,7;7 ,8;6 ,12;5 ,7;8 ,12;3 ,6;2 ,4;3 ,4;2 ,6;2 ,2;5 ,5
7 ,10;5 ,8;4 ,12;7 ,9;7 ,12;3 ,10;0 ,7;3 ,8;3 ,7;0 ,4;0 ,8;1 ,5
,7
4 ,4
1 ,1
12 ,12
10 ,10
3 ,3
6 ,6
Figure 4: Before onePlayerManyMoves
[0,9],[9,4],[4,7],[7,7]] Figure 5: After onePlayerManyMoves
Many Players , One Move
The third part (manyPlayersOneMove in the le csce322Homework02Part03.js) will take in one
argument (an array of trains) and return a function that takes in one (1) argument (an array of hands), and returns the game that is the result of each player making one move . The same rules of precedence apply.
2 ,3;4 ,5;2 ,10;6 ,12;11 ,12;0 ,2;6 ,8;4 ,11;6 ,6;0 ,12;8 ,11;5 ,5;4 ,4;0 ,4
1 ,3;1 ,4;1 ,9;2 ,11;0 ,7;5 ,7;1 ,2;3 ,5;1 ,6;3 ,10;3 ,4;3 ,9;7 ,12;1 ,11
2 ,7;4 ,9;8 ,12;4 ,6;10 ,10;9 ,12;5 ,11;0 ,11;7 ,11;0 ,8;2 ,6;8 ,9;5 ,6;5 ,8
1 ,5;2 ,9;2 ,8;3 ,6;4 ,10;0 ,6;9 ,11;1 ,12;10 ,11;0 ,10;7 ,10;5 ,10;4 ,7;7 ,9
7 ,8;5 ,12;5 ,9;0 ,9;6 ,10;1 ,10;1 ,7;10 ,12;9 ,10;6 ,7;3 ,8;6 ,9;6 ,11;9 ,9
3 ,11;3 ,7;2 ,4;0 ,1;0 ,5;2 ,12;4 ,8;3 ,3;3 ,12;8 ,10;8 ,8;1 ,8;0 ,3;4 ,12
,11
,12
2 ,2
7 ,7
0 ,0
1 ,1
Figure 6: Before manyPlayersOneMove
Page 3
[[[12,11],
[11,11]],
[[7,12],[12,12
] ] ,
[[7,2
] , [
2 , 2
] ] ,
[[10,7],[7,7]],
[[9,0
] , [
0 , 0
] ] ,
[[0,1
] , [
1 , 1
] ] ]
Figure 7: After manyPlayersOneMove
Many Players , Many Moves
The fourth part (manyPlayersManyMoves in the le csce322Homework02Part04.js) will take in one (1) argument (an array of trains) and return a function that takes in one (1) argument (a list of hands), and returns the game that is the result of each player making a move in turn until someone has emptied their hand or nobody can add to their train. The same rules of precedence apply.
8 ,12;2 ,9;1 ,8;9 ,11;9 ,12;3 ,9;8 ,10;0 ,5;1 ,11;3 ,10;7 ,12;4 ,5
5 ,6;2 ,12;10 ,11;6 ,9;7 ,11;0 ,12;4 ,8;5 ,8;3 ,5;6 ,7;11 ,12;6 ,12
1 ,5;6 ,10;12 ,12;2 ,7;7 ,7;6 ,6;8 ,11;4 ,10;3 ,6;1 ,10;6 ,8;10 ,12
1 ,1;0 ,6;1 ,7;4 ,12;2 ,3;9 ,10;2 ,10;0 ,1;1 ,3;3 ,12;4 ,6;8 ,9
0 ,2;2 ,6;3 ,4;1 ,12;5 ,7;5 ,10;0 ,7;0 ,9;5 ,11;3 ,7;0 ,11;0 ,3
7 ,8;4 ,9;6 ,11;5 ,12;7 ,9;1 ,2;2 ,5;7 ,10;1 ,9;4 ,7;0 ,4;4 ,11
1 ,4;3 ,11;5 ,9;0 ,0;0 ,10;2 ,11;0 ,8;2 ,4;1 ,6;9 ,9;2 ,8;3 ,8
,3 11 ,11 5 ,5 2 ,2 4 ,4 8 ,8 10 ,10
Figure 8: Before manyPlayersManyMoves
[[[2,9],[
9,3],[3,3
],[3,10
], [ 10,
8
] ,
[8,12]],
[[10,11],
[11,11],[11,7],[
7 , 6
] , [
6 ,
5
] , [
5,8]
] ,
[[3,6],[
6 , 6
],[6,10
], [ 10,
1 ] ,
[ 1 ,
5
] ,
[ 5 ,
5
] ] ,
[[1,1],[
1 , 3
],[3,2
],[2,2
] , [
2, 10 ], [ 10,
9
] ] ,
[[10,5],[5,7],[7,3
],[3,4
],[4,4]],
[[7,4],[
4 , 9
],[9,7
],[7,8
] , [
8 , 8
] ] ,
[2,8],[8,0],[0,0],[0,10],[10,10]]]
Figure 9: After manyPlayersManyMoves
Page 4
Naming Conventions
Your les should follow the naming convention of
csce322Homework02Part01.js, csce322Homework02Part02.js, csce322Homework02Part03.js, and csce322Homework02Part04.js.
6.1 helpers.js
A le named helpers.js has been provided with the functionality to read the .doc les into numerical matrices. If a modi ed helpers.js le is not included with your submission, the default will be used in its place.
webgrader Note
Submissions will be tested with node.js, note the browser. cse.unl.edu is currently running version 4:8:7 of node.
8
Point Allocation
Component
Points
csce322Homework02Part01.js
1 20
Test Cases
Total
20
csce322Homework02Part02.js
1 20
Test Cases
Total
20
csce322Homework02Part03.js
1 30
Test Cases
Total
30
csce322Homework02Part04.js
1 30
Test Cases
Total
30
Total
100
9
External Resources
JavaScript Tutorial
Page 5