[ create a new paste ] login | about

Link: http://codepad.org/jLfKeP5q    [ raw code | fork ]

nvsofts - Ruby, pasted on Jun 24:
#!/usr/bin/env ruby

$KCODE = 'UTF-8'
require 'jcode'

input = STDIN.readlines.join.chomp.tr('^まりさ', '')

if input.length % 2 == 1 then
  puts "プログラムが不正です"
  exit(1)
end

buffer = Array.new(32768, 0)
ptr = 0
run_ptr = 0

while run_ptr != input.split(//u).length
  input =~ /.{#{run_ptr}}(.{2})/
  case $1
  when 'まさ' # >
    ptr += 1
  when 'さま' # <
    ptr -= 1
  when 'まま' # +
    buffer[ptr] += 1
  when 'りり' # -
    buffer[ptr] -= 1
  when 'まり' # ,
    buffer[ptr] = STDIN.getc
  when 'りま' # .
    print buffer[ptr].chr
  when 'りさ' # [
    if buffer[ptr] == 0 then
      nest = 1
      while nest != 0
        run_ptr += 2
        input =~ /.{#{run_ptr}}(.{2})/
        case $1
        when 'りさ'
          nest += 1
        when 'さり'
          nest -= 1
        end
      end
    end
  when 'さり' # ]
    if buffer[ptr] != 0 then
      nest = 1
      while nest != 0
        run_ptr -= 2
        input =~ /.{#{run_ptr}}(.{2})/
        case $1
        when 'りさ'
          nest -= 1
        when 'さり'
          nest += 1
        end
      end
      run_ptr -= 2
    end
  end
  run_ptr += 2
end


Create a new paste based on this one


Comments: