POJ 2996 Help Me with the Game && POJ 2993 Emag eht htiw Em Pleh

来源:互联网 发布:js中换行符是哪个 编辑:程序博客网 时间:2024/05/01 09:33

题目1:http://acm.pku.edu.cn/JudgeOnline/problem?id=2996

题目2:http://acm.pku.edu.cn/JudgeOnline/problem?id=2993

画图题,好怀念。它和2993是一对反题,一个是读图一个是画图,很有意思啊。

读图:

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.Comparator;
  7. import java.util.List;
  8. public class Main {
  9.     class Compara implements Comparator<String[]> {
  10.         public int compare(String[] o1, String[] o2) {
  11.             if (o1[1].charAt(1) == o2[1].charAt(1)) {
  12.                 return o1[1].charAt(0) - o2[1].charAt(0);
  13.             } else if (Character.isUpperCase(o1[0].charAt(0))) {
  14.                 return o1[1].charAt(1) - o2[1].charAt(1);
  15.             } else {
  16.                 return o2[1].charAt(1) - o1[1].charAt(1);
  17.             }
  18.         }
  19.     }
  20.     static char[] a = new char[] { 'a''b''c''d''e''f''g''h' };
  21.     public static void main(String[] args) throws IOException {
  22.         BufferedReader read = new BufferedReader(new InputStreamReader(
  23.                 System.in));
  24.         String s;
  25.         char c;
  26.         String[] q;
  27.         List<String[]> list = new ArrayList<String[]>();
  28.         String[] t;
  29.         for (int i = 0; i < 17; i++) {
  30.             if (i % 2 == 0) {
  31.                 read.readLine();
  32.                 continue;
  33.             }
  34.             s = read.readLine();
  35.             q = s.split("//|");
  36.             for (int j = 1; j <= 8; j++) {
  37.                 c = q[j].charAt(1);
  38.                 if (c == '.' || c == ':') {
  39.                     continue;
  40.                 }
  41.                 t = new String[2];
  42.                 t[0] = "" + c;
  43.                 t[1] = "" + a[j - 1] + (8 - i / 2);
  44.                 list.add(t);
  45.             }
  46.         }
  47.         System.out.print("White: ");
  48.         print("K", list);
  49.         print("Q", list);
  50.         print("R", list);
  51.         print("B", list);
  52.         print("N", list);
  53.         print("P", list);
  54.         System.out.println();
  55.         System.out.print("Black: ");
  56.         print("k", list);
  57.         print("q", list);
  58.         print("r", list);
  59.         print("b", list);
  60.         print("n", list);
  61.         print("p", list);
  62.         System.out.println();
  63.     }
  64.     public static void print(String key, List<String[]> list) {
  65.         if (key.equals("k") || key.equals("K") || key.equals("q")
  66.                 || key.equals("Q")) {
  67.             String[] s = null;
  68.             for (int i = 0; i < list.size(); i++) {
  69.                 s = list.get(i);
  70.                 if (s[0].equals(key)) {
  71.                     break;
  72.                 }
  73.             }
  74.             if (s != null) {
  75.                 if (key.equals("k") || key.equals("K")) {
  76.                     System.out.print(Character.toUpperCase(key.charAt(0))
  77.                             + s[1]);
  78.                 } else {
  79.                     System.out.print("," + Character.toUpperCase(key.charAt(0))
  80.                             + s[1]);
  81.                 }
  82.             }
  83.         } else {
  84.             List<String[]> temp = new ArrayList<String[]>();
  85.             String[] s;
  86.             for (int i = 0; i < list.size(); i++) {
  87.                 s = list.get(i);
  88.                 if (s[0].equals(key)) {
  89.                     temp.add(s);
  90.                 }
  91.             }
  92.             if (temp.size() > 0) {
  93.                 Collections.sort(temp, new Main().new Compara());
  94.                 if (key.equals("p") || key.equals("P")) {
  95.                     for (int i = 0; i < temp.size(); i++) {
  96.                         System.out.print("," + temp.get(i)[1]);
  97.                     }
  98.                 } else {
  99.                     for (int i = 0; i < temp.size(); i++) {
  100.                         System.out.print(","
  101.                                 + Character.toUpperCase(key.charAt(0))
  102.                                 + temp.get(i)[1]);
  103.                     }
  104.                 }
  105.             }
  106.         }
  107.     }
  108. }

 

