右大括号是代码括号的一种样式,在这种风格中,大括号和分号都对齐到文件右侧的一个点。

通常,这被认为是不好的做法,有几个原因。
挑战
通过任何方法获取一个多行字符串,并将它的大括号风格转换为右支撑。
对于这一挑战,您只需要使用它来处理Java代码,但是,理论上,它应该适用于任何使用Braces和分号的代码。
您必须在一行中获取所有{};字符,在它们之间有任意数量的空格。例如。}},; } }\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 }因为我们不希望代码评审看到我们正在做的可怕的事情,所以您需要使代码尽可能小。
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() ;我重新定义了挑战的细节,希望我没有违反任何人对规则的看法,我向你保证这是无意的。这应该是一个更清晰和更少的自我冲突的规范。
发布于 2017-02-14 12:06:22
import re
g=re.search
def b(a):
s,l="",a.split('\n')
r=max([len(k)for k in l])
for k in l:
n,m=g('[;}{]',k),g('[\w]',k)
if n:n=n.start()
if m:m=m.start()
if n>m and m!=None:s+="\n"+k[:n]+" "*(r-n)
s+=k[n:]
print shttps://codegolf.stackexchange.com/questions/109995
复制相似问题