Beenden Sie die Tabs gegen Space War
Es gab also viele Diskussionen darüber, ob Tabulatoren oder Leerzeichen zum Einrücken / Formatieren von Code verwendet werden sollen. Können Sie der Universität helfen, den Streit beizulegen, indem Sie eine unglaublich verrückte und einzigartige Formatierungsmethode anwenden?
Ihre Aufgabe ist es, ein vollständiges Programm oder eine Funktion zu schreiben, die alle Tabulatoren in vier Leerzeichen erweitert. Und ersetzt dann eine Folge von n führenden Leerzeichen durch "/ (n - zwei Sterne hier) /". Sie erhalten Eingaben über mehrere Zeilen in jedem vernünftigen Format (einzelnes String-Array von Strings für jede neue Zeile. Spalten-Array usw.).
Probeneingabe schamlos gestohlen . Beachten Sie, dass, da Tabulatoren in SE automatisch auf vier Leerzeichen erweitert werden, ich sie als "^" -Zeichen repräsentiere, Sie jedoch auch Tabulatoren (Codepunkt 0x09) behandeln müssen. Alle "^" Zeichen stehen für eine Tabellierung.
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!
Beispielausgabe
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!
Da die Universität Speicherplatz zum Herunterladen von Vim und Emacs benötigt, dürfen Sie nur sehr wenig Speicherplatz für Ihren Code verwenden. Daher ist dies Codegolf und der kürzeste Code gewinnt. Sie können davon ausgehen, dass die Eingabe korrekt ist und Zeilen mit weniger als vier Leerzeichen (nach dem Ersetzen von Tabulatoren) zu undefiniertem Verhalten führen können.
Haftungsausschluss
Diese "ausgezeichnete" Formatierungsstrategie wurde mit freundlicher Genehmigung von Geobits erstellt und mit seiner Erlaubnis reproduziert. Bei der Erstellung dieser Herausforderung wurden keine Programmierer verletzt.
/*
, oder kann dies als nicht "wohlgeformter Eingang" angesehen werden? Eine C ++ - Quelldatei wäre ein besserer Test gewesen, da der mehrzeilige Kommentar /* */
möglicherweise einige Antworten unterbrechen würde, die das erste und das letzte der führenden Leerzeichen durch ein ersetzen /
und dann Leerzeichen füllen *
.
/* */
C ++ - Code vor, diesmal jedoch am Anfang der Zeile. Entsprechend Ihrer Spezifikation sollte es so belassen werden, wie es ist. Hier ist die Falle, und es wurden bereits falsche Antworten gefunden, dass ein regulärer Ausdruck, der /\** /
verwendet wird, um diese Leerzeichen zwischen // mit Sternchen zu füllen, die Zeile in umwandeln würde /***/
. Ich habe diese Konvertierung auch gesehen /*//*/
. Ich gehe davon aus, dass beide falsch sind.