All Tracks Problem

Taunt
Tag(s):

Very-Easy

Problem
Editorial
Analytics

Taunt is a two player board game which is played on a $$10\;X\; 4$$ grid of cells and is played on opposite sides of the game-board. Each player has an allocated color, Orange ( First Player ) or Green ( Second Player ) being conventional. Each player has nine piece in total. The players move their pieces towards to his / her opponent’s area by moving their pieces strategically. Each piece has a different moving feature and is one of the 3 types of pieces.

Piece 1: It can move to horizontally or vertically adjacent cell, if the cell doesn't contain a piece of same color.

enter image description here

Piece 2: It can move to horizontally adjacent cell or can move two steps forward, if the cell doesn't contain a piece of same color (except the piece itself).

enter image description here

This type of piece can move to its own position if its in the second last row of the grid and going downward or if its in the second row of the grid and going upward.

enter image description here

Piece 3: It can move two step diagonally in the forward direction, if the cell doesn't contain a piece of same color (except the piece itself).

enter image description here enter image description here

This type of piece can move to its own position if its in the second last row of the grid and going downward or if its in the second row of the grid and going upward.

enter image description here

Players take turns involving moves of pieces as mentioned above and can captures opponent's piece by jumping on or over opponent's pieces.

Note: Forward direction for first player is downward and for second player is upward.

If a piece (except piece 1) is moving downward and touches the last row, its direction will change i.e. now it will move upward. Similarly, once if a piece (except piece 1) is moving upward and touches the first row, its direction will change i.e. now it will move downward.

Rules:

  • Player can only move according to the moves mentioned above.
  • A player may not move an opponent's piece.
  • A player can captures opponent's piece by jumping on or over opponent pieces.

The game will end after $$100$$ moves ( $$50$$ moves for each player ) or when any of the players don't have any move left. At the end of the game the player with majority of pieces will win.

We will play it on an $$10\;X\;4$$ grid. The top left of the grid is $$[0,\;0]$$ and the bottom right is $$[9,\;3]$$.

Input:
The input will be a $$10\;X\;4$$ matrix consisting only of $$0,\;1\;or\;2$$. Next line will contain an integer denoting the total number of moves till the current state of the board. Next line contains an integer - $$1$$ or $$2$$ which is your player id.

In the given matrix, top-left is $$[0,\;0]$$ and bottom-right is $$[9,\;3]$$. The y-coordinate increases from left to right, and x-coordinate increases from top to bottom.

A cell is represented by 3 integers.

First integer denotes the player id ($$1$$ or $$2$$).
Second integer denotes the type of piece ($$1$$, $$2$$ or $$3$$).
Third integer denotes the direction of the piece ($$0$$ (upward) or $$1$$ (downward)). When the piece is of first type, direction doesn't matter as the piece is free to move to horizontally or vertically adjacent cell, if the cell doesn't contain a piece of same color.

Empty cell is represented by $$000$$.

Output:
In the first line print the coordinates of the cell separated by space, the piece you want to move.
In second line print the coordinates of the cell in which the piece will jump.
You must take care that you don't print invalid coordinates. For example, $$[1,\;1]$$ might be a valid coordinate in the game play if the piece is able to jump to $$[1,\;1]$$, but $$[9,\;10]$$ will never be. Also if you play an invalid move or your code exceeds the time/memory limit while determining the move, you lose the game.

Starting state
The starting state of the game is the state of the board before the game starts.
131 131 131 121
121 121 111 111
111 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 210
210 210 220 220
220 230 230 230

First Input
This is the input give to the first player at the start of the game.
131 131 131 121
121 121 111 111
111 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 210
210 210 220 220
220 230 230 230
0
1

SAMPLE INPUT
000 000 000 000
000 000 000 111
000 000 111 130
000 000 000 000
000 000 000 000
000 220 000 000
131 000 000 000
121 000 210 000
000 210 131 000
000 210 000 000
58
1
SAMPLE OUTPUT
8 2
8 0

Explanation

This is player 1's turn, and the player will move the piece at $$[8,\;2]$$ and will take two steps diagonally in downward direction and will be at $$[8,\;0]$$
After his/her move the state of game becomes:
000 000 000 000
000 000 000 111
000 000 111 130
000 000 000 000
000 000 000 000
000 220 000 000
131 000 000 000
121 000 210 000
130 210 000 000
000 000 000 000
59
2

Note: Direction of the piece is also changed from $$1$$ to $$0$$ as the piece was moving downward and touches the last row. This state will be fed as input to program of player 2.

Here is the code of the default bot.

Time Limit: 1.0 sec(s) for each input file.
Memory Limit: 256 MB
Source Limit: 1024 KB
Marking Scheme: Marks are awarded when all the testcases pass.
Allowed Languages: C, C++, Clojure, C#, D, Erlang, F#, Go, Groovy, Haskell, Java, Java 8, JavaScript(Rhino), JavaScript(Node.js), Lisp, Lisp (SBCL), Lua, Objective-C, OCaml, Octave, Pascal, Perl, PHP, Python, Python 3, R(RScript), Racket, Ruby, Rust, Scala, Scala 2.11.8, Swift, Visual Basic

CODE EDITOR

Enter your code or Upload your code as file.
Saved

    Loading code editor...

    If code editor doesn't load in few seconds, click on the problem again.

    Our compiler wanted to be here!But the mobile is too cramped for it to load. It says it would be more comfortable on the web.

    Your Rating:

    Contributor

    Notifications
    View All Notifications