右括号是一种代码括弧式,其中花括号和分号都对齐到文件右侧的单个点。
通常,出于多种原因,这被认为是不好的做法。
挑战
通过任何方法获取多行字符串,并将其花括号样式转换为Right Hand Brace。
对于这个挑战,您只需要它就可以在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() ;
笔记
编辑笔记
我改写了挑战细节,希望我不会破坏任何人对规则的看法,向您保证这不是故意的。这应该是一个更清晰,更少冲突的规范。
;{}
,如果字符位于单独的行中,则希望它们被收集起来(仅从示例中可以清楚地看到,而不是从规则中可以看出,实际上,如果一行包含\t}
保留缩进,则意味着不}
向上移动)上一行的内容)
int a=0;System.out.println(a);