summaryrefslogtreecommitdiff
path: root/static/js/programs.js
blob: fc8df1cf763dbe48e09adf687d513d5cde972379 (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
const cons = `DISCOVER HOW TO cons WITH a, b
RUMOR HAS IT
    DISCOVER HOW TO retrieve WITH is_first 
    RUMOR HAS IT
        WHAT IF is_first IS ACTUALLY TOTALLY RIGHT
            SHOCKING DEVELOPMENT a
        LIES!
            SHOCKING DEVELOPMENT b
    END OF STORY
    SHOCKING DEVELOPMENT retrieve
END OF STORY`;

const BINARY_INORDER_TRAVERSAL = `
${cons}

DISCOVER HOW TO in_order_traverse WITH node, is_dual_ptr
RUMOR HAS IT
    EXPERTS CLAIM left TO BE node OF TOTALLY RIGHT
    EXPERTS CLAIM right TO BE node OF COMPLETELY WRONG

    WHAT IF is_dual_ptr IS ACTUALLY COMPLETELY WRONG
      RUMOR HAS IT
        YOU WON'T WANT TO MISS left
        WHAT IF right IS ACTUALLY COMPLETELY WRONG
            1
        LIES!
            in_order_traverse OF right, TOTALLY RIGHT
      END OF STORY
    LIES!
      RUMOR HAS IT
        WHAT IF left IS ACTUALLY COMPLETELY WRONG
            1
        LIES!
            in_order_traverse OF left, COMPLETELY WRONG

        WHAT IF right IS ACTUALLY COMPLETELY WRONG
            1
        LIES!
            in_order_traverse OF right, COMPLETELY WRONG
      END OF STORY
END OF STORY

EXPERTS CLAIM l TO BE cons OF 1, COMPLETELY WRONG
EXPERTS CLAIM r TO BE cons OF 3, COMPLETELY WRONG
EXPERTS CLAIM root TO BE cons OF l, r
EXPERTS CLAIM head TO BE cons OF 2, root

in_order_traverse OF head, COMPLETELY WRONG

PLEASE LIKE AND SUBSCRIBE
`;

const MERGE_SORT = `
${cons}

DISCOVER HOW TO print WITH x
RUMOR HAS IT
    YOU WON'T WANT TO MISS x
END OF STORY

DISCOVER HOW TO map WITH fn, list
RUMOR HAS IT
    WHAT IF list IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT COMPLETELY WRONG
    LIES!
    RUMOR HAS IT
        EXPERTS CLAIM car TO BE list OF TOTALLY RIGHT
        EXPERTS CLAIM cdr TO BE list OF COMPLETELY WRONG
        EXPERTS CLAIM new_car TO BE fn OF car
        EXPERTS CLAIM rest_mapped TO BE map OF fn, cdr

        SHOCKING DEVELOPMENT cons OF new_car, rest_mapped
    END OF STORY
END OF STORY

DISCOVER HOW TO reduce WITH fn, list, accumulator
RUMOR HAS IT
    WHAT IF list IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT accumulator
    LIES!
    RUMOR HAS IT
        EXPERTS CLAIM car TO BE list OF TOTALLY RIGHT
        EXPERTS CLAIM cdr TO BE list OF COMPLETELY WRONG
        EXPERTS CLAIM added_accumulator TO BE fn OF car, accumulator
       
        SHOCKING DEVELOPMENT reduce OF fn, cdr, added_accumulator
    END OF STORY
END OF STORY

DISCOVER HOW TO str_join_reducer WITH element, accumulator
RUMOR HAS IT
    EXPERTS CLAIM added_comma TO BE element PLUS ', '
    SHOCKING DEVELOPMENT added_comma PLUS accumulator
END OF STORY

DISCOVER HOW TO join WITH list
RUMOR HAS IT
    SHOCKING DEVELOPMENT reduce OF str_join_reducer, list, ''
END OF STORY

DISCOVER HOW TO append WITH n, m
RUMOR HAS IT
    WHAT IF n IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT m
    LIES!
    RUMOR HAS IT
        EXPERTS CLAIM car_n TO BE n OF TOTALLY RIGHT
        EXPERTS CLAIM cdr_n TO BE n OF COMPLETELY WRONG
        EXPERTS CLAIM appended TO BE append OF cdr_n, m

        SHOCKING DEVELOPMENT cons OF car_n, appended
    END OF STORY
END OF STORY

DISCOVER HOW TO reverse WITH l
RUMOR HAS IT
    WHAT IF l IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT COMPLETELY WRONG
    LIES!
        1

    EXPERTS CLAIM car TO BE l OF TOTALLY RIGHT
    EXPERTS CLAIM cdr TO BE l OF COMPLETELY WRONG
    EXPERTS CLAIM reversed_cdr TO BE reverse OF cdr
    EXPERTS CLAIM car_cons TO BE cons OF car, COMPLETELY WRONG

    SHOCKING DEVELOPMENT append OF reversed_cdr, car_cons
END OF STORY

DISCOVER HOW TO merge WITH x, y
RUMOR HAS IT
    WHAT IF x IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT y
    LIES!
        1

    WHAT IF y IS ACTUALLY COMPLETELY WRONG
    RUMOR HAS IT
        WHAT IF x IS ACTUALLY COMPLETELY WRONG
            SHOCKING DEVELOPMENT COMPLETELY WRONG
        LIES!
            SHOCKING DEVELOPMENT x
    END OF STORY
    LIES!
        1

    EXPERTS CLAIM car_x TO BE x OF TOTALLY RIGHT
    EXPERTS CLAIM car_y TO BE y OF TOTALLY RIGHT
    EXPERTS CLAIM cdr_x TO BE x OF COMPLETELY WRONG
    EXPERTS CLAIM cdr_y TO BE y OF COMPLETELY WRONG

    EXPERTS CLAIM x_gt_y TO BE car_x BEATS car_y

    WHAT IF x_gt_y IS ACTUALLY TOTALLY RIGHT
    RUMOR HAS IT
        EXPERTS CLAIM rest_x_merge_y TO BE merge OF cdr_x, y
        SHOCKING DEVELOPMENT cons OF car_x, rest_x_merge_y
    END OF STORY
    LIES!
    RUMOR HAS IT
        EXPERTS CLAIM x_merge_rest_y TO BE merge OF x, cdr_y
        SHOCKING DEVELOPMENT cons OF car_y, x_merge_rest_y
    END OF STORY
END OF STORY

DISCOVER HOW TO split_middle_helper WITH slow, fast, mid_to_head
RUMOR HAS IT
    WHAT IF fast IS ACTUALLY COMPLETELY WRONG
    RUMOR HAS IT
        EXPERTS CLAIM head_to_mid TO BE reverse OF mid_to_head
        SHOCKING DEVELOPMENT cons OF head_to_mid, slow
    END OF STORY
    LIES!
        1

    EXPERTS CLAIM fast_cdr TO BE fast OF COMPLETELY WRONG
    EXPERTS CLAIM slow_car TO BE slow OF TOTALLY RIGHT
    EXPERTS CLAIM slow_cdr TO BE slow OF COMPLETELY WRONG

    WHAT IF fast_cdr IS ACTUALLY COMPLETELY WRONG
    RUMOR HAS IT
        EXPERTS CLAIM mid_to_head_plus_slow TO BE cons OF slow_car, mid_to_head
        EXPERTS CLAIM head_to_mid_plus_slow TO BE reverse OF mid_to_head_plus_slow

        SHOCKING DEVELOPMENT cons OF head_to_mid_plus_slow, slow_cdr
    END OF STORY
    LIES!
        1

    EXPERTS CLAIM fast_cddr TO BE fast_cdr OF COMPLETELY WRONG
    EXPERTS CLAIM slow_car_mid_to_head TO BE cons OF slow_car, mid_to_head

    SHOCKING DEVELOPMENT split_middle_helper OF slow_cdr, fast_cddr, slow_car_mid_to_head
END OF STORY

DISCOVER HOW TO split_middle WITH start
RUMOR HAS IT
    EXPERTS CLAIM cdr TO BE start OF COMPLETELY WRONG

    SHOCKING DEVELOPMENT split_middle_helper OF start, cdr, COMPLETELY WRONG
END OF STORY

DISCOVER HOW TO sort WITH root
RUMOR HAS IT
    WHAT IF root IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT root
    LIES!
        1

    EXPERTS CLAIM root_cdr TO BE root OF COMPLETELY WRONG
    WHAT IF root_cdr IS ACTUALLY COMPLETELY WRONG
        SHOCKING DEVELOPMENT root
    LIES!
        1

    EXPERTS CLAIM left_right_cons_cell TO BE split_middle OF root
    EXPERTS CLAIM left TO BE left_right_cons_cell OF TOTALLY RIGHT
    EXPERTS CLAIM right TO BE left_right_cons_cell OF COMPLETELY WRONG
    EXPERTS CLAIM left_s TO BE sort OF left
    EXPERTS CLAIM right_s TO BE sort OF right

    SHOCKING DEVELOPMENT merge OF left_s, right_s
END OF STORY

EXPERTS CLAIM a_3 TO BE cons OF 3, COMPLETELY WRONG
EXPERTS CLAIM a_2 TO BE cons OF 1, a_3
EXPERTS CLAIM a_1 TO BE cons OF -2, a_2
EXPERTS CLAIM a_0 TO BE cons OF 5, a_1
EXPERTS CLAIM b_3 TO BE cons OF 2, a_0
EXPERTS CLAIM b_2 TO BE cons OF 7, b_3
EXPERTS CLAIM b_1 TO BE cons OF 3, b_2
EXPERTS CLAIM b_0 TO BE cons OF -1, b_1

EXPERTS CLAIM b_sorted TO BE sort OF b_0

YOU WON'T WANT TO MISS join OF b_sorted

PLEASE LIKE AND SUBSCRIBE
`;

const PROG_FACTORIAL = `YOU WON'T WANT TO MISS 'Hello, World!'

DISCOVER HOW TO factorial WITH n
RUMOR HAS IT
    WHAT IF n IS ACTUALLY 0
        SHOCKING DEVELOPMENT 1
    LIES!
        SHOCKING DEVELOPMENT
            n TIMES factorial OF n MINUS 1
END OF STORY

EXPERTS CLAIM result TO BE factorial OF 10
YOU WON'T WANT TO MISS 'Result is'
YOU WON'T WANT TO MISS result

PLEASE LIKE AND SUBSCRIBE`;

const PROG_FIBONACCI = `DISCOVER HOW TO fibonacci WITH a, b, n
RUMOR HAS IT
    WHAT IF n SMALLER THAN 1
        SHOCKING DEVELOPMENT b
    LIES! RUMOR HAS IT
        YOU WON'T WANT TO MISS b
        SHOCKING DEVELOPMENT
            fibonacci OF b, a PLUS b, n MINUS 1
    END OF STORY
END OF STORY

EXPERTS CLAIM limit TO BE 10
YOU WON'T WANT TO MISS 'First 10 Fibonacci numbers'
EXPERTS CLAIM nothing TO BE fibonacci OF 0, 1, limit

PLEASE LIKE AND SUBSCRIBE`;

const PROGRAMS = {
    "Merge Sort": MERGE_SORT,
    Fibonacci: PROG_FIBONACCI,
    "In-Order Traversal": BINARY_INORDER_TRAVERSAL,
    Factorial: PROG_FACTORIAL,
};