Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / upp-2025 / ideas.du
blob: b246989326e0cf1014f05abb40ca56432d88f6be (plain) (blame)
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 (закръглено надолу).

{b Примери:}

:table_2
|= Вход
|= Изход

|: 49
|: 7

|: 34
|: 4


### 3 задача - От Инчове в Сантиметри

Във входа получавате цяло число: дължина в инчове.
Трябва да върнете размера в сантиметри по формулата (закръглено надолу):

{img Сантиметри = 50 / 127 * Инчове;./cm-inch-formula}

{b Примери:}

: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
	-?


---