Ich habe einen Java-Pseudocode, der Leerzeichen anstelle von geschweiften Klammern verwendet, und ich möchte, dass Sie ihn konvertieren.
I / O.
Ihr Programm sollte eine Eingabedatei zusammen mit einer Zahl verwenden, die angibt, wie viele Leerzeichen zum Einrücken eines Blocks verwendet werden. Hier ist ein Beispiel:
$ convert.lang input.p 4 // Konvertiere mit 4 Leerzeichen als Blocktrennzeichen $ convert.lang input.p 2 // Konvertiere mit 2 Leerzeichen als Blocktrennzeichen
Anschließend sollte das Ergebnis mit dem angegebenen Blocktrennzeichen konvertiert und das Ergebnis in stdout ausgegeben werden.
Das Fleisch des Programms
Blöcke, die mit :und jede Zeile innerhalb des Blocks geöffnet werden, werden mit dem Blocktrennzeichen wie Python-Code eingerückt.
während (wahr):
System.out.println ("Test");
Jedes :wird durch a ersetzt {und a }wird an das Ende des Blocks angehängt.
while (wahr) {
System.out.println ("Test");
}}
Beispiele
Eingang:
öffentlicher Klassentest:
public static void main (String [] args):
System.out.println ("Java ist ausführlich ...");
Ausgabe:
$ convert Test.pseudojava 4
öffentlicher Klassentest {
public static void main (String [] args) {
System.out.println ("Java ist ausführlich ...");
}}
}}
Eingang:
Main():
printf ("Hallo Welt");
Ausgabe:
$ convert test.file 2
main () {
printf ("Hallo Welt");
}}
Eingang:
def generic_op (the_stack, func):
# Generischer Op-Handling-Code
b = the_stack.pop ()
wenn isinstance (b, Liste):
wenn b:
Rückkehr
top = b.pop (0)
während b:
top = func (top, b.pop (0))
the_stack.push (oben)
sonst:
a = the_stack.pop ()
Rückgabefunktion (a, b)
Ausgabe:
$ convert code.py 4
def generic_op (the_stack, func) {
# Generischer Op-Handling-Code
b = the_stack.pop ()
if isinstance (b, Liste) {
wenn b {
Rückkehr
}}
top = b.pop (0)
während b {
top = func (top, b.pop (0))
}}
the_stack.push (oben)
}}
sonst {
a = the_stack.pop ()
Rückgabefunktion (a, b)
}}
}}
Wertung
Der Code mit der geringsten Anzahl von Bytes gewinnt!