L'accolade à droite est un style de bracketing de code dans lequel les accolades et les points-virgules sont tous alignés sur un seul point sur le côté droit d'un fichier.
En règle générale, cela est considéré comme une mauvaise pratique, pour plusieurs raisons.
Le défi
Prenez une chaîne multiligne par n'importe quelle méthode et convertissez son style d'accolade en accolade à droite.
Pour ce défi, vous n'en avez besoin que pour travailler sur du code Java, cependant, il devrait théoriquement fonctionner sur n'importe quel code qui utilise des accolades et des points-virgules.
Vous devez saisir tous les {};
caractères dans une rangée, avec n'importe quelle quantité d'espace entre eux. PAR EXEMPLE. }}
,, ; }
}\n\t\t}
et alignez-les sur le côté droit du fichier en utilisant des espaces.
par exemple:
a {
b;
{c
devrait devenir
a {
b ;{
c
Ou, plus abstraitement, poussez tous les espaces blancs de la gauche de tous les {};
caractères vers la droite.
L'indentation des lignes doit être conservée autrement. Les lignes contenant uniquement des espaces après le mouvement des {};
personnages peuvent éventuellement être supprimées.
Par exemple:
a{
b{
c;
}
}
d;
Peut devenir soit
a {
b {
c;}}
d ;
ou
a {
b {
c;}}
d ;
Poussé vers la droite fait référence à tous les {};
caractères alignés sur un point pas plus court que la ligne la plus longue. Toute quantité d'espace après cela est acceptable.
Donc, tout ce qui suit est acceptable:
a {
bc;
a {
bc ;
a {
bc ;
etc...
Les lignes de n'importe quel code peuvent contenir des {};
caractères entre d'autres caractères non blancs, la gestion de ce cas n'est pas nécessaire, bien que si vous êtes incliné, vous devez les laisser en place. Les lignes peuvent également ne contenir aucun {};
caractère, et cela doit être géré correctement. Comme indiqué ci-dessous.
a {
b ;
c
d }
Parce que nous ne voulons pas que la révision de code voit les choses horribles que nous faisons, vous devez rendre votre code aussi petit que possible.
Exemples / cas de test
Java générique
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
devient...
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!") ;}}
L'image elle-même
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;
}
}
devient...
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 ;}}
Pas si parfaitement générique Python
Pour le contraste
def Main():
print("Hello, World!");
Main();
devient...
def Main():
print("Hello, World!") ;
Main() ;
Remarques
- Les échappatoires standard s'appliquent
- IO standard s'applique
- C'est le golf de code , donc le programme le plus court en octets gagne!
- Je ne suis pas responsable des dommages liés à la programmation dans le style de l'accolade à droite
- S'amuser!
Modifier les notes
J'ai reformulé les détails du défi, j'espère que je n'ai brisé la vision de personne sur les règles, je vous assure que ce n'était pas intentionnel. Cela devrait être une spécification beaucoup plus claire et moins conflictuelle.
;{}
caractères soient rassemblés s'ils sont sur des lignes distinctes (cela ne ressort que de l'exemple, pas des règles, et en fait, si une ligne consiste à \t}
conserver l'indentation, cela signifierait de ne pas remonter }
jusqu'à la fin de la ligne précédente)
int a=0;System.out.println(a);