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
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
|
+ "Симулация" на FNAF3 използвайки графа на ходене на Springtrap
+ Solver на шифъра на Цезар, използвайки подадена ключова дума
+ PID controller?
+ Смарт пойнтъри
+ Слайдър, получаваш начална позиция и много отмествания, накрая връщаш в коя позиция е финално
+ GitHub-стип генератор на профилно изображение: използвайки ascii
+ https://rosettacode.org/wiki/Kernighans_large_earthquake_problem
Въведение, променливи
ГОТОВО
Оператори, условни оператори
+ Четно, нечетно
+ Аритметична прогресия - подават се три числа, връща се дали са в аритметична прогресия
+ Условен полином - подава се степен (0, 1, 2), подават се a, b, c, x, y и се смята стойността
+ Деление и умножение на две без оператор *, /
+ Логическа операция върху много двойки битове (в две числа)
+ Връщане на бит по позиция
+ DYMO rotation calculator
+ Timestamp convertion
+ Collision detection
Получавате точките на два правоъгълника в равнинатата
Трябва да върнете дали се пресичат или не
+ Парсване на data frame/CAN frame с фиксиран размер
https://en.wikipedia.org/wiki/ISO_15765-2
Условни конструкции
+ UTF-8 type?
Цикли
+ Степенуване
+ Геометрична прогресия по подадени параметри
+ Фибоначи
+ Брояч на букви (главни, малки, цифри)
+ Сума на числа докато не получи нула
+ Ред на тейлър на синус с подадена дължина
+ Метод на Херон за коренуване
+ Полином н-та степен, дали е корен
+ Интерполация между координати
+ Имплементация на Luhn алгоритъма
+ Имплементация на готината проверка за просто число
+ IPv4 checksum https://en.wikipedia.org/wiki/Internet_checksum
+ Tic-tac-toe статистика: да се разиграят всички възможни игри и да се върне кои от тях са успешни и кои не
+ Дали число е перфектно
+ Дали е число на армстронг
+ Ред на тейлър за логаритъм
+ Brainfuck interpreter
Функции
+ Получвате цяло положително число.
Трябва да върнете неговото наименование на английски.
+ Операции върху 3 числа, изведени във функции и избор по "име"
+ Идентификационна система, приема много числа (за даден човек), трябва да напишат обща функция за вход на число с проверка за валидност
+ Полином от произволна степен
+ DVD logo bounce simulation
Получават размер на екрана, позиция на логото и посока (диагонална)
Логото се движи с дискретни координати в екрана
Ако стигне стена, той се удря и продължава в посока на 90 градуса
Връщат се броя позиции които логото ще смени преди да удари ъгъла
+ Текстов редактор
+ ASCII image editor?
Указатели
+ N на брой числа
+ Числа докато не се получи 0
+ Умножение на матрици
+ Гаусова елиминация
https://en.wikipedia.org/wiki/Gaussian_elimination
+ BMP header parser https://en.wikipedia.org/wiki/BMP_file_format
+ Получавате N на брой числа (байтове?)
Тези байтове съдържат данни.
Данните са низове или таблици.
Първия байт съдържа индекса към "първата" таблица.
В нея се съдържат началните адреси на всички данни.
Адресът на таблица първо съдържа размер на данни, после брой колони и накрая данните.
Низът съдържа букви които са null-terminated.
+
Масиви
+ Sakmoto's day of week method
https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week#Sakamoto's_methods
+ Memory manager
Получава редица request-и за "заделяне" и "освобождаване" на памет в масив
Трябва да може да реорганизира паметта.
Получава и заявки за стойности в паметта.
Матрици
+ Conway's game of life
+ https://rosettacode.org/wiki/Knight%27s_tour
Референции
Низове
+ Имплементация на FNV алгоритъма
+ Имплементация на XOR шифър https://en.wikipedia.org/wiki/XOR_cipher
+ https://en.wikipedia.org/wiki/Levenshtein_distance
+ https://rosettacode.org/wiki/Pangram_checker
+ Solver на Viginere шифъра, използвайки index of coincidence и brute force
https://www.cipherchallenge.org/wp-content/uploads/2020/12/Five-ways-to-crack-a-Vigenere-cipher.pdf
+ https://rosettacode.org/wiki/Jewels_and_stones
+ https://rosettacode.org/wiki/Jaro_similarity
+ https://rosettacode.org/wiki/Factorize_string_into_Lyndon_words
+ printf стил функционалност: с низ за шаблон и аргументи
Рекурсия
+ flood fill
+ 8 queens
+ https://rosettacode.org/wiki/Flatten_a_list
+ https://rosettacode.org/wiki/Arithmetic-geometric_mean
+ sudoku
+ all tic-tac-toe games
+ Детерминанта чрез адюнгирани количества
https://en.wikipedia.org/wiki/Determinant#Laplace_expansion
Сортиране
+ https://en.wikipedia.org/wiki/Five-number_summary
### 2 задача - Делено на 7
Във входа получавате цяло число.
Трябва да върнете (изкарате на екрана) стойността на числото делено на 7 (закръглено надолу).
[=Примери:=]
:table_2
|= Вход
|= Изход
|: 49
|: 7
|: 34
|: 4
### 3 задача - От Инчове в Сантиметри
Във входа получавате цяло число: дължина в инчове.
Трябва да върнете размера в сантиметри по формулата (закръглено надолу):
[image ./cm-inch-formula Сантиметри = 50 / 127 * Инчове]
[=Примери:=]
:table_2
|= Вход
|= Изход
|: 7
|: 17
|: 42
|: 106
---
A register - always reset to 0 when started
B register - always reset to 0 when started
INPUT1 - input values
INPUT2 - input values
ASUM <value> - A += Value
ASUBTRACT <value> - A -= Value
ASHOW - show A on the big screen
BSUM <value> - B += Value
BSUBTRACT <value> - B -= Value
GOTOBZ <row> - jump to <row> addr when B == 0
GOTOBN <row> - jump to <row> addr when B != 0
starts on row 1, works downwards
if it sees an empty cell, stops running
5:
ASUM
5
ASHOW
2+2:
ASUM
2
ASUM
2
ASHOW
8+INPUT1:
ASUM
8
ASUM
INPUT1
ASHOW
INPUT1 * 2:
ASUM
INPUT1
ASUM
INPUT1
ASHOW
INPUT1==5:
BSUM
5
BSUBTRACT
INPUT1
GOTOBZ
+3
ASHOW
ASUM
1
ASHOW
if INPUT1 == 0 then INPUT2 * 2 else INPUT2 - 100:
BSUM
INPUT1
JUMPBZ
+?
ASUM
INPUT2
ASUBTRACT
100
ASHOW
ASUM
INPUT2
ASUM
INPUT2
ASHOW
INPUT1 == 5 || INPUT2 == 5:
BSUM
5
BSUBTRACT
INPUT1
GOTOBZ
+9
BSUM
INPUT1
BSUBTRACT
INPUT2
GOTOBZ
+3
ASHOW
ASUM
1
ASHOW
INPUT1 == 5 && INPUT2 == 5: TODO
INPUT1 * INPUT2:
BSUM
INPUT2
JUMPBZ
+7
ASUM
INPUT1
BSUBTRACT
1
JUMPBZ
-5
SHOWA
INPUT1 ^^ 3:
BSUM
INPUT1
ASUM
INPUT1
BSUBTRACT
1
JUMPBN
-?
BSUM
INPUT1
JUMPBZ
+?
ASUM
INPUT1
BSUBTRACT
1
JUMPBN
-?
---
|