0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paiza.ioでruby その2

Last updated at Posted at 2025-05-06

概要

paiza.ioでrubyやってみた。
練習問題やってみた。

練習問題

forthインタープリタを書け。
数9を4個つかって1から15までの数を表す式を実行せよ。

サンプルコード



$stack = []
def add
	top1 = $stack.pop()
    top2 = $stack.pop()
	v = top2 + top1
	$stack.push(v)
end
def sub
	top1 = $stack.pop()
	top2 = $stack.pop()
	v = top2 - top1
	$stack.push(v)
end
def mul
	top1 = $stack.pop()
	top2 = $stack.pop()
	v = top2 * top1
	$stack.push(v)
end
def div
	top1 = $stack.pop()
	top2 = $stack.pop()
	v = top2 / top1
	$stack.push(v)
end
def dup
	top1 = $stack.pop()
	$stack.push(top1)
	$stack.push(top1)
end
def drop
	top1 = $stack.pop()
end
def get
	top1 = $stack.pop()
	puts top1
end
def push(v)
	$stack.push(Integer(v))
end
def run(str)
	s = str.split(' ')
	for i in s do
	    #puts i
		if i == "+"
			add()
		elsif i == "-"
			sub()
		elsif i == "*"
			mul()
		elsif i == "/"
			div()
		elsif i == "dup"
			dup()
		elsif i == "drop"
			drop()
		elsif i == "."
			get()
		else
			push(i)
		end
    end
end

		

run("9 9 - 9 9 / .")# 1
run("9 9 / 9 9 / + .")# 2
run("9 9 + 9 + 9 / .")# 3
run("9 9 9 + 9 / dup + .")# 4
run("9 9 9 + 9 / dup + - .")# 5
run("9 dup 9 + 9 + 9 / - .")# 6
run("9 9 9 + 9 / - .")# 7  
run("9 9 9 drop 9 / - .")# 8  
run("9 9 - 9 * 9 + .")# 9  
run("9 9 / 9 dup 9 / + .")# 10  
run("9 9 9 + 9 / + .")# 11  
run("9 dup 9 9 + + 9 / + .")# 12  
run("9 9 9 + 9 / dup + + .")# 13  
run("9 dup 9 9 + 9 / dup + - + .")# 14  
run("9 dup dup 9 + 9 + 9 / - + .")# 15  


実行結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

成果物

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?