Solve this Programming Task in language of preference

TASK 1: Programming Task in language of preference
Imagine a customized computer keyboard with following layout :
ERTYU1
DFGHJ2
CVBNM4
The keyboard only has above set of keys in the panel , For a given set on input word you need to output the path taken to press them , for example :
Consider the input word is : RFGM
the output will be :
PRESS R
GO DOWN
PRESS F
GO RIGHT
PRESS G
GO DOWN
GO RIGHT
GO RIGHT
PRESS M

Showing Answers 1 - 3 of 3 Answers

vinod378

  • May 31st, 2015
 

Code
  1. #include<stdio.h>

  2. "ERTYU1","DFGHJ2","CVBNM4""%s""PRESS %c

  3. "/*for (k=0;k<4;k++)

  4.                         printf("%d ",pos[k]);

  5.                         printf(" ");*/"GO UP

  6. ""GO DOWN

  7. ""GO LEFT

  8. ""GO RIGHT

  9. ""PRESS %c

  10. ",input[i+1]);

  11.                

  12.        

  13.         }

  14.        

  15. }

  16.  

  Was this answer useful?  Yes

S VISHNUVARDHAN

  • Aug 14th, 2015
 

Code
  1. #include<iostream>

  2. #include<cstring>

  3. #include<string.h>

  4. "ERTYU1","DFGHJ2","CVBNM4"//protected:

  5. //a[3][6] = {"ERTYU1","DFGHJ2","CVBNM4"};

  6. /* trace::trace()

  7. {

  8.         a[3][6] = {"ERTYU1","DFGHJ2","CVBNM4"};

  9. }*//* cout<<"enter strings:";

  10.     for(int i=0;i<3;i++)

  11.     cin>>a[i];*/"enter input string:";

  12.         //for(int i=0;i<n;i++)

  13. //cout<<"do you want to continue?

  14. ";

  15.       // cin>>answer;

  16. }

  17. inline void trace::putdata()

  18. {

  19.         cout<<""<<input<<"   is as follows:

  20. ";

  21. }

  22. void trace::traceit()

  23. {

  24.         int i,j,l,prevc=0,prevr=0,presntr=0,presntc=0,rmov=0,cmov=0;

  25. //      char mov[5];

  26.         for(i=0;i<3;i++)

  27.         for(j=0;j<6;j++)

  28.         if(input[0]==a[i][j])

  29.         {

  30.                 prevr=i;prevc=j;

  31.                 cout<<"press "<<input[0]<<"

  32. ";

  33.         }

  34.         int k=1;

  35.         for(int z=0;;z++)

  36.         for(i=0;i<=3;i++)

  37.         {

  38.  

  39.                 for(j=0;j<=6;j++)

  40.                 {

  41.                         if(input[k]==a[i][j])

  42.                         {

  43.                                 presntr=i;presntc=j;

  44.                                 //for row movment

  45.                                 //two cases if presntr > prevr and viceversa

  46.                                 //same thing in case of columns

  47.                                 if(presntr>prevr)

  48.                                 {

  49.                                         //clear(mov);

  50.                                         rmov= -prevr+presntr;

  51.                                         //mov={""};

  52.                                         for(int r=0;r<rmov;r++)

  53.                                         {

  54.                                                 cout<<"";//<<mov;

  55.                                         }

  56.  

  57.                                 }

  58.                if(presntr<prevr)

  59.                                 {

  60.                                         //clear(mov);

  61.                                         rmov=prevr-presntr;

  62.                                         //mov={"up"};

  63.                                         for(int r=0;r<rmov;r++)

  64.                                         {

  65.                                                 cout<<"move up

  66. ";//<<mov;

  67.                                         }

  68.                                 }

  69.                                 if(presntc>prevc)

  70.                                 {

  71.                                         //clear(mov);

  72.                                         cmov=presntc-prevc;

  73.                                         //mov={"Right"};

  74.                                         for(int c=0;c<cmov;c++)

  75.                                         {

  76.                                                 cout<<"move Right

  77. ";//<<mov;

  78.  

  79.                                         }

  80.  

  81.                                 }

  82.                                 if(presntc<prevc)

  83.                                 {

  84.                                         //clear(mov);

  85.                                         cmov= -presntc+prevc;

  86.                                         //mov={"Left"};

  87.                                         for(int c=0;c<cmov;c++)

  88.                                         {

  89.                                                 cout<<"move Left

  90. ";//<<mov;

  91.  

  92.                                         }

  93.                                 }

  94.                                 cout<<"press "<<input[k]<<"

  95. ";

  96.                                 i=0;j=0;k++;

  97.                                 prevr=presntr;

  98.                                 prevc=presntc;

  99.                                 //presntr=i;

  100.                                 //presntc=j;

  101.  

  102.  

  103.                         }

  104.                         if(k==strlen(input))

  105.                         {

  106.                             //cout<<"";

  107.  

  108.                return;

  109.                         }

  110.                 }

  111.         }

  112.  

  113. }

  114. main()

  115. {

  116.         trace d;

  117.         char ch;

  118.  

  119.  

  120.        d.getdata();

  121.        d.putdata();

  122.        d.traceit();

  123.  

  124.    cin>>ch;

  125.  

  126.          /*  while(answer=="yes")

  127.            {

  128.                d.getdata();

  129.        d.putdata();

  130.        d.traceit();

  131.            }*/

  132.  

  133. }

  Was this answer useful?  Yes

prasobh

  • Jan 20th, 2016
 

#Python solution
# E R T Y U 1
# D F G H J 2
# C V B N M 4
#NJUE2C1M
keys=[E,R,T,Y,U,1,D,F,G,H,J,2,C,V,B,N,M,4]
key_board_width = 6
string = input("Provide pattern")
for i in range(len(string)-1):
#print("i is"+str(i))
if (string[i] in keys):
print("Press"+ string[i])

current_alpha_index = keys.index(string[i])
next_alpha_index = keys.index(string[i+1])
#print(cuurent alpha index =+str(current_alpha_index)+next alpha index +str(next_alpha_index))
if (((current_alpha_index+1)%key_board_width) == 0):#Since intiger division can create a mess we have to do this
current_row = (current_alpha_index+1)/key_board_width
else:
current_row = int((current_alpha_index+1)/key_board_width)+1

if (((next_alpha_index+1)%key_board_width) == 0):
next_row = (next_alpha_index+1)/key_board_width
else:
next_row = int((next_alpha_index+1)/key_board_width)+1
vertical_step = next_row-current_row
#print("vertical step is "+str(int(vertical_step)))

if(vertical_step > 0):
for j in range(abs(int(vertical_step))) :
print("Down")

if(vertical_step < 0):
for j in range(abs(int(vertical_step))) :
print("Up")
current_alpha_index = current_alpha_index +(key_board_width* int(vertical_step))
#print(updated current alpha index +str(current_alpha_index))
horizontal_step = next_alpha_index -current_alpha_index
#print("horizontal step is "+str(int(horizontal_step)))
if(horizontal_step >0):
for j in range(abs(int(horizontal_step))) :
print("right")

if(horizontal_step <0):
for j in range(abs(int(horizontal_step))) :
print("left")
print("Press"+ string[len(string)-1])

  Was this answer useful?  Yes

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

 

Related Answered Questions

 

Related Open Questions