Mathematical Expressions:

  • Algorithm: A well-defined set of finite instructions designed to accomplish a specific task.
    • Example: Baking cookies involves following a structured series of steps in a precise order.
    • Another example: In the morning, tasks such as putting on clothes and eating breakfast are executed in a particular sequence.
    • In essence, an algorithm represents an ordered process that systematically leads to a desired outcome.
  • Sequencing: Ensuring tasks are executed in a strict, predefined order.

  • Selection: After completing an initial step, a decision is made (yes/no or true/false), which dictates the next action—if a condition holds true, one path is followed, otherwise, an alternative action is taken.

  • Iteration: Repeatedly performing a sequence of steps based on a condition.
    • Example: Complete the first step, proceed to the next, evaluate a condition, and if necessary, continue repeating the steps.
  • Methods for representing algorithms:
    • Flowchart: Uses arrows and shapes to visually represent decisions and the flow of steps.
    • Pseudocode: A simplified, high-level representation of an algorithm, often written in plain language or comments to describe each section’s functionality without using formal code syntax. </span>

"Algorithm"

import functools
import logging

# Setting up the logging configuration
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

def memoize_factorial(func):
    """Decorator to cache results of factorial computations."""
    cache = {}
    
    @functools.wraps(func)
    def wrapper(n):
        if n not in cache:
            logging.info(f"Calculating factorial for {n}")
            cache[n] = func(n)
        else:
            logging.info(f"Using cached result for {n}")
        return cache[n]
    
    return wrapper

@memoize_factorial
def factorial(n):
    """Recursive factorial with memoization."""
    # Selection: Handle edge cases first
    if n < 0:
        logging.error(f"Factorial is not defined for negative numbers: {n}")
        return "Factorial is not defined for negative numbers"
    elif n == 0 or n == 1:
        # Base case
        return 1
    else:
        # Recursion with memoization
        return n * factorial(n - 1)

def parse_input(user_input):
    """Parses a comma-separated string of numbers, raises ValueError if input is invalid."""
    try:
        return [int(num.strip()) for num in user_input.split(',')]
    except ValueError:
        logging.error("Input contains invalid values. Please enter a valid list of non-negative integers.")
        raise

def main():
    try:
        # Get user input and parse it
        user_input = input("Enter a list of non-negative integers (comma-separated): ")
        numbers = parse_input(user_input)

        # Calculate and print the factorial for each valid number
        for number in numbers:
            result = factorial(number)

            if isinstance(result, int):
                logging.info(f"The factorial of {number} is: {result}")
            else:
                logging.error(f"Factorial for {number} is undefined due to invalid input.")
    
    except ValueError:
        logging.error("Invalid input. Program terminating.")

if __name__ == "__main__":
    main()

