সার্কিট কি সম্ভব?


9

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট নেয়: সমস্ত প্রতিরোধক উপলব্ধ এবং একটি প্রতিরোধের মান এবং এই প্রতিরোধকগুলি ব্যবহার করে প্রতিরোধ পাওয়ার পক্ষে সম্ভব কিনা সেগুলির সত্যবাদী মান আউটপুট করে।

নিয়মাবলী:

ইনপুট জন্য যে কোনও বিন্যাস করতে হবে।

কমপক্ষে 1 টি উপলব্ধ প্রতিরোধক থাকবে এবং আপনার প্রোগ্রামে কমপক্ষে 10 টি উপলব্ধ প্রতিরোধকের জন্য আউটপুট পাওয়া উচিত।

সমস্ত উপলব্ধ প্রতিরোধকের প্রতিরোধ এবং প্রয়োজনীয় প্রতিরোধের ইতিবাচক পূর্ণসংখ্যা হবে।

উপলব্ধ প্রতিরোধকের জন্য যদি কোনও ভগ্নাংশের মানও সম্ভব হয় তবে প্রয়োজনীয় প্রতিরোধেরটি আনুমানিক মান হতে পারে example (উদাহরণ দেখুন)

সম্ভাব্য এবং সম্ভব নয় এর জন্য আউটপুট কোনও 2 অনন্য মান হওয়া উচিত।

প্রতিরোধকগুলি যে কোনও উপায়ে সংযুক্ত থাকতে পারে।

সিরিজ প্রতিরোধ: সিরিজের এন প্রতিরোধের জন্য: ফলাফল = আর 1 + আর 2 + আর 3 + .... আরএন

সমান্তরাল প্রতিরোধের: সমান্তরাল n প্রতিরোধের জন্য: ফলাফল = 1 / (1 / আর 1 + 1 / আর 2 + 1 / আর 3 + .... + 1 / আরএন)

সার্কিটের জন্য সমস্ত প্রতিরোধকের প্রয়োজনীয় প্রতিরোধের প্রয়োজন হতে পারে না (যদি এটি হয় তবে আউটপুট সত্য)।

বিজয়ী:

এটি কোড-গল্ফ তাই সংক্ষিপ্ততম কোডের জয়।

উদাহরণ:

R     List
110   220,220 -> True
440   220,220 -> True
550   400,300 -> False
3000  1000,3000 -> True
750   1000,3000 -> True
333   1000,1000,1000 -> True (1000||1000||1000=333.333)
667   1000,1000,1000 -> True ((1000+1000)||1000=666.6666)
8000  1000,1000,7000 -> True 
190   100,200,333,344,221 -> True 
193   105,200,333,344,221 -> True
400   200,100 -> False

শেষ দুটি উদাহরণের জন্য ব্যাখ্যা: /physics/22252/resistor-circuit-that-isnt-paentall-or-series


কি টেকার 3 3 1, 3 3 2?
l4m2

1.5 কে 2 তে বৃত্তাকার করা হয়েছে, প্রয়োজনীয় প্রতিরোধের 0 দেওয়া হবে না (প্রশ্নটিতে এটি যুক্ত করা হয়েছে), 3 3 সত্য হবে
বেদন্ত কান্দোই

দুর্দান্ত চ্যালেঞ্জ, তবে আমি EE এর সাথে যেমন যথেষ্ট তেমন আচরণ করি ...

আমার মনে হয় ম্যাচেম্যাটিকের জয়?
l4m2

2
এই সমস্যাটি বর্ণনাটির চেয়ে আরও শক্তিশালী কারণ সাধারণ প্রতিরোধক সার্কিটগুলি ধারাবাহিকভাবে এবং সমান্তরাল অংশগুলিতে পুনরায় বিভাজিত হতে পারে না, শেষ দুটি পরীক্ষার মামলার চেয়ে জটিল পদ্ধতিতে। 10 টি প্রতিরোধকের পক্ষে এ জাতীয় উদাহরণগুলি দেওয়ার জন্য সহজেই যথেষ্ট হওয়া উচিত। আমার সন্দেহ হয় যে বর্তমানে পোস্ট করা উত্তরগুলির কোনওটিই সাধারণভাবে কাজ করে না এবং সঠিক উত্তরটির কোনও আকারে ম্যাট্রিক্স ইনভার্সন হওয়া দরকার।
xnor

উত্তর:


1

পাইথন 3 , 253 বাইট

import functools
def p(l): return functools.reduce(lambda z,x:z+[y+[x]for y in z],l,[[]])
print(l[-1:][0]in[round(a)for a in[sum(a)for a in p([sum(a)for a in p(l)]+[1/sum(c)for c in[[1/b for b in a if b!=0]for a in p(l).copy()]if sum(c)!=0])]])

