প্রতিরোধের গণনা করা (নার্ড স্নিপিং)


10

গুড আফটার গল্ফার্স,

আজকের জন্য আমাদের চ্যালেঞ্জ এক্সকেসিডি কমিক্স 356 এবং 370 দ্বারা অনুপ্রাণিত । আমরা প্রতিরোধের একটি গ্রুপের প্রতিরোধের গণনা করার জন্য একটি প্রোগ্রাম লিখতে যাচ্ছি। একটি পূর্ববর্তী যে এই কোড চ্যালেঞ্জ হিসাবে ওয়ারেন্ট পাওয়ার পক্ষে যথেষ্ট শক্ত, তবে আমি মনে করি যে গল্ফযুক্ত ফর্ম্যাটে কিছুটা জটিল প্রোগ্রাম লেখার জন্য একটি নির্দিষ্ট শিল্প রয়েছে art সর্বনিম্ন পরিমাণে অক্ষর জয় করে।

প্রতিরোধের গণনা নিম্নলিখিত দুটি সূত্রের উপর নির্ভর করে:

  • যদি প্রতিরোধকগুলি সিরিজে থাকে তবে প্রতিরোধটি হ'ল প্রতিটি প্রতিরোধকের প্রতিরোধের যোগফল
  • যদি প্রতিরোধকগুলি সমান্তরাল হয়, প্রতিরোধটি প্রতিটি প্রতিরোধকের প্রতিরোধের বিপরীতের যোগফলের বিপরীত হয়

সুতরাং - উদাহরণস্বরূপ:

গণনা প্রতিরোধের উদাহরণ

আপনার চ্যালেঞ্জটি হ'ল সম্ভাব্য ন্যূনতম পরিমাণে, 64৪ টি প্রতিরোধকের একটি দলের প্রতিরোধের গণনা করা। জটিলতার জন্য বিশেষত ইনপুট বিধিগুলির জন্য আমার ক্ষমা চাই। আমি এগুলি এমনভাবে সংজ্ঞায়িত করার চেষ্টা করেছি যাতে প্রতিটি ভাষা ব্যবহারের উপযোগী হয়।

  • প্রতিটি প্রতিরোধক 2 বা ততোধিক অন্যান্য প্রতিরোধকের সাথে সংযুক্ত থাকবে।

  • ইনপুটটি বৈধ হওয়ার গ্যারান্টিযুক্ত, কেবল একটি প্রবেশ এবং একটি প্রস্থানস্থান যা সংযুক্ত হবে

  • আরও গণিতের প্রয়োজনীয়তা রোধ করতে নেটওয়ার্কটি সিরিজ-সমান্তরাল হবে তবে কী উপস্থাপন করা হবে

  • আপনার ভাষার জন্য উপযুক্ত কি তার উপর নির্ভর করে ইনপুট ফাইল, যুক্তি বা স্টিডিনের মাধ্যমে হবে।

  • ইনপুটটিতে রেজিস্টরের প্রতিরোধের একটি পূর্ণসংখ্যার সমন্বিত নিউলাইন বা ফরোয়ার্ড স্ল্যাশড বিচ্ছিন্ন বিবৃতি এবং রোধকের একদিকের সাথে সংযুক্ত যে রেজিস্টারের আইডি পৃথক করে সেগুলি নিয়ে গঠিত হবে।

  • প্রথম প্রতিরোধকের আইডি হবে 1, প্রতিটি ক্রমান্বয়ে প্রতিরোধকের জন্য একটি করে বাড়ানো

  • শুরুতে সর্বদা 0 এর আইডি থাকবে

  • চূড়ান্ত প্রতিরোধকের সর্বদা 0 ওহমের প্রতিরোধ থাকবে এবং কেবল তার লাইনে সংযোগগুলি সংজ্ঞায়িত করা হবে

উদাহরণ স্বরূপ:

উদাহরণ 2

হিসাবে প্রতিনিধিত্ব করা যেতে পারে

