Minecraft Pi EDで素数階段を上る(その3)

整数・自然数・素数
準備するもの
  • Raspberry Pi(確認環境はPi 2)
  • 端末ウィンドウ(ターミナルソフト)
  • Minecraft Pi ED

「Minecraft Pi EDで素数階段を上る」や「Minecraft Pi EDで素数階段を上る(その2)」で作ったまっすぐの階段だと、Mincraftのマップに収まらないので、たくさん上れません。
mcpi-primestairs3-001

このように四角い螺旋階段にして、たくさん上りたいと思います。
mcpi-primestairs3-002

from mcpi import minecraft

mc=minecraft.Minecraft.create()
mc.setBlocks(-60,-60,-60,60,60,60,0,0)
mc.player.setPos(50,-80,-50)

colors=[1,2,3,4,5,6,7]

direction=1
x=50
y=-60
z=-50
num=2
while num < 400:
	for i in range(num-1,0,-1):
		if i < 2:
			y = y + 1
			color=colors.pop(0)
			colors.append(color)	
			break

		if (num % i) == 0:
			color=0
			break
	if direction==1: # down to up
		mc.setBlocks(x,y,z, x+7,y,z,35,color) 
		if z < 50:
			z = z + 1
		else:
			mc.setBlocks(x,y,z, x+7,y,z+7,35,color) 
			x = x - 1
			direction=2
	elif direction==2: # left to right
		mc.setBlocks(x,y,z, x,y,z+7,35,color)
		if x > -50:
			x = x - 1
		else:
			mc.setBlocks(x,y,z, x-7,y,z+7,35,color) 
			z = z - 1
			direction=3
	elif direction==3: # right to left
		mc.setBlocks(x,y,z, x-7,y,z,35,color) 
		if z > -50:
			z = z - 1
		else:
			mc.setBlocks(x,y,z, x-7,y,z-7,35,color) 
			x = x + 1
			direction=4
	elif direction==4: # right to left
		mc.setBlocks(x,y,z, x,y,z-7,35,color)
		if x < 50:
			x = x + 1
		else:
			mc.setBlocks(x,y,z, x+7,y,z-7,35,color) 
			z = z + 1
			direction=1
	num = num + 1

見晴らしも良くて、上りがいがあります。
mcpi-primesstairs3

コメント

  1. […] 100までなのは、primesに定義している素数が100までの素数だからです。そういえば、素数に関しては、以前マインクラフトで素数階段を作りましたが(Minecraft Pi EDで素数階段を上る(その3)) 実際にゲーム空間で素数階段を上るととても感慨深い気持ちになります。素数を用いる素因数分解も計算しててとても面白いです。 […]

タイトルとURLをコピーしました