1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>

void print_line(int w) {
    for(int i = 0; i < w; i++) {   // w + 1   time unites
        printf("*");               // w       time units
    }
    printf("\n");                  // 1       time unit
}                                  // 2w + 2  time units

void print_square(int w) {   // w is the width (and height) of the square
    for(int i = 0; i < w; i++) {      // 1 time unit
        for(int j = 0; j < w; j++) {  // 1 time unit
            printf("*");                  // 1 time unit
        }                                 
        printf("\n");                     // 1 time unit
    }
}

/* w   line 7   line 8   line 9   line 11
 * --------------------------------------
 * 1     2        2        1       1
 * 2     3        6        4       2
 *
 * cost in time units = 2w² + 3w + 1
 */

/*
 * Q: How "fast" (or "slow") is print_square(…)?
 *  -- Answer must depend on n.
 *  -- Remember:  This only matters with bigger inputs (i.e., 'w').
 *  -- For now:  Assume each line of code costs "1 time unit".
 */
int main(int argc, char* argv[]) {
    print_square(500);
    return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */

© Copyright 2023 Alexander J. Quinn         This content is protected and may not be shared, uploaded, or distributed.