บทนำ
เมื่อสร้างโครงการอิเล็กทรอนิกส์แผนผังอาจเรียกตัวต้านทานที่มีค่าผิดปกติ (กล่าวคือ 510 โอห์ม) คุณตรวจสอบชิ้นส่วนในถังขยะและพบว่าคุณไม่มีตัวต้านทาน 510 โอห์ม แต่คุณมีค่าทั่วไปมากมายด้านบนและด้านล่างค่านี้ ด้วยการรวมตัวต้านทานแบบขนานและอนุกรมคุณควรจะสามารถประมาณตัวต้านทาน 510 โอห์มได้ดีพอสมควร
งาน
คุณต้องเขียนฟังก์ชั่นหรือโปรแกรมที่รับรายการค่าตัวต้านทาน (ตัวต้านทานที่คุณเก็บไว้) และค่าเป้าหมาย (ซึ่งคุณมุ่งหวังที่จะประมาณ) โปรแกรมจะต้องพิจารณา:
- ตัวต้านทานส่วนบุคคล
- ตัวต้านทานสองตัวในอนุกรม
- ตัวต้านทานสองตัวขนานกัน
โปรแกรมควรคำนวณการรวมกันที่เป็นไปได้ทั้งหมดของตัวต้านทาน 1 และ 2 จากรายการหุ้น (รวมถึงสำเนาสองตัวที่มีค่าตัวต้านทานเดียวกัน) คำนวณอนุกรมและความต้านทานแบบขนานของพวกเขาจากนั้นเรียงลำดับการกำหนดค่าตามความเหมาะสม
รูปแบบเอาต์พุตควรเป็นหนึ่งการกำหนดค่าต่อบรรทัดโดยมี+
ชุด|
denoting และdenoting ขนานและบางพื้นที่หรือเครื่องหมาย = ก่อนความต้านทานสุทธิ
สูตร
- ความต้านทานของตัวต้านทานหนึ่งตัวคือ
R1
- ความต้านทานสุทธิของตัวต้านทานสองตัวในอนุกรมคือ
R1 + R2
- ความต้านทานสุทธิของตัวต้านทานสองตัวแบบขนานคือ
1 / (1/R1 + 1/R2)
dist = abs(Rapprox / Rtarget - 1)
ระยะห่างระหว่างค่าความต้านทานประมาณและค่าเป้าหมายสามารถคำนวณเป็นระยะทางหลอกลอการิทึมระยะทางไม่เป็นเชิงเส้น: ตัวอย่างเช่น 200 ใกล้เคียงกับ 350 มากกว่า 100- การวัดระยะทางที่ดีกว่าคือระยะทางลอการิทึมจริง
dist = abs(log(Rapprox/Rtarget))
แต่เนื่องจากไม่ได้ระบุไว้ในคำถามเดิมคุณมีอิสระที่จะใช้การวัดใดก็ได้
เกณฑ์การให้คะแนน
คะแนนวัดเป็นตัวอักษรของรหัสตามกฎกอล์ฟปกติ คะแนนต่ำสุดชนะ
ตัวอย่าง
เรามีตัวต้านทานต่อไปนี้ในสต็อก[100, 150, 220, 330, 470, 680, 1000, 1500, 2200, 3300, 4700]
และต้องการกำหนดเป้าหมาย510
โอห์ม โปรแกรมควรแสดงการกำหนดค่า 143 รายการโดยประมาณตามที่แสดง (คุณสามารถเปลี่ยนรูปแบบได้ แต่ต้องแน่ใจว่ากำหนดความหมายได้ง่าย):
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.
ในตัวอย่างนี้การประมาณที่ดีที่สุดคือ 510 โอห์มจะได้รับจากตัวต้านทาน 680- และ 2200-ohm ในแบบคู่ขนาน
ดีที่สุดของแต่ละภาษาจนถึงวันที่ (1 มิถุนายน 2014):
- J - 70 ตัวอักษร
- APL - 102 อักขระ
- Mathematica - 122 ถ่าน
- ทับทิม - 154 ถ่าน
- Javascript - 156 อักขระ
- Julia - 163 ถ่าน
- Perl - 185 อักขระ
- Python - 270 ถ่าน