3 0
6 1
1 0
5 0
0 2 3 4
  • আউটপুট স্টডআউট বা ফাইল হতে পারে। এটি নিম্নলিখিত উপায়ে একটিতে প্রতিনিধিত্ব করা যেতে পারে:
    • সর্বনিম্ন 2 দশমিক স্থান সহ একটি নম্বর, পরে একটি নতুন লাইন
    • একটি পূর্ণাংশ (সংখ্যার), একটি ফরোয়ার্ড স্ল্যাশ এবং অন্য একটি পূর্ণসংখ্যা (ডিনোমিনেটর) সমন্বিত একটি ভগ্নাংশ, যার পরে একটি নতুন লাইন। ভগ্নাংশটি তার সর্বনিম্ন ফর্মটিতে হওয়ার দরকার নেই - উদাহরণস্বরূপ গ্রহণযোগ্য 4/ or বা 10/8। ভগ্নাংশটি অবশ্যই 1/100 এর মধ্যে সঠিক হতে হবে। পুরোপুরি নির্ভুল হওয়ার জন্য কোনও বোনাস নেই - প্রতিযোগিতার জন্য স্থির বা ভাসমান পয়েন্ট অপারেশন ছাড়াই ভাষা সক্ষম করার জন্য এটি সরবরাহ করা হয় cr

আমি আশা করি যে সমস্ত পয়েন্ট কভার। শুভকামনা!


