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]
  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. if line.match(/^ENDIF/) || line.match(/^NEXT/)
  25. counter = counter - 1
  26. end
  27. l = counter > 0 ? 1.upto(counter).collect { |x| subst }.join + line : line
  28. res << l
  29. if line.match(/^IF/) || line.match(/^FOR/)
  30. counter = counter + 1
  31. end
  32. end
  33.  
  34. puts res.join("\n")
Success #stdin #stdout 0.02s 9776KB
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