Cryptography

Bài tập về mảng và vòng lặp for

1. Mean - Giá trị trung bình

$$\bar{x}=\frac{\sum_{i=1}^n{x_i}}{N}$$

Viết hàm tính trung bình (Mean) của một mảng số (mean)

Ví dụ: x = [3, 2, 7, 4, 8]

Kết quả trả về giá trị trung bình

$$\bar{x} = \frac{3+2+7+4+8}{5}=4.8$$

2. Variance - Phương sai

Variance sample

$$S^2=\frac{\sum_{i=1}^n{(x_i- \bar{x})^2}}{n-1}$$

Viết chương trình nhập vào 1 mảng các số, tính phương sai mẫu của danh sách trên

Ví dụ: x = [3, 2, 7, 4, 8]

Kết quả trả về giá trị của phương sai mẫu:

$$S^2=\frac{(3-4.8)^2+(2-4.8)^2+(7-4.8)^2+(4-4.8)^2+(8-4.8)^2}{4}=6.7$$

3. Standard Deviation - Độ lệch chuẩn

Standard Deviation sample

$$S=\sqrt{\frac{\sum_{i=1}^n{(x_i- \bar{x})^2}}{N-1}}$$

Viết chương trình nhập vào 1 mảng các số, tính phương sai mẫu của danh sách trên

Ví dụ: x = [3, 2, 7, 4, 8]

Kết quả trả về giá trị của phương sai mẫu:

$$S=\sqrt{\frac{(3-4.8)^2+(2-4.8)^2+(7-4.8)^2+(4-4.8)^2+(8-4.8)^2}{4}}=2.588435821$$

4. Tính khoảng cách Manhattan

Viết chương trình nhập vào 2 vector, tính khoảng cách giữa 2 vector đó bằng công thức manhattan

$$d_{\text{Manhattan}} = \sum_{i=1}^{n} |x_i - y_i|$$

Ví dụ:

x = [3, 2, 7, 4, 8]
y = [4, 3, 2, 5, 9]

Kết quả trả về

$$d_{\text{Manhattan}}=9$$

5. Tính khoảng cách Euclidan

Viết chương trình nhập vào 2 vector, tính khoảng cách giữa 2 vector đó bằng công thức Euclidan

$$d_{\text{Euclidean}} = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}$$

Ví dụ:

x = [3, 2, 7, 4, 8]
y = [4, 3, 2, 5, 9]

Kết quả trả về

$$d_{\text{Euclidan}}=5.385$$

6. Covariance - Hiệp phương sai

$$Cov_{x,y}=\frac{\sum_{i=1}^n{(x_i-\bar{x})(y_i-\bar{y})}}{N-1}$$

Viết chương trình nhập vào 2 mảng các số, tính hiệp phương sai mẫu của 2 danh sách trên

Ví dụ:

x = [3, 2, 7, 4, 8]
y = [4, 3, 2, 5, 9]

Kết quả trả về giá trị hiệp phương sai mẫu:

7. Correlation coefficient - Hệ số tương quan

$$Corr_{x,y}=\frac{Cov_{x,y}}{S_x*S_y}=\frac{\sum_{i=1}^n{(x_i-\bar{x})(y_i-\bar{y})}}{\sqrt{\sum_{i=1}^n{(x_i- \bar{x})^2} * \sum_{i=1}^n{(y_i- \bar{y})^2} }}$$

Viết chương trình nhập vào 2 mảng các số, tính hệ số tương của 2 danh sách trên

Ví dụ:

x = [3, 2, 7, 4, 8]
y = [4, 3, 2, 5, 9]

Kết quả trả về giá trị hệ số tương quan mẫu:

$$Corr_{x,y}=\frac{(3-4.8)(4-4.6)+(2-4.8)(3-4.6)+(7-4.8)(2-4.6)+(4-4.8)(5-4.6)+(8-4.8)(9-4.6)}{2.588435821 *2.701851217 }=0.486160965 $$

8. Accuracy

Nhập và 2 mảng một chiều, tính accuracy theo công thức sau

$$\text{Accuracy} = \frac{\sum_{i=1}^{n} \mathbb{I}(a_i = b_i)}{n}$$

Tức là đếm số cặp trùng nhau

Ví dụ:

x = [0, 0, 0, 1, 1, 0, 0, 1]
y = [0, 1, 0, 1, 1, 0, 0, 1]

Kết quả

$$\text{Accuracy} = \frac{7}{8}=0.875$$

9. Confusion matrix

Nhập vào 2 mảng 1 chiều, tính Confusion matrix

Ví dụ:

yActual = [0, 0, 0, 1, 1, 0, 0, 1]
yPredict = [0, 1, 0, 1, 1, 0, 0, 1]

