Правая скобка - это стиль брекетинга кода, при котором фигурные скобки и точки с запятой выровнены по одной точке на правой стороне файла.
Как правило, это считается плохой практикой по нескольким причинам.
Соревнование
Возьмите многострочную строку с помощью любого метода и преобразуйте ее стиль скобок в правую скобку.
Для этой задачи вам нужно, чтобы он работал только с кодом Java, однако теоретически он должен работать с любым кодом, который использует фигурные скобки и точки с запятой.
Вы должны захватить все {};
символы подряд с любым количеством пробелов между ними. НАПРИМЕР. }}
, ; }
}\n\t\t}
И выстроить их на правой стороне файла через использование пробелов.
например:
a {
b;
{c
должен стать
a {
b ;{
c
Или, если говорить более абстрактно, сдвиньте все пробелы слева от всех {};
символов вправо.
Отступы строк должны быть сохранены в противном случае. Строки, содержащие только пробелы после перемещения {};
символов, могут быть удалены.
Например:
a{
b{
c;
}
}
d;
Может стать либо
a {
b {
c;}}
d ;
или
a {
b {
c;}}
d ;
Выдвинутый вправо относится ко всем {};
символам, выравниваемым по точке, не короче самой длинной линии. Любое количество места после этого приемлемо.
Так что все нижеприведенное приемлемо:
a {
bc;
a {
bc ;
a {
bc ;
так далее...
Строки в любом коде могут содержать {};
символы между другими непробельными символами, обработка этого случая не требуется, хотя, если вы склонны, вы должны оставить их на месте. Строки могут также вообще не содержать {};
символов, и это должно быть обработано правильно. Как показано ниже.
a {
b ;
c
d }
Поскольку мы не хотим, чтобы Code Review видел ужасные вещи, которые мы делаем, вы должны сделать свой код как можно меньше.
Примеры / Тестовые случаи
Универсальная Java
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
становится ...
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!") ;}}
Само изображение
public class Permuter{
private static void permute(int n, char[] a){
if (n == 0){
System.out.println(String.valueOf(a));
}else{
for (int i=0; i<= n; i++){
permute(n-1, a);
swap(a, n % 2 == 0 ? i : 0, n);
}
}
}
private static void swap(char[] a, int i, int j){
char saved = a[i];
a[i] = a[j];
a[j] = saved;
}
}
становится ...
public class Permuter {
private static void permute(int n, char[] a) {
if (n == 0) {
System.out.println(String.valueOf(a)) ;}
else {
for (int i=0; i<= n; i++) {
permute(n-1, a) ;
swap(a, n % 2 == 0 ? i : 0, n) ;}}}
private static void swap(char[] a, int i, int j) {
char saved = a[i] ;
a[i] = a[j] ;
a[j] = saved ;}}
Не так идеально универсальный Python
Для контраста
def Main():
print("Hello, World!");
Main();
становится ...
def Main():
print("Hello, World!") ;
Main() ;
Заметки
- Стандартные лазейки применяются
- Стандартное IO применяется
- Это код-гольф , поэтому выигрывает самая короткая программа в байтах!
- Я не несу ответственности за ущерб, связанный с программированием в стиле Right Hand Brace
- Повеселись!
Редактировать заметки
Я перефразировал детали соревнования. Надеюсь, я не нарушил чью-то точку зрения на правила, уверяю вас, это было непреднамеренно. Это должно быть гораздо более ясным и менее противоречивым.
;{}
символы собирались, если они находятся на отдельных строках (это видно только из примера, а не из правил, и на самом деле, если строка состоит из \t}
сохранения отступа, это означало бы не двигаться }
до конца). предыдущей строки)
int a=0;System.out.println(a);