Giới thiệu
Khi xây dựng một dự án điện tử, một sơ đồ có thể gọi một điện trở có giá trị bất thường (giả sử, 510 ohms). Bạn kiểm tra thùng các bộ phận của mình và thấy rằng bạn không có điện trở 510-ohm. Nhưng bạn có nhiều giá trị phổ biến ở trên và dưới giá trị này. Bằng cách kết hợp các điện trở song song và nối tiếp, bạn sẽ có thể xấp xỉ điện trở 510-ohm khá tốt.
Bài tập
Bạn phải viết một hàm hoặc chương trình chấp nhận danh sách các giá trị điện trở (điện trở bạn cung cấp) và giá trị đích (mà bạn nhắm tới gần đúng). Chương trình phải xem xét:
- Điện trở riêng
- Hai điện trở nối tiếp
- Hai điện trở song song
Chương trình sẽ tính toán tất cả các kết hợp có thể có của 1 và 2 điện trở từ danh sách chứng khoán (bao gồm hai bản sao có cùng giá trị điện trở), tính toán chuỗi và điện trở song song của chúng, sau đó sắp xếp các cấu hình theo mức độ chúng xấp xỉ giá trị đích.
Định dạng đầu ra phải là một cấu hình trên mỗi dòng, với một +
chuỗi |
biểu thị và biểu thị song song và một số dấu cách hoặc dấu = trước điện trở thuần.
Công thức
- Điện trở của một điện trở là
R1
- Điện trở thuần của hai điện trở mắc nối tiếp là
R1 + R2
- Điện trở thuần của hai điện trở song song là
1 / (1/R1 + 1/R2)
- Khoảng cách giữa giá trị điện trở gần đúng và giá trị đích có thể được tính là khoảng cách giả logarit, không phải khoảng cách tuyến tính :
dist = abs(Rapprox / Rtarget - 1)
. Ví dụ, 200 gần với 350 hơn 100. - Một thước đo khoảng cách tốt hơn là khoảng cách logarit thực sự
dist = abs(log(Rapprox/Rtarget))
, nhưng vì điều này không được chỉ định trong câu hỏi ban đầu, bạn có thể tự do sử dụng một trong hai phép đo.
Chấm điểm
Điểm được đo bằng các ký tự mã, theo quy tắc golf thông thường. Điểm số thấp nhất chiến thắng.
Thí dụ
Chúng tôi có các điện trở sau trong kho [100, 150, 220, 330, 470, 680, 1000, 1500, 2200, 3300, 4700]
và muốn nhắm mục tiêu 510
ohms. Chương trình sẽ xuất ra 143 cấu hình, xấp xỉ như được hiển thị (bạn có thể thay đổi định dạng, nhưng đảm bảo rằng ý nghĩa được xác định dễ dàng):
680 | 2200 519.444
1000 | 1000 500.
150 + 330 480.
220 + 330 550.
470 470
680 | 1500 467.89
680 | 3300 563.819
100 + 470 570.
220 + 220 440.
100 + 330 430.
470 | 4700 427.273
680 | 4700 594.052
1000 | 1500 600.
470 | 3300 411.406
680 | 1000 404.762
150 + 470 620.
...
many more rows
...
2200 + 4700 6900.
3300 + 4700 8000.
4700 + 4700 9400.
Trong ví dụ này, xấp xỉ 510 ohms tốt nhất được đưa ra bởi các điện trở 680- và 2200 ohm song song.
Tốt nhất của mỗi ngôn ngữ cho đến nay (ngày 1 tháng 6 năm 2014):
- J - 70 char
- APL - 102 char
- Toán học - 122 char
- Ruby - 154 char
- Javascript - 156 char
- Julia - 163 char
- Perl - 185 char
- Con trăn - 270 char