Uzay savaşına karşı sekmeleri sonlandır
Bu nedenle, girintiyi biçimlendirmek / biçimlendirmek için sekmeler veya boşluklar kullanıp kullanmama konusunda çok fazla tartışma yapıldı. İnanılmaz derecede çılgın, eşsiz bir biçimlendirme yöntemine giderek, üniversitenin tartışmayı çözmesine yardımcı olabilir misiniz ?
İşiniz, tüm sekmeleri dört alana genişleten tam bir program veya işlev yazmaktır. Ve sonra n / n 'deki boşlukların yerini "/ (n - iki yıldız burada) /" ile değiştirir. Herhangi bir makul formatta birden fazla satırdan girdi alacaksınız (her yeni satır için tek bir dizge dizisi dizisi. Sütun dizisi dizisi vb.)
Örnek girişi utanmadan çalındı . Sekmeler otomatik olarak SE'de dört alana genişletildiğinden beri, onu "^" karakteri olarak temsil ediyorum, ancak sekmeleri de kullanmalısınız (kod noktası 0x09). Tüm "^" karakterleri bir tabloyu temsil eder.
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
Not zero so multiply by 256 again to get 65536
[>++++<-]>[<++++++++>-]<[>++++++++<-]
+>[>
# Print "32"
++++++++++[>+++++<-]>+.-.[-]<
<[-]<->] <[>>
# Print "16"
+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
# Print "8"
++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera!
Örnek çıktı
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera!
Üniversitenin hem Vim hem de Emacs'ı indirmek için alana ihtiyacı olduğundan, kodunuz için çok az depolama alanına izin verilir. Bu nedenle bu kod golf ve en kısa kod kazanır. Girişin iyi oluşturulduğunu ve dört boşluktan (satırların değiştirilmesinden sonra) satırların tanımsız davranışa yol açabileceğini varsayabilirsiniz.
feragat
Bu "mükemmel" biçimlendirme stratejisi Geobits'in izniyle geldi ve izniyle çoğaltıldı. Bu zorluğun üretimi sırasında hiçbir programcı zarar görmedi.
/*
, yoksa "iyi biçimlendirilmiş bir girdi" olarak kabul edilebilir mi? Bir C ++ kaynak dosyası daha iyi bir test olacaktır, çünkü çok satırlı yorumu /* */
muhtemelen ilk ve son boşlukların yerine geçen bazı cevapları kıracak /
ve sonra boşlukları doldurmaya devam edecektir *
.
/* */
C ++ kodunu düşünün , ancak bu sefer satırın başında. Özelliğine göre olduğu gibi bırakılmalıdır. Burada tuzak, ve zaten yanlış cevaplar tespit edildiğinde, bu gibi /\** /
// boşluklarını yıldızlarla doldurmak için kullanılan bir regex çizgiyi içine çevirir /***/
. Bu dönüşümü de gördüm /*//*/
. Her ikisinin de yanlış olduğunu varsayıyorum.