public static String formatBrainFuck(String input) {
input = input.replaceAll("[\r\n\t ]+", "");
StringBuilder builder = new StringBuilder(input);
int layer = 0;
int[] layers = new int[input.length()];
for (int index = 0; index < builder.length(); index++) {
char c = builder.charAt(index);
if (c == '[')
layers[index] = ++layer;
else if (c == ']')
layers[index] = --layer;
else
layers[index] = layer;
}
for (layer = 0; layer < Arrays.stream(layers).max().orElse(0); layer++) {
builder.append('\n');
boolean open = false;
for (int index = 0; index < layers.length; index++) {
if (layer < layers[index])
if (!open) {
builder.append('[');
open = true;
} else
builder.append('_');
else {
if (open) {
builder.append(']');
open = false;
} else
builder.append(' ');
}
}
}
return builder.toString();
}
Comments
0 B
|👍
/👎