fork download
  1. input = '12
  2. ····
  3. VAR I
  4. ·FOR I=1 TO 31
  5. »»»»IF !(I MOD 3) THEN
  6. ··PRINT "FIZZ"
  7. ··»»ENDIF
  8. »»»»····IF !(I MOD 5) THEN
  9. »»»»··PRINT "BUZZ"
  10. ··»»»»»»ENDIF
  11. »»»»IF (I MOD 3) && (I MOD 5) THEN
  12. ······PRINT "FIZZBUZZ"
  13. ··»»ENDIF
  14. »»»»·NEXT'
  15.  
  16. prog = input.split("\n")
  17. line_count = prog[0].to_i
  18. subst = prog[1].length
  19. clean_lines = prog[2, prog.length - 2].collect { |line| line.gsub(/»|·/, '') }
  20.  
  21. res = []
  22. counter = 0
  23. clean_lines.each do |line|
  24. case
  25. when line.match(/^IF/) || line.match(/^FOR/)
  26. counter = counter + subst
  27. when line.match(/^ENDIF/) || line.match(/^NEXT/)
  28. counter = counter - subst
  29. end
  30. l = counter > 0 ? 1.upto(counter).collect { |x| ' ' }.join + line : line
  31. res << l
  32. end
  33.  
  34. puts res.join("\n")
Success #stdin #stdout 0.02s 9720KB
stdin
Standard input is empty
stdout
VAR I
    FOR I=1 TO 31
        IF !(I MOD 3) THEN
        PRINT "FIZZ"
    ENDIF
        IF !(I MOD 5) THEN
        PRINT "BUZZ"
    ENDIF
        IF (I MOD 3) && (I MOD 5) THEN
        PRINT "FIZZBUZZ"
    ENDIF
NEXT