#include <iostream>
#include <vector>
using namespace std;
void print_prompt( const vector< vector< char >> & m, int x, int y) {
std:: cout << "You're currently at (" << x << ", " << y << ") = " << m[ y] [ x] << std:: endl ;
std:: cout << "Enter a direction to travel (N, S, E, W):" << std:: endl ;
}
int main( ) {
vector< vector< char >> matrix = { { 'A' , 'B' , 'C' , 'D' } ,
{ 'E' , 'F' , 'G' , 'H' } ,
{ 'I' , 'J' , 'K' , 'L' } ,
{ 'M' , 'N' , 'O' , 'P' } } ;
int x = 2 , y = 2 ;
char dir;
print_prompt( matrix, x, y) ;
while ( std:: cin >> dir)
{
switch ( dir) {
case 'N' :
case 'n' :
y = ( y - 1 ) % matrix.size ( ) ;
break ;
case 'S' :
case 's' :
y = ( y + 1 ) % matrix.size ( ) ;
break ;
case 'E' :
case 'e' :
x = ( x + 1 ) % matrix[ y] .size ( ) ;
break ;
case 'W' :
case 'w' :
x = ( x - 1 ) % matrix[ y] .size ( ) ;
break ;
}
print_prompt( matrix, x, y) ;
}
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBwcmludF9wcm9tcHQoY29uc3QgdmVjdG9yPHZlY3RvcjxjaGFyPj4gJiBtLCBpbnQgeCwgaW50IHkpIHsKCXN0ZDo6Y291dCA8PCAiWW91J3JlIGN1cnJlbnRseSBhdCAoIiA8PCB4IDw8ICIsICIgPDwgeSA8PCIpID0gIiA8PCBtW3ldW3hdIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCAiRW50ZXIgYSBkaXJlY3Rpb24gdG8gdHJhdmVsIChOLCBTLCBFLCBXKToiIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8dmVjdG9yPGNoYXI+PiBtYXRyaXggPSB7eydBJywgJ0InLCAnQycsICdEJ30sCgkJCQkJCQkJICAgeydFJywgJ0YnLCAnRycsICdIJ30sCgkJCQkJCQkJICAgeydJJywgJ0onLCAnSycsICdMJ30sCgkJCQkJCQkJICAgeydNJywgJ04nLCAnTycsICdQJ319OwoJaW50IHggPSAyLCB5ID0gMjsKCWNoYXIgZGlyOwoJCglwcmludF9wcm9tcHQobWF0cml4LCB4LCB5KTsKCXdoaWxlKHN0ZDo6Y2luID4+IGRpcikKCXsKCQlzd2l0Y2goZGlyKSB7CgkJCWNhc2UgJ04nOgoJCQljYXNlICduJzoKCQkJCXkgPSAoeSAtIDEpICUgbWF0cml4LnNpemUoKTsKCQkJCWJyZWFrOwoJCQljYXNlICdTJzoKCQkJY2FzZSAncyc6CgkJCQl5ID0gKHkgKyAxKSAlIG1hdHJpeC5zaXplKCk7CgkJCQlicmVhazsKCQkJY2FzZSAnRSc6CgkJCWNhc2UgJ2UnOgoJCQkJeCA9ICh4ICsgMSkgJSBtYXRyaXhbeV0uc2l6ZSgpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ1cnOgoJCQljYXNlICd3JzoKCQkJCXggPSAoeCAtIDEpICUgbWF0cml4W3ldLnNpemUoKTsKCQkJCWJyZWFrOwoJCX0KCQlwcmludF9wcm9tcHQobWF0cml4LCB4LCB5KTsKCX0KCQkJCQkJCQkgICAKCXJldHVybiAwOwp9
stdout
You're currently at (2, 2) = K
Enter a direction to travel (N, S, E, W):
You're currently at (2, 1) = G
Enter a direction to travel (N, S, E, W):
You're currently at (2, 2) = K
Enter a direction to travel (N, S, E, W):
You're currently at (2, 1) = G
Enter a direction to travel (N, S, E, W):
You're currently at (2, 0) = C
Enter a direction to travel (N, S, E, W):
You're currently at (3, 0) = D
Enter a direction to travel (N, S, E, W):
You're currently at (0, 0) = A
Enter a direction to travel (N, S, E, W):
You're currently at (3, 0) = D
Enter a direction to travel (N, S, E, W):