/ব্যাকস্ল্যাশ নয়। আপনি কি `\` বা একটি ফরোয়ার্ড স্ল্যাশ বোঝাতে চেয়েছিলেন?
জন ডিভোরাক

ইনপুটটি যদি সিরিজ-সমান্তরাল নেটওয়ার্ক না হয় তবে আমাদের কী ভুল ফলাফল তৈরি করার অনুমতি দেওয়া হচ্ছে?
জন ডিভোরাক

1
Wheatstone সেতু সিরিজ-সমান্তরাল যদি আপনি একটি রোধ সঙ্গে কেন্দ্র ভোল্টমিটার প্রতিস্থাপন নয়
জন ডিভোরাক

1
প্রতিরোধকরা কি সর্বদা নিম্ন আইডিযুক্ত তাদের মধ্যে তারযুক্ত হবে বা তারা কোনও ক্রমে ইনপুট হতে পারে? কি 1 2/1 0/0 1বৈধ?
জন ডিভোরাক

9
সমান্তরাল উদাহরণটি ভুল। এটি 15/8 নয়, 15/23 হওয়া উচিত।
পিটার টেলর

উত্তর:


6

এপিএল 190

সূচকের উত্স ১. প্রথম লুপ (গুলি) সমস্ত রেজিস্টারে সিরিজযুক্ত তারযুক্ত, দ্বিতীয় (পি) সমান্তরালে তারযুক্ত যারা এবং প্রথম লুপের পুনরাবৃত্তিটি এখন সিরিজে যে কোনও সমান্তরাল প্রতিরোধককে একত্রিত করার জন্য পুনরায় করা হয়। চূড়ান্ত শূন্য প্রতিরোধকের স্পেসিফিকেশন রিডান্ট্যান্ট বলে মনে হচ্ছে।

r←¯1↓⍎¨(c≠'/')⊂c        
o←⊃↑¨r                  
r←⊃1↓¨r                 
s:→(0=+/n←1=+/×r)/p     
n←↑n/i←⍳↑⍴r             
o[n-1]←+/o[n-0 1]       
o←(i←n≠i)/o             
r←i⌿r                   
r←r-r≥n                 
→s                      
p:n←1⍪2≠/r[;1]          
r←((⍴r),1)⍴r←¯1++\n~0   
o←∊1÷¨+/¨1÷¨n⎕penclose o
→(1<⍴o)/s               
3⍕o                     
' '  

প্রশ্নটির উদাহরণগুলির সাথে আরও কিছুটা জটিল জটিল পরীক্ষিত:

      Input: '5 0/3 1/1 2/0 2'
 9.000

      Input: '3 0/1 0/5 0/0 1 2 3'
 0.652

      Input: '3 0/6 1/1 0/5 0/0 2 3 4'
 0.763

      Input: '2 0/2 1/2 0/2 0/2 4/2 5/2 2 3 6/2 7/2 2 3 6/0 8 9'
 2.424

সর্বদা এপিএল উত্তরগুলি দ্বারা অবাক - তারা একেবারে উন্মাদ দেখাচ্ছে। চূড়ান্ত প্রতিরোধকটি কেবল অন্যান্য প্রতিরোধকের সাথে সংযুক্ত হওয়ার জন্য কিছু দেওয়ার ছিল - একটি ডামি এন্ড লিঙ্ক। সাবাশ!
lochok

আমি মনে করি আপনি কয়েকটি চরিত্র সংরক্ষণ করতে পারেন। এর সাথে প্রথম দুটি লাইন প্রতিস্থাপন করুন o←⊃↑¨r←¯1↓⍎¨(c≠'/')⊂c। এই প্যাটার্নটি বেশ কয়েকটি জায়গায় প্রযোজ্য।
FUZxxl

5

পাইথন, 329 অক্ষর

import sys
N=[[1]]+[map(int,x.split())for x in sys.stdin]
N[-1][0]=1
n=len(N)
S=[set([i])for i in range(2*n)]
for x in range(n):
 C=S[2*x]
 for y in N[x][1:]:C|=S[2*y+1]
 for x in C:S[x]|=C
V=[0]*(2*n-1)+[1]
for k in range(999):
 for i in range(1,2*n-1):V[i]+=sum((V[j^1]-V[i])/N[j/2][0]for j in S[i])/9./len(S[i])
print 1/V[1]-2

সার্কিটে ভোল্টেজ শিথিল করে প্রতিরোধের গণনা করে। প্রথমে এটি 1 ওহম প্রতিরোধকের শুরুতে শুরু করে এবং সর্বশেষ রোধকে 0 ওহম থেকে 1 ওএম-তে পরিবর্তন করে। তারপরে এটি ইনপুট ভোল্টেজকে 0 এবং আউটপুট ভোল্টেজকে 1 ভোল্টে সেট করে। নেটওয়ার্কের মাধ্যমে বর্তমান প্রবাহ অনুকরণের পরে, নেটওয়ার্কের প্রতিরোধের প্রথম 1 ওহম প্রতিরোধক জুড়ে ভোল্টেজ ড্রপ ব্যবহার করে গণনা করা হয়।

প্রতিটি প্রতিরোধকের দুটি নম্বর দেওয়া হয়, তার বাম টার্মিনালের জন্য নম্বর এবং ডান টার্মিনালের জন্য নম্বর। রেজিস্টার আর এর বাম টার্মিনাল 2 * আর এবং ডান টার্মিনাল 2 * আর + 1 হয় is ইনপুট গণনা করতে ব্যবহৃত হয় S, টার্মিনালের সেট যা একসাথে সংযুক্ত রয়েছে। প্রতিটি টার্মিনালকে একটি ভোল্টেজ দেওয়া হয় V[t]এবং ভোল্টেজ বাড়িয়ে একটি শিথিলকরণ করা হয় যদি কারেন্টটি টার্মিনাল সেটে নেট প্রবাহিত হয় এবং স্রোত নেট প্রবাহিত হয় তবে ভোল্টেজ কমিয়ে দেয়।


2

(এটি একটি মন্তব্য, তবে আমি আসল মন্তব্যে আসকি শিল্প করতে পারি না ...)

কিভাবে এই ইনপুটযুক্ত কিছু?

    --1--     --3--
   /     \   /     \
---       ---       --0--
   \     /   \     /
    --2--     --4--

বিশেষত, 3 এবং 4 এর সাথে কী যুক্ত? 1 বা 2, বা উভয় 1 এবং 2?


এক এবং দু'জনেই
lochok
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.