Output

Confusion MatrixActual
01
Predict 0 4 0
1 1 3

Bài 10: ChangeMoney - Đổi tiền

Nhập vào số tiền cần đổi, in ra kết quả số tờ đổi được bao gồm các loại tiền 50đ, 20đ, 10đ, 5đ, 2đ, 1đ

Yêu cầu: Sử dụng mảng 1 chiều và vòng lặp để in ra số tờ tiền đổi được

InputOutput
19950đ20đ10đ
320120

Bài 11: Shuffle

Viết hàm (Shuffle) tạo ra 1 chuỗi ngẫu từ chuỗi: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Ví dụ tạo hàm Shuffle
1 Kết quả trả về chuỗi ngẫu nhiên XNYAHPOGZQWBTSFLRCVMUEKJDI

Bài 12: RandomString

Viết hàm tạo một chuỗi ngẫu nhiên có chiều dài bất kỳ RandomString(int len) từ các mẫu ký tự sau: abcdefghijklmnopqrstuvwxyz0123456789

Bài 13: Substitution Cipher

Tạo class SubstitutionCipher để mã hóa thay thế các ký tự

Bước 1: Tạo keyEncrypt chuỗi ký tự ngẫu nhiên để mã hóa

Encrypt
ABCDEFGHIJKLMNOPQRSTUVWXYZ
XNYAHPOGZQWBTSFLRCVMUEKJDI

Bước 2: Tạo keyDecrypt từ chuỗi keyEncrypt

ABCDEFGHIJKLMNOPQRSTUVWXYZ
DLRYVOHEZXWPTBGFJQNMUSKACI

Bước 3: Tạo hàm mã hóa: Encrypt(string text)

Bước 4: Tạo hàm giải mã: Decrypt(string text)

Bài 14: Simple Linear Regression

Giả sử tại công ty M có tài liệu về chi phí bảo trì máy móc thiết bị trong năm 2024 như sau

ThángSố giờ lao động trực tiếp (ĐVT: giờ)
X
Chi phí bảo trì (ĐVT: 1.000 đồng)
Y
11.1002.650
21.0002.500
31.3003.150
41.1502.700
51.4003.350
61.2502.900
71.1002.650
81.2002.900
91.3503.250
101.4503.400
111.1502.700
121.5003.500

Tính giá trị trung bình

Số giờ lao động trực tiếp trung bình $$\bar{X}$$ Chi phí bảo trì trung bình $$\bar{Y}$$
1.245,8332.970,833
Biến phí đơn vị :

$$a = \frac{\sum_{i=1}^n{(X_i-\bar{X})(Y_i-\bar{Y})}}{\sum_{i=1}^n{(X_i-\bar{X})^2}} = \frac{583.541,7}{267.291,7} = 2,183164$$

Tính định phí

$$b=\bar{Y} - a \bar{X} = 2.970,833 - 2,183164 * 1.245,833 = 0,250974$$

Phương trình dự đoán chi phí bảo trì là Y= 2,183164 X + 0,250974

15. Min Max Scaler

Transform

$$x_{scale}=\frac{x-x_{min}}{x_{max}-x_{min}}$$

15. Inverse

$$x=x_{scale}({x_{max}-x_{min})+x_{min}}$$

Ví dụ
Input[3, 7, 2, 5, 9, 4]
Transform[0.142857143, 0.714285714, 0, 0.428571429, 1, 0.285714286]
Inverse[3, 7, 2, 5, 9, 4]

16. MaxAbxScaler

Công thức tính chuyển đổi (transform scale)

$$scaler=\frac{x}{|x_{max}|}$$

Công thức chuyển đổi nghịch đảo (inverse scale)

$$x = scaler * |x_{max}|$$

Ví dụ
Input[3, -7, 2, 5, 9, 4]
Transform[0.333333333, -0.777777778, 0.222222222, 0.555555556, 1, 0.444444444]
Inverse[3, -7, 2, 5, 9, 4]

17. StandardScaler

Tính trung bình mean

$$mean=\frac{\sum_{i=1}^n x_i}{n}$$

Tính độ lệch chuẩn (standard deviation)

$$standard=\sqrt{\frac{(x_i-mean)^2}{n-1}}$$

Công thức tính chuyển đổi (transform scale)

$$scaler=\frac{x-mean}{standard}$$

Công thức chuyển đổi nghịch đảo (inverse scale)

$$x = scaler * standard + mean$$

Ví dụ
Input[3, -7, 2, 5, 9, 4]
Transform[0.062696233, -1.818190752, -0.125392466, 0.43887363, 1.191228424, 0.250784931]
Inverse[3, -7, 2, 5, 9, 4]