আমি সমস্ত প্রতিরোধকের মানগুলির পাওয়ারসেট গ্রহণ করি এবং তারপরে প্যারালেলের জন্য সিরিজের জন্য যোগফলগুলি এবং 1 / যোগফল (1 / মান) গণনা করি এবং তারপরে আমি এই দুটি সেটগুলির পাওয়ারসেট গ্রহণ করি। আপনি যখন সমস্ত সাবসেটের যোগফল নিয়ে সেটে সেট করে রাখেন তখন এই সেট ইটারের মান থাকে বা না থাকে। -> সত্য / মিথ্যা প্রত্যাবর্তন

@ পদক্ষেপ ধন্যবাদ :)


2
পিপিসিজিতে আপনাকে স্বাগতম! আপনার যদি কোনও আমদানির প্রয়োজন হয় তবে সেগুলি আপনার কোডে অন্তর্ভুক্ত করা দরকার। অতিরিক্তভাবে, ইনপুটটি ভেরিয়েবলের মধ্যে রয়েছে তা ধরে নেওয়ার পরিবর্তে আপনাকে নিজের ইনপুটগুলি গ্রহণ করতে হবে। এছাড়াও, b != 0-> b!=0
স্টিফেন

স্টিফেন সওড হিসাবে, আপনি একটি পূর্বনির্ধারিত ভেরিয়েবলের মাধ্যমে ইনপুট নিতে পারবেন না, অন্যথায় এটি একটি স্নিপেট, যা অনুমোদিত নয় not আপনার এটি কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রামে পরিবর্তন করা উচিত
জো কিং

1
এটি কাজ করে না তৃতীয় টেস্টে ক্ষেত্রে (। যদি আপনি আমি কিছু একটা ভাঙলাম চিন্তিত করছি এছাড়াও, golfed একটি বিট এবং সঠিক ইনপুট সঙ্গে আপনার মূল কোড পারেন কাজ করে না)
জো রাজা

শালা। আমি একবার দেখে
নিচ্ছি

1

জাপট , 52 বাইট

à má

ÈÊ<2?X:X¯1 ïXÅgW @[X+Y1/(1/XÄ/Y]Ãc
mmW c mr øV

চেষ্টা করে দেখুন!

এটি একটি শক্ত কাজ ছিল এবং এটিকে কাজ করতে আমাকে বেশ কয়েকটি অদ্ভুত জিনিস করতে হয়েছিল। আমি গাণিতিকভাবে প্রমাণ করতে পারি না যে এটি সব কিছুর জন্য কাজ করে তবে এটি সমস্ত পরীক্ষার ক্ষেত্রে যেমন আমার অতিরিক্ত প্রস্তাবিত পরীক্ষার ক্ষেত্রে কাজ করে । বিশেষত, আমি জানি যে আমি যে ফাংশনটি কল করেছি Wতা তার ইনপুটটিতে প্রতিরোধকের ক্রমের উপর নির্ভর করে বিভিন্ন ফলাফল দেয় যাতে আমি এটি প্রতিরোধকের প্রতিটি সম্ভাব্য সংমিশ্রণের প্রতিটি সম্ভাব্য ক্রম অনুসারে চালিত করি। আমি আরও জানি যে এটি প্রতিরোধের একটি তালিকা তৈরি করবে যা ইনপুট প্রতিরোধক ব্যবহার করে তৈরি করা সম্ভব। আমি 100% নিশ্চিততার সাথে জানি না যে এই দুটি জিনিস একসাথে প্রতিটি সম্ভাব্য প্রতিরোধের সাথে শেষ হয়।

ব্যাখ্যা:

à       Get each combination e.g. [1,2,3] -> [[1,2,3],[1,2],[1,3],[2,3],[1],[2],[3]]
  m     For each combination...
   á    Get each order e.g. [1,2,3] -> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

    Skip a line to avoid overwriting the target resistance

È                                     Define a function W taking an array input X:
 Ê<2?X                                  If X is only 1 resistor, return it as-is
            XÅgW                        Get the resistances from applying W to the tail of X
       X¯1 ï                            Pair the first resistor with each possible tail resistance
                 @[            ]Ã       For each pair get these two values:
                   X+Y                    Those resistances in series
                      1/(1/XÄ/Y           Those resistances in parallel
                                 c      Collapse all those resistances into a single flat list

mmW            For each combination and order, get the resistances using W
    c          Collapse to a single list of resistances
      mr       Round each one
         øV    Return true if the target resistance is in the list, false otherwise

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