INFO: Calculating factorial for 4
INFO: Calculating factorial for 3
INFO: Calculating factorial for 2
INFO: Calculating factorial for 1
INFO: The factorial of 4 is: 24
INFO: Calculating factorial for 353
INFO: Calculating factorial for 352
INFO: Calculating factorial for 351
INFO: Calculating factorial for 350
INFO: Calculating factorial for 349
INFO: Calculating factorial for 348
INFO: Calculating factorial for 347
INFO: Calculating factorial for 346
INFO: Calculating factorial for 345
INFO: Calculating factorial for 344
INFO: Calculating factorial for 343
INFO: Calculating factorial for 342
INFO: Calculating factorial for 341
INFO: Calculating factorial for 340
INFO: Calculating factorial for 339
INFO: Calculating factorial for 338
INFO: Calculating factorial for 337
INFO: Calculating factorial for 336
INFO: Calculating factorial for 335
INFO: Calculating factorial for 334
INFO: Calculating factorial for 333
INFO: Calculating factorial for 332
INFO: Calculating factorial for 331
INFO: Calculating factorial for 330
INFO: Calculating factorial for 329
INFO: Calculating factorial for 328
INFO: Calculating factorial for 327
INFO: Calculating factorial for 326
INFO: Calculating factorial for 325
INFO: Calculating factorial for 324
INFO: Calculating factorial for 323
INFO: Calculating factorial for 322
INFO: Calculating factorial for 321
INFO: Calculating factorial for 320
INFO: Calculating factorial for 319
INFO: Calculating factorial for 318
INFO: Calculating factorial for 317
INFO: Calculating factorial for 316
INFO: Calculating factorial for 315
INFO: Calculating factorial for 314
INFO: Calculating factorial for 313
INFO: Calculating factorial for 312
INFO: Calculating factorial for 311
INFO: Calculating factorial for 310
INFO: Calculating factorial for 309
INFO: Calculating factorial for 308
INFO: Calculating factorial for 307
INFO: Calculating factorial for 306
INFO: Calculating factorial for 305
INFO: Calculating factorial for 304
INFO: Calculating factorial for 303
INFO: Calculating factorial for 302
INFO: Calculating factorial for 301
INFO: Calculating factorial for 300
INFO: Calculating factorial for 299
INFO: Calculating factorial for 298
INFO: Calculating factorial for 297
INFO: Calculating factorial for 296
INFO: Calculating factorial for 295
INFO: Calculating factorial for 294
INFO: Calculating factorial for 293
INFO: Calculating factorial for 292
INFO: Calculating factorial for 291
INFO: Calculating factorial for 290
INFO: Calculating factorial for 289
INFO: Calculating factorial for 288
INFO: Calculating factorial for 287
INFO: Calculating factorial for 286
INFO: Calculating factorial for 285
INFO: Calculating factorial for 284
INFO: Calculating factorial for 283
INFO: Calculating factorial for 282
INFO: Calculating factorial for 281
INFO: Calculating factorial for 280
INFO: Calculating factorial for 279
INFO: Calculating factorial for 278
INFO: Calculating factorial for 277
INFO: Calculating factorial for 276
INFO: Calculating factorial for 275
INFO: Calculating factorial for 274
INFO: Calculating factorial for 273
INFO: Calculating factorial for 272
INFO: Calculating factorial for 271
INFO: Calculating factorial for 270
INFO: Calculating factorial for 269
INFO: Calculating factorial for 268
INFO: Calculating factorial for 267
INFO: Calculating factorial for 266
INFO: Calculating factorial for 265
INFO: Calculating factorial for 264
INFO: Calculating factorial for 263
INFO: Calculating factorial for 262
INFO: Calculating factorial for 261
INFO: Calculating factorial for 260
INFO: Calculating factorial for 259
INFO: Calculating factorial for 258
INFO: Calculating factorial for 257
INFO: Calculating factorial for 256
INFO: Calculating factorial for 255
INFO: Calculating factorial for 254
INFO: Calculating factorial for 253
INFO: Calculating factorial for 252
INFO: Calculating factorial for 251
INFO: Calculating factorial for 250
INFO: Calculating factorial for 249
INFO: Calculating factorial for 248
INFO: Calculating factorial for 247
INFO: Calculating factorial for 246
INFO: Calculating factorial for 245
INFO: Calculating factorial for 244
INFO: Calculating factorial for 243
INFO: Calculating factorial for 242
INFO: Calculating factorial for 241
INFO: Calculating factorial for 240
INFO: Calculating factorial for 239
INFO: Calculating factorial for 238
INFO: Calculating factorial for 237
INFO: Calculating factorial for 236
INFO: Calculating factorial for 235
INFO: Calculating factorial for 234
INFO: Calculating factorial for 233
INFO: Calculating factorial for 232
INFO: Calculating factorial for 231
INFO: Calculating factorial for 230
INFO: Calculating factorial for 229
INFO: Calculating factorial for 228
INFO: Calculating factorial for 227
INFO: Calculating factorial for 226
INFO: Calculating factorial for 225
INFO: Calculating factorial for 224
INFO: Calculating factorial for 223
INFO: Calculating factorial for 222
INFO: Calculating factorial for 221
INFO: Calculating factorial for 220
INFO: Calculating factorial for 219
INFO: Calculating factorial for 218
INFO: Calculating factorial for 217
INFO: Calculating factorial for 216
INFO: Calculating factorial for 215
INFO: Calculating factorial for 214
INFO: Calculating factorial for 213
INFO: Calculating factorial for 212
INFO: Calculating factorial for 211
INFO: Calculating factorial for 210
INFO: Calculating factorial for 209
INFO: Calculating factorial for 208
INFO: Calculating factorial for 207
INFO: Calculating factorial for 206
INFO: Calculating factorial for 205
INFO: Calculating factorial for 204
INFO: Calculating factorial for 203
INFO: Calculating factorial for 202
INFO: Calculating factorial for 201
INFO: Calculating factorial for 200
INFO: Calculating factorial for 199
INFO: Calculating factorial for 198
INFO: Calculating factorial for 197
INFO: Calculating factorial for 196
INFO: Calculating factorial for 195
INFO: Calculating factorial for 194
INFO: Calculating factorial for 193
INFO: Calculating factorial for 192
INFO: Calculating factorial for 191
INFO: Calculating factorial for 190
INFO: Calculating factorial for 189
INFO: Calculating factorial for 188
INFO: Calculating factorial for 187
INFO: Calculating factorial for 186
INFO: Calculating factorial for 185
INFO: Calculating factorial for 184
INFO: Calculating factorial for 183
INFO: Calculating factorial for 182
INFO: Calculating factorial for 181
INFO: Calculating factorial for 180
INFO: Calculating factorial for 179
INFO: Calculating factorial for 178
INFO: Calculating factorial for 177
INFO: Calculating factorial for 176
INFO: Calculating factorial for 175
INFO: Calculating factorial for 174
INFO: Calculating factorial for 173
INFO: Calculating factorial for 172
INFO: Calculating factorial for 171
INFO: Calculating factorial for 170
INFO: Calculating factorial for 169
INFO: Calculating factorial for 168
INFO: Calculating factorial for 167
INFO: Calculating factorial for 166
INFO: Calculating factorial for 165
INFO: Calculating factorial for 164
INFO: Calculating factorial for 163
INFO: Calculating factorial for 162
INFO: Calculating factorial for 161
INFO: Calculating factorial for 160
INFO: Calculating factorial for 159
INFO: Calculating factorial for 158
INFO: Calculating factorial for 157
INFO: Calculating factorial for 156
INFO: Calculating factorial for 155
INFO: Calculating factorial for 154
INFO: Calculating factorial for 153
INFO: Calculating factorial for 152
INFO: Calculating factorial for 151
INFO: Calculating factorial for 150
INFO: Calculating factorial for 149
INFO: Calculating factorial for 148
INFO: Calculating factorial for 147
INFO: Calculating factorial for 146
INFO: Calculating factorial for 145
INFO: Calculating factorial for 144
INFO: Calculating factorial for 143
INFO: Calculating factorial for 142
INFO: Calculating factorial for 141
INFO: Calculating factorial for 140
INFO: Calculating factorial for 139
INFO: Calculating factorial for 138
INFO: Calculating factorial for 137
INFO: Calculating factorial for 136
INFO: Calculating factorial for 135
INFO: Calculating factorial for 134
INFO: Calculating factorial for 133
INFO: Calculating factorial for 132
INFO: Calculating factorial for 131
INFO: Calculating factorial for 130
INFO: Calculating factorial for 129
INFO: Calculating factorial for 128
INFO: Calculating factorial for 127
INFO: Calculating factorial for 126
INFO: Calculating factorial for 125
INFO: Calculating factorial for 124
INFO: Calculating factorial for 123
INFO: Calculating factorial for 122
INFO: Calculating factorial for 121
INFO: Calculating factorial for 120
INFO: Calculating factorial for 119
INFO: Calculating factorial for 118
INFO: Calculating factorial for 117
INFO: Calculating factorial for 116
INFO: Calculating factorial for 115
INFO: Calculating factorial for 114
INFO: Calculating factorial for 113
INFO: Calculating factorial for 112
INFO: Calculating factorial for 111
INFO: Calculating factorial for 110
INFO: Calculating factorial for 109
INFO: Calculating factorial for 108
INFO: Calculating factorial for 107
INFO: Calculating factorial for 106
INFO: Calculating factorial for 105
INFO: Calculating factorial for 104
INFO: Calculating factorial for 103
INFO: Calculating factorial for 102
INFO: Calculating factorial for 101
INFO: Calculating factorial for 100
INFO: Calculating factorial for 99
INFO: Calculating factorial for 98
INFO: Calculating factorial for 97
INFO: Calculating factorial for 96
INFO: Calculating factorial for 95
INFO: Calculating factorial for 94
INFO: Calculating factorial for 93
INFO: Calculating factorial for 92
INFO: Calculating factorial for 91
INFO: Calculating factorial for 90
INFO: Calculating factorial for 89
INFO: Calculating factorial for 88
INFO: Calculating factorial for 87
INFO: Calculating factorial for 86
INFO: Calculating factorial for 85
INFO: Calculating factorial for 84
INFO: Calculating factorial for 83
INFO: Calculating factorial for 82
INFO: Calculating factorial for 81
INFO: Calculating factorial for 80
INFO: Calculating factorial for 79
INFO: Calculating factorial for 78
INFO: Calculating factorial for 77
INFO: Calculating factorial for 76
INFO: Calculating factorial for 75
INFO: Calculating factorial for 74
INFO: Calculating factorial for 73
INFO: Calculating factorial for 72
INFO: Calculating factorial for 71
INFO: Calculating factorial for 70
INFO: Calculating factorial for 69
INFO: Calculating factorial for 68
INFO: Calculating factorial for 67
INFO: Calculating factorial for 66
INFO: Calculating factorial for 65
INFO: Calculating factorial for 64
INFO: Calculating factorial for 63
INFO: Calculating factorial for 62
INFO: Calculating factorial for 61
INFO: Calculating factorial for 60
INFO: Calculating factorial for 59
INFO: Calculating factorial for 58
INFO: Calculating factorial for 57
INFO: Calculating factorial for 56
INFO: Calculating factorial for 55
INFO: Calculating factorial for 54
INFO: Calculating factorial for 53
INFO: Calculating factorial for 52
INFO: Calculating factorial for 51
INFO: Calculating factorial for 50
INFO: Calculating factorial for 49
INFO: Calculating factorial for 48
INFO: Calculating factorial for 47
INFO: Calculating factorial for 46
INFO: Calculating factorial for 45
INFO: Calculating factorial for 44
INFO: Calculating factorial for 43
INFO: Calculating factorial for 42
INFO: Calculating factorial for 41
INFO: Calculating factorial for 40
INFO: Calculating factorial for 39
INFO: Calculating factorial for 38
INFO: Calculating factorial for 37
INFO: Calculating factorial for 36
INFO: Calculating factorial for 35
INFO: Calculating factorial for 34
INFO: Calculating factorial for 33
INFO: Calculating factorial for 32
INFO: Calculating factorial for 31
INFO: Calculating factorial for 30
INFO: Calculating factorial for 29
INFO: Calculating factorial for 28
INFO: Calculating factorial for 27
INFO: Calculating factorial for 26
INFO: Calculating factorial for 25
INFO: Calculating factorial for 24
INFO: Calculating factorial for 23
INFO: Calculating factorial for 22
INFO: Calculating factorial for 21
INFO: Calculating factorial for 20
INFO: Calculating factorial for 19
INFO: Calculating factorial for 18
INFO: Calculating factorial for 17
INFO: Calculating factorial for 16
INFO: Calculating factorial for 15
INFO: Calculating factorial for 14
INFO: Calculating factorial for 13
INFO: Calculating factorial for 12
INFO: Calculating factorial for 11
INFO: Calculating factorial for 10
INFO: Calculating factorial for 9
INFO: Calculating factorial for 8
INFO: Calculating factorial for 7
INFO: Calculating factorial for 6
INFO: Calculating factorial for 5
INFO: Using cached result for 4
INFO: The factorial of 353 is: 5390123321132663611839830169709390802700901540502299409155144170831724510684534699508137677248623055131598638117296703158603498400610313930673453648151014429099960251831405205008293134605366015284045125262984521994476231760549815623012836030339067978538590626728130196262515716507849981195751552694049387406898755340816952993133517014025041844809440588220298088634239045104953684521052138002161108718767713272889846311454562299898752627785623976672521828121478939955822655777460641240477320760977111903156911659536243623806004544204602635691954808430668261822466970110676842032505435259953957358927790048050472573112149563557689823435680703352963668955008021299200000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Example 1

Scenario: You’re in the middle of a geometry test and need to graph the function ( f(x) = 2(x - 3)^2 + 5 ), but you’re unsure how to start. By inputting a range of x-values, you can quickly compute the corresponding y-values, helping you plot the points and accurately sketch the graph. With this approach, you’ll confidently ace the graphing question and boost your test score!

# List of x-coordinates to be plugged into the equation to get the corresponding y-values
x_values = [2, 5, 7, 10]

# Loop to iterate through the list of x-coordinates
for x in x_values:
    # Calculate the corresponding y-values using the equation f(x) = 2(x - 3)^2 + 5
    y = 2 * (x - 3) ** 2 + 5
    # Print the result for each x-coordinate
    print(f"f({x}) = {y}")

f(2) = 7
f(5) = 13
f(7) = 37
f(10) = 103
    <script src="https://utteranc.es/client.js"
        repo="manas12709/portfolio_2025"
        issue-term="pathname"
        label="utterances"
        theme="github-light"
        crossorigin="anonymous"
        async>
    </script>