9桁のそろばんを作成するコードは以下のようになります。
class Soroban:
def __init__(self, num_rods):
self.num_rods = num_rods
self.beads = [[0, 0] for _ in range(num_rods)]
def display(self):
print("+-" + "-+" * self.num_rods)
for bead_up, bead_down in self.beads:
row = "|"
for i in range(bead_up):
row += "O"
for i in range(bead_down):
row += "o"
row += "|"
print(row)
print("+-" + "-+" * self.num_rods)
def move_bead(self, rod_index, bead_type, direction):
if bead_type == "upper":
if direction == "up":
if self.beads[rod_index][0] < 1:
self.beads[rod_index][0] += 1
elif direction == "down":
if self.beads[rod_index][0] > 0:
self.beads[rod_index][0] -= 1
elif bead_type == "lower":
if direction == "up":
if self.beads[rod_index][1] < 4:
self.beads[rod_index][1] += 1
elif direction == "down":
if self.beads[rod_index][1] > 0:
self.beads[rod_index][1] -= 1
# 使用例
soroban = Soroban(9)
soroban.display()
soroban.move_bead(0, "upper", "up")
soroban.move_bead(0, "lower", "up")
soroban.move_bead(0, "lower", "up")
soroban.move_bead(0, "lower", "up")
soroban.move_bead(0, "lower", "up")
soroban.display()
このコードは前回の例と同じですが、そろばんの桁数を9桁に変更しています。
使用例では、9桁目のそろばんを操作しています。具体的には、以下の操作を行っています:
- 9桁目の上ビーズを1つ上げる
- 9桁目の下ビーズを4つ上げる
実行結果は以下のようになります:
+-+-+-+-+-+-+-+-+
|o|o|o|o|o|o|o|o|o|
+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+
|O|oooo|o|o|o|o|o|o|
+-+-+-+-+-+-+-+-+
このように、9桁のそろばんを表現することができます。ビーズの移動は前回と同様に数値を操作することで実現しており、必要に応じて機能を拡張することができます。