Penjepit tangan kanan adalah gaya bracketing kode di mana kurung kurawal dan titik koma semuanya disejajarkan dengan satu titik di sisi kanan file.
Secara umum, ini dianggap praktik buruk, karena beberapa alasan.
Tantangan
Ambil string multiline melalui metode apa pun, dan ubah gaya brace-nya menjadi Right Hand Brace.
Untuk tantangan ini, Anda hanya perlu bekerja pada kode Java, namun, secara teoritis harus bekerja pada kode apa pun yang menggunakan Kawat Gigi dan Titik Koma.
Anda harus mengambil semua {};
karakter dalam satu baris, dengan jumlah spasi putih di antara mereka. MISALNYA. }}
,, ; }
}\n\t\t}
dan sejajarkan mereka di sisi kanan file melalui penggunaan spasi putih.
sebagai contoh:
a {
b;
{c
harus menjadi
a {
b ;{
c
Atau, secara lebih abstrak, dorong setiap dan semua spasi putih dari kiri semua {};
karakter, ke kanan.
Lekukan garis harus tetap dipertahankan. Baris hanya berisi spasi putih setelah perpindahan {};
karakter dapat secara opsional dihapus.
Sebagai contoh:
a{
b{
c;
}
}
d;
Mungkin menjadi salah satu
a {
b {
c;}}
d ;
atau
a {
b {
c;}}
d ;
Didorong ke kanan mengacu pada semua {};
karakter yang disejajarkan ke titik yang tidak lebih pendek dari garis terpanjang. Jumlah ruang setelah itu dapat diterima.
Jadi semua di bawah ini dapat diterima:
a {
bc;
a {
bc ;
a {
bc ;
dll ...
Baris dalam kode apa pun dapat berisi {};
karakter di antara karakter non-spasi lain, penanganan kasus ini tidak diperlukan, meskipun jika Anda cenderung, Anda harus membiarkannya di tempat. Garis juga mungkin tidak mengandung {};
karakter sama sekali, dan ini harus ditangani dengan benar. Seperti yang ditunjukkan di bawah ini.
a {
b ;
c
d }
Karena kami tidak ingin Peninjauan Kode melihat hal-hal mengerikan yang kami lakukan, Anda harus membuat kode Anda sekecil mungkin.
Contoh / Testcases
Java Generik
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, World!");
}
}
menjadi...
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!") ;}}
Gambar itu sendiri
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;
}
}
menjadi...
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 Generik Tidak Sempurna
Untuk kontras
def Main():
print("Hello, World!");
Main();
menjadi...
def Main():
print("Hello, World!") ;
Main() ;
Catatan
- Berlaku celah standar
- IO standar berlaku
- Ini adalah kode-golf , sehingga program terpendek dalam byte menang!
- Saya tidak bertanggung jawab atas kerusakan yang berkaitan dengan pemrograman dengan gaya Right Hand Brace
- Selamat bersenang-senang!
Edit Catatan
Saya menulis ulang rincian tantangan, Semoga saya tidak melanggar pandangan siapa pun tentang aturan, saya yakinkan Anda itu tidak disengaja. Ini harus menjadi spesifikasi yang jauh lebih jelas dan tidak saling bertentangan.
;{}
karakter dikumpulkan jika mereka berada di baris yang berbeda (itu hanya jelas dari contoh, bukan aturan, dan pada kenyataannya jika garis terdiri dari \t}
menjaga lekukan akan berarti tidak bergerak }
hingga akhir dari baris sebelumnya)
int a=0;System.out.println(a);