Невозможно декодировать логику этого шаблона

Я хочу напечатать шаблон, когда пользователь вводит нет. "N" будет печатать шаблон, как показано ниже, со всеми внешними плечами шаблона будет содержать "N" - ".

    /\
   /  \
  / /\ \
 / /  \ \
   \ \  / /
    \ \/ /
     \  /
      \/

Я много пытался расшифровать, но я не могу расшифровать, я пробовал несколько вещей. Если кто-то поможет мне или направит меня с этой логикой, это будет отличная помощь.

int num=4;
int input = num*2;
String[][] arr = new String[input][input];

for (int i = 0; i < input; i++) {
    for (int j = 0; j < input; j++) {
        if (j+1== num - i) {
            arr[i][j] = "/";
            System.out.print(arr[i][j]);
        } else if (j + 1 == num + i + 1) {
            arr[i][j] = "\\";
            System.out.print(arr[i][j]);
        } else {
            arr[i][j] = "-";
            System.out.print(arr[i][j]);
        }
    }
    System.out.println();
}

1 ответ

Ну, может быть, не лучшее решение в мире, но..

public class PatternPrinter {

  public static void main(String[] args) {
    PatternPrinter pp = new PatternPrinter();
    for (String arg : args) {
      pp.printPattern(Integer.parseInt(arg));
    }
  }

  private void printPattern(int outerArms) {
    printUpperArms(outerArms, "/", "\\");
    printLowerArms(outerArms, "\\", "/", " ");
  }

  private void printUpperArms(int arms, String leftArm, String rightArm) {
    int leftspaces = 0;
    int rightspaces = 0;
    int leftArms = 1;
    int rightArms = 1;
    for (int i = 0; i < arms; i++) {
      for (leftspaces = 0; leftspaces < arms - leftArms; leftspaces++) {
      System.out.print(" ");
    }
    for (int j = 0; j < leftArms; j++) {
      System.out.print(leftArm);
    }
    for (int h = 0; h < rightArms; h++) {
      System.out.print(rightArm);
    }
    for (rightspaces = 0; rightspaces < arms - leftArms - rightArms - leftspaces; rightspaces++) {
      System.out.print(" ");
     }
      System.out.println("");
      leftArms++;
      rightArms++;
    }
  }

private void printLowerArms(int arms, String leftArm, String rightArm, String shift) {
  int leftspaces = 0;
  int rightspaces = 0;
  int rightArms = arms;
  int leftArms = arms;
  for (int i = 0; i < arms; i++) {
    System.out.print(" ");
    for (leftspaces = 0; leftspaces < arms - leftArms; leftspaces++) {
    System.out.print(shift);
    }
    for (int j = 0; j < leftArms; j++) {
    System.out.print(leftArm);
    }
    for (int h = 0; h < rightArms; h++) {
      System.out.print(rightArm);
    }
    for (rightspaces = 0; rightspaces < arms - leftArms - rightArms - leftspaces; rightspaces++) {
      System.out.print(" ");
    }
    System.out.println("");
    leftArms--;
    rightArms--;
  }
}
Другие вопросы по тегам