逆にインデントすると、コードがより速く実行できるため、コンパイラは「ブランチ」の最上部からツリー設計パターンのようにコードを処理できると聞きました。これは、重力によりコードのコンパイルにかかる時間が短縮され、データ構造の効率が向上するためです。Javaスクリプトの例を次に示します。
            function fib(n) {
        var a = 1, b = 1;
        while (--n > 0) {
    var tmp = a;
    a = b;
    b += tmp;
    if (a === Infinity) {
return "Error!";
    }
        }
        return a;
            }
しかし、何らかの理由で、メモ帳にはこれを自動的に行う設定がないため、それを行うプログラムが必要です。
説明
提出には、入力としてコードスニペットを使用し、インデントを反転し、結果のコードを出力する必要があります。
これは、次の手順で実行されます。
コードを行に分割します。各行はゼロ個以上のスペースで始まります(タブはありません)。
コード内のすべての一意のインデントレベルを見つけます。たとえば、上記の例では、これは
0 4 8 12このインデントレベルのリストの順序を逆にし、逆のリストを元のリストにマッピングします。これは言葉で説明するのは難しいですが、例では、次のようになります
0 — 12 4 — 8 8 — 4 12 — 0このマッピングを元のコードに適用します。この例では、0スペースのインデントがある行は12スペース分インデントされ、4スペースは8スペース分になります。
入出力
必要に応じて入力と出力を提供できます(STDIN / STDOUT、関数パラメーター/戻り値など)。ご使用の言語が複数行入力をサポートしていない(または単にしたくない)場合は、|代わりに文字を使用して行を区切ることができます。
入力は印刷可能なASCII +改行のみで構成され、空の行は含まれません。
テストケース
入力:
function fib(n) {
    var a = 1, b = 1;
        while (--n > 0) {
            var tmp = a;
            a = b;
            b += tmp;
            if (a === Infinity) {
                return "Error!";
            }
        }
    return a;
}
出力:上記のサンプルコード。
入力:
a
  b
  c
d
   e
        f
  g
   h
出力:
        a
   b
   c
        d
  e
f
   g
  h
入力:
1
 2
  3
 2
1
出力:
  1
 2
3
 2
  1
入力:
  foo
出力:
  foo