タブ対宇宙戦争を終わらせる
そのため、タブを使用するかスペースを使用してコードをインデント/フォーマットするかについて、多くの議論がありました。信じられないほどクレイジーな独自の書式設定方法に
進むことで、大学が紛争を解決するのを助けることができますか
あなたの仕事は、すべてのタブを4つのスペースに展開する完全なプログラムまたは機能を作成することです。そして、n個の先行スペースの連続を「/(n-ここに2つの星)/」で置き換えます。任意の妥当な形式で複数行の入力を受け取ります(新しい行ごとに文字列の単一文字列配列。列配列など)。
サンプル入力は恥ずかしく盗まれました。タブはSEでは自動的に4つのスペースに展開されるため、「^」文字として表しますが、タブ(コードポイント0x09)も処理する必要があります。すべての「^」文字は表を表します。
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!
サンプル出力
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!
大学にはVimとEmacsの両方をダウンロードするためのスペースが必要なので、コード用のストレージはほとんど許可されません。したがって、これはコードゴルフであり、最短のコードが優先されます。入力が整形式であり、スペースが4つ未満の行(タブの置換後)が未定義の動作を引き起こす可能性があると想定できます。
免責事項
この「優れた」フォーマット戦略はGeobitsの好意によるものであり、彼の許可を得て複製されています。この課題の作成中にプログラマーに害はありませんでした。
/*
必要がありますか、それとも「整形式の入力」ではないと想定できますか?C ++ソースファイルは、複数行コメント/* */
が先頭のスペースと最初のスペースの最後をで置き換えるいくつかの答えを破壊し、/
その後スペースで埋めることを進めるため、より良いテストでした*
。
/* */
C ++コードを想像してください。ただし、今回は行の先頭にあります。仕様によると、そのままにしておく必要があります。/\** /
//の間にあるスペースをアスタリスクで埋めるために使用されるsayのような正規表現は、行をに変えてしまうというトラップがあります/***/
。私もこの変換を見てきました/*//*/
。両方とも間違っていると思います。