Problem Statement
We will be given the initial conditions
by a
We would like an animation of the process. At each unit of time, we want a
string showing occupied locations with an 'X' and unoccupied locations with a
'.'. Create a class Animation that contains a method animate that is given an int
speed and a
The method will return
a
Definition
- Class:
- Animation
- Method:
- animate
- Parameters:
- int, String
- Returns:
- String[]
- Method signature:
- String[] animate(int speed, String init)
- (be sure your method is public)
Constraints
- speed will be between 1 and 10 inclusive
- init will contain between 1 and 50 characters inclusive
- each character in init will be '.' or 'L' or 'R'
Examples
2
"..R...."
Returns: { "..X....", "....X..", "......X", "......." }
The single particle starts at the 3rd position, moves to the 5th, then 7th, and then out of the chamber.
3
"RR..LRL"
Returns: { "XX..XXX", ".X.XX..", "X.....X", "......." }
At time 1, there are actually 4 particles in the chamber, but two are passing through each other at the 4th position
2
"LRLR.LRLR"
Returns: { "XXXX.XXXX", "X..X.X..X", ".X.X.X.X.", ".X.....X.", "........." }
At time 0 there are 8 particles. At time 1, there are still 6 particles, but only 4 positions are occupied since particles are passing through each other.
10
"RLRLRLRLRL"
Returns: { "XXXXXXXXXX", ".........." }
These particles are moving so fast that they all exit the chamber by time 1.
1
"..."
Returns: { "..." }
8
".........."
Returns: { ".........." }
1
"RRRRRRRRRRRRRRRRRRRR"
Returns: { "XXXXXXXXXXXXXXXXXXXX", ".XXXXXXXXXXXXXXXXXXX", "..XXXXXXXXXXXXXXXXXX", "...XXXXXXXXXXXXXXXXX", "....XXXXXXXXXXXXXXXX", ".....XXXXXXXXXXXXXXX", "......XXXXXXXXXXXXXX", ".......XXXXXXXXXXXXX", "........XXXXXXXXXXXX", ".........XXXXXXXXXXX", "..........XXXXXXXXXX", "...........XXXXXXXXX", "............XXXXXXXX", ".............XXXXXXX", "..............XXXXXX", "...............XXXXX", "................XXXX", ".................XXX", "..................XX", "...................X", "...................." }
2
"LR.LR.LR.LR.L"
Returns: { "XX.XX.XX.XX.X", ".X.XX.XX.XX.X", "..X..X..X..X.", "X..X..XX..X..", ".X..X....X..X", "..X........X.", "X............", "............." }
1
"LR.LR.LR.LR.L"
Returns: { "XX.XX.XX.XX.X", "..X..X..X..X.", ".X.XX.XX.XX.X", "X..XX.XX.XX..", "..X..X..X..X.", ".X..X.XX.X..X", "X..X..XX..X..", "..X..X..X..X.", ".X..X....X..X", "X..X......X..", "..X........X.", ".X..........X", "X............", "............." }
3
"LR.LR.LR.LR.L"
Returns: { "XX.XX.XX.XX.X", "X..XX.XX.XX..", "X..X..XX..X..", "X..X......X..", "X............", "............." }
4
"LR.LR.LR.LR.L"
Returns: { "XX.XX.XX.XX.X", "..X..X..X..X.", ".X..X....X..X", "X............", "............." }
5
"LR.LR.LR.LR.L"
Returns: { "XX.XX.XX.XX.X", ".X..X.XX.X..X", "..X........X.", "............." }
10
"LR.LR.LR.LR.L"
Returns: { "XX.XX.XX.XX.X", "..X........X.", "............." }
1
"RRRLLL..."
Returns: { "XXXXXX...", ".XXXX....", ".XXXX....", "XXXXXX...", "XX..XXX..", "X....XXX.", "......XXX", ".......XX", "........X", "........." }
2
"RRRLLL..."
Returns: { "XXXXXX...", ".XXXX....", "XX..XXX..", "......XXX", "........X", "........." }
2
".................................................."
Returns: { ".................................................." }
1
"................................................R."
Returns: { "................................................X.", ".................................................X", ".................................................." }
3
"LRRL.LR.LRR.R.LRRL."
Returns: { "XXXX.XX.XXX.X.XXXX.", "X.X.XX...X.XXXXX..X", "..X....XX..XX..XX.X", ".....X..X.XX...X..X", "..X..X.......XX...X", "..X.............XX.", "..................." }
6
"LRRL.LR.LRR.R.LRRL."
Returns: { "XXXX.XX.XXX.X.XXXX.", "..X....XX..XX..XX.X", "..X..X.......XX...X", "..................." }
7
"LRRL.LR.LRR.R.LRRL."
Returns: { "XXXX.XX.XXX.X.XXXX.", ".X.....XXXX..X..XX.", "X..X...........XX..", "..................." }
1
"LRRL.LR.LRR.R.LRRL."
Returns: { "XXXX.XX.XXX.X.XXXX.", "..XXX..X..XX.X..XX.", ".X.XX.X.X..XX.XX.XX", "X.X.XX...X.XXXXX..X", ".X..XXX...X..XX.X..", "X..X..XX.X.XX.XX.X.", "..X....XX..XX..XX.X", ".X.....XXXX..X..XX.", "X.....X..XX...X..XX", ".....X..X.XX...X..X", "....X..X...XX...X..", "...X..X.....XX...X.", "..X..X.......XX...X", ".X..X.........XX...", "X..X...........XX..", "..X.............XX.", ".X...............XX", "X.................X", "..................." }
1
"R.L"
Returns: { "X.X", ".X.", "X.X", "..." }
1
"LRRL.LR.LRR.R.LRRL."
Returns: { "XXXX.XX.XXX.X.XXXX.", "..XXX..X..XX.X..XX.", ".X.XX.X.X..XX.XX.XX", "X.X.XX...X.XXXXX..X", ".X..XXX...X..XX.X..", "X..X..XX.X.XX.XX.X.", "..X....XX..XX..XX.X", ".X.....XXXX..X..XX.", "X.....X..XX...X..XX", ".....X..X.XX...X..X", "....X..X...XX...X..", "...X..X.....XX...X.", "..X..X.......XX...X", ".X..X.........XX...", "X..X...........XX..", "..X.............XX.", ".X...............XX", "X.................X", "..................." }
1
"..."
Returns: { "..." }
5
"LR"
Returns: { "XX", ".." }
1
"RRLL..RRLL"
Returns: { "XXXX..XXXX", ".XX....XX.", "XXXX..XXXX", "X..XXXX..X", "....XX....", "...XXXX...", "..XX..XX..", ".XX....XX.", "XX......XX", "X........X", ".........." }