Files
hakorune/examples/app_statistics_simple.hako

130 lines
3.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 📊 統計計算アプリ(シンプル版) - MathBox新機能を活用
print("📊 === Statistics Calculator (Simple) ===")
print("MathBox拡張機能を活用した統計計算デモ\n")
// MathBoxインスタンス作成
math = new MathBox()
// 統計データ配列
data = new ArrayBox()
// テストデータ追加
print("📝 Adding test data...")
data.push(85)
data.push(92)
data.push(78)
data.push(95)
data.push(88)
data.push(73)
data.push(90)
data.push(82)
// データ表示
print("\n📈 Data points (" + data.length() + " items):")
i = 0
loop(i < data.length()) {
print(" [" + i + "] = " + data.get(i))
i = i + 1
}
// 平均値計算
print("\n🧮 Calculating statistics...")
sum = 0
i = 0
loop(i < data.length()) {
sum = sum + data.get(i)
i = i + 1
}
// 除算の代わりにpow(-1)を使用
count = data.length()
mean = sum * math.pow(count, -1)
print("Mean: " + mean)
// 最大値・最小値
maxVal = data.get(0)
minVal = data.get(0)
i = 1
loop(i < data.length()) {
maxVal = math.max(maxVal, data.get(i))
minVal = math.min(minVal, data.get(i))
i = i + 1
}
print("Max: " + maxVal)
print("Min: " + minVal)
print("Range: " + (maxVal - minVal))
// 分散計算
sumSquaredDiff = 0
i = 0
loop(i < data.length()) {
diff = data.get(i) - mean
sumSquaredDiff = sumSquaredDiff + (diff * diff)
i = i + 1
}
variance = sumSquaredDiff * math.pow(count, -1)
print("Variance: " + variance)
// 標準偏差
stdDev = math.sqrt(variance)
print("Standard Deviation: " + stdDev)
// 新機能:三角関数を使った周期データ
print("\n\n🌊 === Sine Wave Data ===")
waveData = new ArrayBox()
pi = math.getPi()
print("Generating sine wave data...")
i = 0
loop(i < 12) {
angle = i * pi * 0.1667 // π/6 ごと30度刻み
value = math.sin(angle) * 10 + 50
rounded = math.round(value)
waveData.push(rounded)
print(" angle=" + math.round(angle * 100) * 0.01 + " rad, sin=" + rounded)
i = i + 1
}
// 対数・指数関数のデモ
print("\n\n📈 === Exponential Growth ===")
growthData = new ArrayBox()
i = 0
loop(i < 8) {
value = math.exp(i * 0.3) * 10
rounded = math.round(value)
growthData.push(rounded)
print(" exp(" + (i * 0.3) + ") * 10 = " + rounded)
i = i + 1
}
// 切り捨て・切り上げのデモ
print("\n\n🔢 === Rounding Functions ===")
testVals = new ArrayBox()
testVals.push(3.14)
testVals.push(2.718)
testVals.push(-1.5)
testVals.push(9.99)
i = 0
loop(i < testVals.length()) {
val = testVals.get(i)
print("\nValue: " + val)
print(" floor: " + math.floor(val))
print(" ceil: " + math.ceil(val))
print(" round: " + math.round(val))
i = i + 1
}
// 数学定数の表示
print("\n\n🌟 === Mathematical Constants ===")
print("π (pi) = " + math.getPi())
print("e (euler) = " + math.getE())
// 累乗計算
print("\n\n⚡ === Power Calculations ===")
print("2^10 = " + math.pow(2, 10))
print("10^-1 = " + math.pow(10, -1) + " (1/10)")
print("√144 = " + math.sqrt(144))
print("\n✅ Statistics Calculator completed!")