Праворучний брекет - це стиль дужки з кодом, у якому фігурні дужки та крапки з комою вирівнюються до однієї точки праворуч файлу aa.
Як правило, це вважається поганою практикою з кількох причин.
Змагання
Візьміть рядок багаторядкових будь-яким методом і перетворіть його стиль дужки в правильну руку.
Для цього завдання вам потрібно лише працювати над кодом Java, проте теоретично він повинен працювати над будь-яким кодом, який використовує дужки та крапки з комою.
Ви повинні захопити всіх {};
символів підряд, з будь-якою кількістю пробілів між ними. EG. }}
, ; }
}\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 }
Оскільки ми не хочемо, щоб у перегляді коду бачили жахливі речі, які ми робимо, вам потрібно зробити свій код якомога меншим.
Приклади / Тести
Загальна 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 ;}}
Не такий ідеально родовий пітон
Для контрасту
def Main():
print("Hello, World!");
Main();
стає ...
def Main():
print("Hello, World!") ;
Main() ;
Примітки
- Застосовуються стандартні лазівки
- Застосовується стандартний IO
- Це код-гольф , тому найкоротша програма в байтах виграє!
- Я не несу відповідальності за збитки, пов’язані з програмуванням у стилі Brace Right Hand
- Веселіться!
Редагувати нотатки
Я переформулював деталі виклику. Сподіваюся, я не порушив уявлення когось про правила, запевняю, це було ненавмисно. Це має бути набагато більш чіткою і менш конфліктною специфікацією.
;{}
символи збиралися, якщо вони знаходяться в окремих рядках (це зрозуміло лише з прикладу, а не правил. Насправді, якщо рядок складається з \t}
збереження відступу, це означає, що не рухається }
до кінця попереднього рядка)
int a=0;System.out.println(a);