203 lines
4.8 KiB
Plaintext
203 lines
4.8 KiB
Plaintext
// 🧮 シンプルNyash計算機 - Everything is Box実証
|
||
|
||
print("🧮 === Simple Nyash Calculator ===")
|
||
|
||
// デバッグ機能
|
||
DEBUG = new DebugBox()
|
||
DEBUG.startTracking()
|
||
|
||
// 🎯 式評価Box - シンプル版
|
||
box SimpleCalculator {
|
||
init { name, operations }
|
||
|
||
SimpleCalculator() {
|
||
me.name = "Nyash Simple Calculator"
|
||
me.operations = new ArrayBox()
|
||
}
|
||
|
||
// 加算
|
||
add(a, b) {
|
||
result = a + b
|
||
operation = "add(" + a + ", " + b + ") = " + result
|
||
me.operations.push(operation)
|
||
print("➕ " + operation)
|
||
return result
|
||
}
|
||
|
||
// 減算
|
||
subtract(a, b) {
|
||
result = a - b
|
||
operation = "subtract(" + a + ", " + b + ") = " + result
|
||
me.operations.push(operation)
|
||
print("➖ " + operation)
|
||
return result
|
||
}
|
||
|
||
// 乗算
|
||
multiply(a, b) {
|
||
result = a * b
|
||
operation = "multiply(" + a + ", " + b + ") = " + result
|
||
me.operations.push(operation)
|
||
print("✖️ " + operation)
|
||
return result
|
||
}
|
||
|
||
// 複合演算
|
||
complex(a, b, c) {
|
||
print("🔄 Complex operation: a + b * c where a=" + a + ", b=" + b + ", c=" + c)
|
||
|
||
// 演算子優先度を考慮: b * c を先に計算
|
||
step1 = me.multiply(b, c)
|
||
result = me.add(a, step1)
|
||
|
||
print("📊 Final result: " + result)
|
||
return result
|
||
}
|
||
|
||
// 履歴表示
|
||
showHistory() {
|
||
print("📚 Operation History:")
|
||
i = 0
|
||
loop(i < me.operations.length()) {
|
||
print(" " + (i + 1) + ": " + me.operations.get(i))
|
||
i = i + 1
|
||
}
|
||
}
|
||
}
|
||
|
||
// 🎯 数値ペアBox - ジェネリクス活用
|
||
box NumberPair<T> {
|
||
init { first, second }
|
||
|
||
NumberPair(a, b) {
|
||
me.first = a
|
||
me.second = b
|
||
}
|
||
|
||
sum() {
|
||
return me.first + me.second
|
||
}
|
||
|
||
product() {
|
||
return me.first * me.second
|
||
}
|
||
|
||
toString() {
|
||
return "Pair(" + me.first + ", " + me.second + ")"
|
||
}
|
||
}
|
||
|
||
// 📦 汎用コンテナBox - ジェネリクス実装
|
||
box Container<T> {
|
||
init { value }
|
||
|
||
Container(initialValue) {
|
||
me.value = initialValue
|
||
}
|
||
|
||
setValue(newValue) {
|
||
me.value = newValue
|
||
}
|
||
|
||
getValue() {
|
||
return me.value
|
||
}
|
||
}
|
||
|
||
// 🧮 高度計算Box
|
||
box AdvancedCalculator {
|
||
init { pairs, results }
|
||
|
||
AdvancedCalculator() {
|
||
me.pairs = new ArrayBox()
|
||
me.results = new Container<IntegerBox>(0)
|
||
}
|
||
|
||
// ペア追加
|
||
addPair(a, b) {
|
||
pair = new NumberPair<IntegerBox>(a, b)
|
||
me.pairs.push(pair)
|
||
DEBUG.trackBox(pair, "pair_" + me.pairs.length())
|
||
print("📦 Added pair: " + pair.toString())
|
||
return pair
|
||
}
|
||
|
||
// 全ペアの合計計算
|
||
calculateAllSums() {
|
||
print("🔢 Calculating sums for all pairs:")
|
||
totalSum = 0
|
||
|
||
i = 0
|
||
loop(i < me.pairs.length()) {
|
||
pair = me.pairs.get(i)
|
||
pairSum = pair.sum()
|
||
totalSum = totalSum + pairSum
|
||
print(" " + pair.toString() + " sum = " + pairSum)
|
||
i = i + 1
|
||
}
|
||
|
||
me.results.setValue(totalSum)
|
||
print("🎯 Total sum: " + totalSum)
|
||
return totalSum
|
||
}
|
||
|
||
// 全ペアの積計算
|
||
calculateAllProducts() {
|
||
print("✖️ Calculating products for all pairs:")
|
||
totalProduct = 1
|
||
|
||
i = 0
|
||
loop(i < me.pairs.length()) {
|
||
pair = me.pairs.get(i)
|
||
pairProduct = pair.product()
|
||
totalProduct = totalProduct * pairProduct
|
||
print(" " + pair.toString() + " product = " + pairProduct)
|
||
i = i + 1
|
||
}
|
||
|
||
print("🎯 Total product: " + totalProduct)
|
||
return totalProduct
|
||
}
|
||
}
|
||
|
||
// 🚀 メイン実行
|
||
print("🎯 Testing Simple Calculator...")
|
||
|
||
calc = new SimpleCalculator()
|
||
DEBUG.trackBox(calc, "main_calculator")
|
||
|
||
// 基本演算テスト
|
||
print("\n=== Basic Operations ===")
|
||
calc.add(5, 3)
|
||
calc.subtract(10, 4)
|
||
calc.multiply(6, 7)
|
||
|
||
// 複合演算テスト
|
||
print("\n=== Complex Operations ===")
|
||
calc.complex(2, 3, 4) // 2 + 3 * 4 = 14
|
||
calc.complex(1, 5, 2) // 1 + 5 * 2 = 11
|
||
|
||
// 履歴表示
|
||
print("\n=== History ===")
|
||
calc.showHistory()
|
||
|
||
// 高度計算器テスト
|
||
print("\n=== Advanced Calculator ===")
|
||
advCalc = new AdvancedCalculator()
|
||
DEBUG.trackBox(advCalc, "advanced_calculator")
|
||
|
||
// ペア追加
|
||
advCalc.addPair(3, 4)
|
||
advCalc.addPair(5, 6)
|
||
advCalc.addPair(2, 8)
|
||
|
||
// 計算実行
|
||
advCalc.calculateAllSums()
|
||
advCalc.calculateAllProducts()
|
||
|
||
// デバッグ情報
|
||
print("\n📊 === Debug Report ===")
|
||
print(DEBUG.memoryReport())
|
||
|
||
print("\n🎉 Simple Calculator completed!")
|
||
print("Nyashの Everything is Box 哲学による計算機が完成にゃ!") |