<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 61,  comments - 2033,  trackbacks - 0

    Problem Statement

         A simple line drawing program uses a blank 20 x 20 pixel canvas and a directional cursor that starts at the upper left corner pointing straight down. The upper left corner of the canvas is at (0, 0) and the lower right corner is at (19, 19). You are given a String[], commands, each element of which contains one of two possible commands. A command of the form "FORWARD x" means that the cursor should move forward by x pixels. Each pixel on its path, including the start and end points, is painted black. The only other command is "LEFT", which means that the cursor should change its direction by 90 degrees counterclockwise. So, if the cursor is initially pointing straight down and it receives a single "LEFT" command, it will end up pointing straight to the right. Execute all the commands in order and return the resulting 20 x 20 pixel canvas as a String[] where character j of element i represents the pixel at (i, j). Black pixels should be represented as uppercase 'X' characters and blank pixels should be represented as '.' characters.

    Definition

        
    Class: DrawLines
    Method: execute
    Parameters: String[]
    Returns: String[]
    Method signature: String[] execute(String[] commands)
    (be sure your method is public)

     

      1public class DrawLines
      2{
      3  class Pos
      4  {
      5    private int X;
      6    private int Y;
      7    private String status = ".";
      8
      9    public Pos(int x,int y)
     10    {
     11      this.X = x;
     12      this.Y = y;
     13      this.status = ".";
     14    }

     15
     16    public int getX()
     17    {
     18      return X;
     19    }

     20
     21    public int getY()
     22    {
     23      return Y;
     24    }

     25
     26    public void setX(int x)
     27    {
     28      this.X = x;
     29    }

     30
     31    public void setY(int y)
     32    {
     33      this.Y = y;
     34    }

     35
     36    public void setStatus(String s)
     37    {
     38      this.status = s;
     39    }

     40
     41    public String getSatus()
     42    {
     43      return status;
     44    }

     45
     46    public void showPos()
     47    {
     48      String xStr=X+"";
     49      String yStr=Y+"";
     50
     51      if(X<10)
     52      {
     53        xStr = "0"+xStr;
     54      }

     55
     56      if(Y<10)
     57      {
     58        yStr = "0"+yStr;
     59      }

     60    }

     61  }

     62
     63  public int min = 0, max = 19;
     64  public int North = 1, South = 3, West = 2, East = 0;
     65  public String LEFT = "LEFT", FORWARD = "FORWARD";
     66  public Pos[][] map = null;
     67
     68
     69
     70  public DrawLines()
     71 {
     72   this.direction = South;
     73   pos = new Pos(0,0);
     74
     75   //走之前初始化地圖.
     76   map = new Pos[max + 1][max + 1];
     77   for(int row = 0;row<=max;row++)
     78   {
     79     for(int col=0;col<=max;col++)
     80     {
     81       map[row][col] = new Pos(row,col);
     82     }

     83   }

     84 }

     85
     86  public void showMap()
     87  {for (int col = 0; col <= max; col++)
     88
     89    {
     90      for (int row = 0; row <= max; row++)
     91      {
     92        System.out.print(map[row][col].getSatus());
     93      }

     94      System.out.println(); 
     95    }

     96  }

     97
     98  private Pos pos = null;
     99  private int direction = South;
    100
    101  public Pos getPos()
    102  {
    103    return pos;
    104  }

    105  public void setPos(Pos pos)
    106  {
    107    this.pos = pos;
    108  }

    109  /**
    110   *
    111   * @param cmd
    112   */

    113  public void execute(String cmd)
    114  {
    115    if (cmd.equals("LEFT"))
    116    {
    117      Left();
    118    }

    119    else if (cmd.indexOf(FORWARD) >= 0)
    120    {
    121      int from = cmd.indexOf(FORWARD);
    122      String stepStr = cmd.substring(from + FORWARD.length());
    123      stepStr = stepStr.trim();
    124      int step = Integer.parseInt(stepStr);
    125      forward(step);
    126    }

    127    else
    128    {
    129      System.out.println("未知的命令,無法執(zhí)行.");
    130    }

    131  }

    132
    133  public String[] execute(String[] cmds)
    134  {
    135    if (cmds != null)
    136    {
    137      for (int i = 0; i < cmds.length; i++)
    138      {
    139        execute(cmds[i]);
    140      }

    141    }

    142
    143    String[] rval = new String[20];
    144    String tempStr = "";
    145    for (int col = 0; col <= max; col++)
    146     {
    147       tempStr = "";
    148       for (int row = 0; row <= max; row++)
    149       {
    150          tempStr = tempStr + map[row][col].getSatus();
    151       }

    152        rval[col]=tempStr;
    153     }

    154     return rval;
    155
    156  }

    157
    158  public void Left()
    159  {
    160    direction = (direction + 1% 4;
    161  }

    162
    163  public void forward(int step)
    164  {
    165    if (direction == South) //Y++
    166    {
    167      while (pos.getY() < max && step>0)
    168      {
    169        if (map[pos.getX()][pos.getY()].getSatus().equals(".")) //第一步也要畫
    170        {
    171          map[pos.getX()][pos.getY()].setStatus("*");
    172        }

    173        pos.setY(pos.getY() + 1);
    174        map[pos.getX()][pos.getY()].setStatus("*");
    175        map[pos.getX()][pos.getY()].showPos();
    176        step--;
    177      }

    178    }

    179    else if (direction == East) //X++
    180    {
    181      while (pos.getX() < max && step>0)
    182      {
    183        if (map[pos.getX()][pos.getY()].getSatus().equals(".")) //第一步也要畫
    184        {
    185          map[pos.getX()][pos.getY()].setStatus("*");
    186        }

    187        pos.setX(pos.getX() + 1);
    188        map[pos.getX()][pos.getY()].setStatus("*");
    189        map[pos.getX()][pos.getY()].showPos();
    190        step--;
    191      }

    192
    193    }

    194    else if (direction == North) //Y--
    195    {
    196      while (pos.getY() > min && step>0)
    197      {
    198        if (map[pos.getX()][pos.getY()].getSatus().equals(".")) //第一步也要畫
    199        {
    200          map[pos.getX()][pos.getY()].setStatus("*");
    201        }

    202        pos.setY(pos.getY() - 1);
    203        map[pos.getX()][pos.getY()].setStatus("*");
    204        map[pos.getX()][pos.getY()].showPos();
    205        step--;
    206      }

    207    }

    208    else if (direction == West ) //X--
    209    {
    210      while (pos.getX() > min && step>0)
    211      {
    212        if (map[pos.getX()][pos.getY()].getSatus().equals(".")) //draw the first step
    213        {
    214          map[pos.getX()][pos.getY()].setStatus("*");
    215        }

    216        pos.setX(pos.getX() - 1);
    217        map[pos.getX()][pos.getY()].setStatus("*");
    218        map[pos.getX()][pos.getY()].showPos();
    219        step--;
    220      }

    221    }

    222  }

    223
    224  public static void main(String[] args)
    225  {
    226    String[] cmds = "FORWARD 19","LEFT","FORWARD 19""LEFT","FORWARD 19","LEFT","FORWARD 17","LEFT","FORWARD 17","LEFT","FORWARD 17","LEFT","FORWARD 13","LEFT","FORWARD 13","LEFT","FORWARD 13","LEFT","FORWARD 13","LEFT","FORWARD 13","LEFT",};
    227
    228    DrawLines dl = new DrawLines();
    229
    230    dl.execute(cmds);
    231
    232    dl.showMap();
    233
    234  }

    235
    236}
    posted on 2005-11-28 10:32 魚上游 閱讀(1073) 評論(2)  編輯  收藏 所屬分類: 爪哇風(fēng)景欣賞爪哇世界探險


    FeedBack:
    # re: GOOGLE挑戰(zhàn)賽練習(xí)題1及答案(200分)
    2005-11-28 14:06 | Flair@ZJU
    哪里來的題目?  回復(fù)  更多評論
      
    # re: GOOGLE挑戰(zhàn)賽練習(xí)題1及答案(200分)
    <2005年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿(82)

    隨筆分類(59)

    文章分類(21)

    相冊

    收藏夾(40)

    GoodSites

    搜索

    •  

    積分與排名

    • 積分 - 1267255
    • 排名 - 22

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 97免费人妻无码视频| 人成电影网在线观看免费| 亚洲福利一区二区| 亚洲av永久无码精品网站| 亚洲成色www久久网站夜月| 亚洲精品无码成人片久久| 亚洲色婷婷一区二区三区| 亚洲午夜久久久久久久久久| 亚洲线精品一区二区三区影音先锋| 国产亚洲午夜高清国产拍精品| 国产亚洲精aa成人网站| 亚洲精品一品区二品区三品区| 亚洲精品乱码久久久久久按摩| 情人伊人久久综合亚洲| 亚洲av日韩av无码| 老司机亚洲精品影院无码| 亚洲成a人片77777群色| 亚洲国产午夜精品理论片| 亚洲国产精品无码第一区二区三区 | 国产亚洲精品美女久久久久| 亚洲a∨无码精品色午夜| 免费一区二区无码视频在线播放| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 国产精品亚洲二区在线观看| 亚洲精品国产品国语在线 | 日韩精品免费一区二区三区| 四虎影视精品永久免费网站| 国产成人精品久久亚洲高清不卡 | 国产亚洲日韩在线三区| 日韩亚洲Av人人夜夜澡人人爽| 亚洲午夜一区二区三区| 久久精品国产亚洲AV| 三级黄色片免费看| 在线观看永久免费| 暖暖免费高清日本一区二区三区| 亚洲人成网站18禁止一区| 久久精品国产亚洲AV高清热| 亚洲综合久久精品无码色欲| 一级做α爱过程免费视频| 精品熟女少妇a∨免费久久| 最近中文字幕mv免费高清视频7|