画图:

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Arrays;
  5. public class Main {
  6.     static char[] a = new char[] { 'a''b''c''d''e''f''g''h' };
  7.     public static void main(String[] args) throws IOException {
  8.         BufferedReader read = new BufferedReader(new InputStreamReader(
  9.                 System.in));
  10.         String white = read.readLine();
  11.         String black = read.readLine();
  12.         white = white.substring(7);
  13.         black = black.substring(7);
  14.         String[] w = white.split("//,");
  15.         String[] b = black.split("//,");
  16.         char[][] c = new char[17][33];
  17.         int flg = 1;
  18.         for (int i = 0; i < 17; i++) {
  19.             for (int j = 0; j < 33; j++) {
  20.                 if (i % 2 == 0) {
  21.                     if (j % 4 == 0) {
  22.                         c[i][j] = '+';
  23.                     } else {
  24.                         c[i][j] = '-';
  25.                     }
  26.                 } else {
  27.                     if (j % 4 == 0) {
  28.                         c[i][j] = '|';
  29.                     } else {
  30.                         if (flg == 1) {
  31.                             c[i][j] = '.';
  32.                             c[i][j + 1] = '.';
  33.                             c[i][j + 2] = '.';
  34.                         } else {
  35.                             c[i][j] = ':';
  36.                             c[i][j + 1] = ':';
  37.                             c[i][j + 2] = ':';
  38.                         }
  39.                         flg *= -1;
  40.                         j += 2;
  41.                     }
  42.                 }
  43.             }
  44.             if (i % 2 != 0) {
  45.                 flg *= -1;
  46.             }
  47.         }
  48.         for (int i = 0; i < w.length; i++) {
  49.             String s = w[i];
  50.             if (s.length() == 3) {
  51.                 char key = s.charAt(0);
  52.                 char col = s.charAt(1);
  53.                 char row = s.charAt(2);
  54.                 int ic = Arrays.binarySearch(a, col);
  55.                 ic = 2 + 4 * ic;
  56.                 int ir = 8 - (row - '0');
  57.                 ir = 1 + 2 * ir;
  58.                 c[ir][ic] = key;
  59.             } else {
  60.                 char col = s.charAt(0);
  61.                 char row = s.charAt(1);
  62.                 int ic = Arrays.binarySearch(a, col);
  63.                 ic = 2 + 4 * ic;
  64.                 int ir = 8 - (row - '0');
  65.                 ir = 1 + 2 * ir;
  66.                 c[ir][ic] = 'P';
  67.             }
  68.         }
  69.         for (int i = 0; i < b.length; i++) {
  70.             String s = b[i];
  71.             if (s.length() == 3) {
  72.                 char key = s.charAt(0);
  73.                 char col = s.charAt(1);
  74.                 char row = s.charAt(2);
  75.                 int ic = Arrays.binarySearch(a, col);
  76.                 ic = 2 + 4 * ic;
  77.                 int ir = 8 - (row - '0');
  78.                 ir = 1 + 2 * ir;
  79.                 c[ir][ic] = Character.toLowerCase(key);
  80.             } else {
  81.                 char col = s.charAt(0);
  82.                 char row = s.charAt(1);
  83.                 int ic = Arrays.binarySearch(a, col);
  84.                 ic = 2 + 4 * ic;
  85.                 int ir = 8 - (row - '0');
  86.                 ir = 1 + 2 * ir;
  87.                 c[ir][ic] = 'p';
  88.             }
  89.         }
  90.         for (int i = 0; i < 17; i++) {
  91.             for (int j = 0; j < 33; j++) {
  92.                 System.out.print(c[i][j]);
  93.             }
  94.             System.out.println();
  95.         }
  96.     }
  97. }