// ============================================================================ // 077 — Moving Average // ============================================================================ // Compute a simple moving average over a series of values. // // Run: soma run 077_moving_average.cell run // Expect: // Values: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] // 3-period moving averages: // Period 3: avg = 20 // Period 4: avg = 30 // Period 5: avg = 40 // Period 6: avg = 50 // Period 7: avg = 60 // Period 8: avg = 70 // Period 9: avg = 80 // Period 10: avg = 90 cell MovingAverage { on run() { let values = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) print("Values: {values}") let window = 3 print("{window}-period moving averages:") // Compute moving average using enumerate let indexed = enumerate(values) let count = values.length let i = window - 1 while i < count { // Sum the window let sum = 0 let j = i - window + 1 while j <= i { // Access element by iterating let idx = 0 for v in values { if idx == j { sum = sum + v } idx = idx + 1 } j = j + 1 } let avg = sum / window let period = i + 1 print("Period {period}: avg = {avg}") i = i + 1 } return "done" } }