ট্রানজিস্টরের সংযুক্তি


20

ভিডিও গেম ট্রানজিস্টার একটি খুব আকর্ষণীয় ক্ষমতা সিস্টেম বৈশিষ্ট্যযুক্ত। আপনি 16 "ফাংশন" সংগ্রহ করেন যা আপনি 16 টি বিভিন্ন স্লটে ব্যবহার করতে পারেন। মজার বিষয়টি হ'ল এখানে 3 ধরণের স্লট রয়েছে এবং প্রতিটি ফাংশনটি আপনি কোন স্লটে এতে ব্যবহার করেন সে অনুযায়ী আলাদাভাবে আচরণ করে:

  • এখানে 4 টি প্যাসিভ স্লট রয়েছে
  • আছে 4 সক্রিয় স্লট
  • প্রতিটি সক্রিয় স্লট রয়েছে 2 আপগ্রেড স্লট

আমরা কতগুলি বিভিন্ন দক্ষতা সেট দেয় তা নির্ধারণ করতে চাই।

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

সুতরাং, ফাংশনগুলির জন্য দাঁড়ানোর জন্য হেক্সাডেসিমাল ডিজিটগুলি ব্যবহার করে, নিম্নলিখিত সংমিশ্রণগুলি সমস্ত সমতুল্য:

Passive Slots:    0     1     2     3
Active Slots:     4     5     6     7
Upgrade Slots:   8 9   A B   C D   E F

Passive Slots:    2     0     1     3    # Permutation of passive slots.
Active Slots:     4     5     6     7
Upgrade Slots:   8 9   A B   C D   E F

Passive Slots:    0     1     2     3
Active Slots:     5     6     4     7    # Permutation of active slots together
Upgrade Slots:   A B   C D   8 9   E F   # with their upgrade slots.

Passive Slots:    0     1     2     3
Active Slots:     4     5     6     7
Upgrade Slots:   8 9   B A   C D   F E   # Permutation within upgrade slots.

পাশাপাশি এই পুনঃরুদ্ধারগুলির কোনও সংমিশ্রণ। নোট করুন যে তৃতীয় ক্ষেত্রে একই সামগ্রিক প্রভাব বজায় রাখতে আপগ্রেড স্লটগুলি অ্যাক্টিভ স্লটগুলির সাথে অদলবদল করা হয়েছিল।

অন্যদিকে, নিম্নলিখিত সংমিশ্রণগুলি উপরের সেট থেকে সমস্ত পৃথক:

Passive Slots:    4     5     6     7    # Passive slots swapped
Active Slots:     0     1     2     3    # with active slots.
Upgrade Slots:   8 9   A B   C D   E F

Passive Slots:    0     1     2     3
Active Slots:     5     4     6     7    # Permutation of active slots without
Upgrade Slots:   8 9   A B   C D   E F   # changing upgrade slots.

Passive Slots:    0     1     2     3
Active Slots:     4     5     6     7
Upgrade Slots:   8 A   9 B   C D   E F   # Permutation between different upgrade slots.

আমার গণনা অনুসারে যা আপনাকে সমস্ত ফাংশন ব্যবহার করা হয়েছে তা ধরে নিয়েই 2,270,268,000 টি সম্ভাব্য (কার্যকরীভাবে স্বতন্ত্র) সংমিশ্রণ দেয়।

আপনার কাছে যদি 16 টিরও কম ফাংশন থাকে তবে কিছু স্লট ফাঁকা থাকবে। তবে নোট করুন যে প্যারেন্ট অ্যাক্টিভ স্লট ফাঁকা থাকলে আপনি একটি আপগ্রেড স্লটে কোনও ফাংশন রাখতে পারবেন না।

চ্যালেঞ্জ

আপনার কতগুলি কার্যকারিতা রয়েছে তার উপর নির্ভর করে আপনি সম্ভাব্য কনফিগারেশনের সংখ্যা নির্ধারণ করতে পারবেন। তদ্ব্যতীত, তুচ্ছ হার্ডকোডিং সমাধানগুলি রোধ করার জন্য, আমি স্লটের সংখ্যাটি পরিবর্তনশীল করে সমস্যাটিকে কিছুটা সাধারণ করব।

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা দুটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয় M ≥ 1এবং প্যাসিভ, অ্যাক্টিভ এবং আপগ্রেড স্লটগুলির যতটা সম্ভব পূরণ করতে ব্যবহৃত হয় 1 ≤ N ≤ 4Mঠিক এমন Nবিভিন্ন ধরণের দক্ষতা সেটগুলি (কার্যকরীভাবে স্বতন্ত্র) দক্ষতার সেটগুলি নির্ধারণ করে ।MM2M

আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।

আপনার কোড অবশ্যই M = 8একটি যুক্তিসঙ্গত ডেস্কটপ মেশিনে এক মিনিটের মধ্যে এবং কোনও ইনপুট আপ পরিচালনা করতে সক্ষম হতে হবে । এটিতে কিছুটা অবকাশ রয়েছে, তবে এটি ব্রুট ফোর্স সলিউশনগুলি বাতিল করে দেয়। নীতিগতভাবে এটি যে কোনও ইনপুট এক সেকেন্ডেরও কম সময়ে সমাধান করার কোনও সমস্যা হবে না।

এটি কোড গল্ফ, সংক্ষিপ্ত উত্তর (বাইটে) জিতেছে।

পরীক্ষার মামলা

প্রতিটি পরীক্ষার কেস ফর্মের মধ্যে রয়েছে M N => Result

1 1 => 2
1 2 => 4
1 3 => 9
1 4 => 12
2 1 => 2
2 2 => 6
2 3 => 21
2 4 => 78
2 5 => 270
2 6 => 810
2 7 => 1890
2 8 => 2520
3 1 => 2
3 2 => 6
3 3 => 23
3 4 => 98
3 5 => 460
3 6 => 2210
3 7 => 10290
3 8 => 44520
3 9 => 168840
3 10 => 529200
3 11 => 1247400
3 12 => 1663200
4 1 => 2
4 2 => 6
4 3 => 23
4 4 => 100
4 5 => 490
4 6 => 2630
4 7 => 14875
4 8 => 86030
4 9 => 490140
4 10 => 2652300
4 11 => 13236300
4 12 => 59043600
4 13 => 227026800
4 14 => 718918200
4 15 => 1702701000
4 16 => 2270268000
5 1 => 2
5 2 => 6
5 3 => 23
5 4 => 100
5 5 => 492
5 6 => 2672
5 7 => 15694
5 8 => 98406
5 9 => 644868
5 10 => 4306932
5 11 => 28544670
5 12 => 182702520
5 13 => 1101620520
5 14 => 6122156040
5 15 => 30739428720
5 16 => 136670133600
5 17 => 524885961600
5 18 => 1667284819200
5 19 => 3959801445600
5 20 => 5279735260800
6 1 => 2
6 2 => 6
6 3 => 23
6 4 => 100
6 5 => 492
6 6 => 2674
6 7 => 15750
6 8 => 99862
6 9 => 674016
6 10 => 4787412
6 11 => 35304654
6 12 => 265314588
6 13 => 1989295308
6 14 => 14559228684
6 15 => 101830348620
6 16 => 667943115840
6 17 => 4042651092480
6 18 => 22264427465280
6 19 => 110258471363040
6 20 => 484855688116800
6 21 => 1854067032417600
6 22 => 5894824418683200
6 23 => 14025616720315200
6 24 => 18700822293753600
7 1 => 2
7 2 => 6
7 3 => 23
7 4 => 100
7 5 => 492
7 6 => 2674
7 7 => 15752
7 8 => 99934
7 9 => 676428
7 10 => 4849212
7 11 => 36601554
7 12 => 288486132
7 13 => 2349550632
7 14 => 19504692636
7 15 => 162272450340
7 16 => 1328431104000
7 17 => 10507447510560
7 18 => 78942848624640
7 19 => 554967220167360
7 20 => 3604592589998400
7 21 => 21411337810262400
7 22 => 115428212139240000
7 23 => 561247297649438400
7 24 => 2439121536313862400
7 25 => 9283622495827680000
7 26 => 29520583763711040000
7 27 => 70328449554723360000
7 28 => 93771266072964480000
8 1 => 2
8 2 => 6
8 3 => 23
8 4 => 100
8 5 => 492
8 6 => 2674
8 7 => 15752
8 8 => 99936
8 9 => 676518
8 10 => 4852992
8 11 => 36722169
8 12 => 291621462
8 13 => 2418755196
8 14 => 20834571186
8 15 => 184894557705
8 16 => 1672561326150
8 17 => 15217247948760
8 18 => 137122338089880
8 19 => 1204392465876600
8 20 => 10153538495100000
8 21 => 81007229522419200
8 22 => 604136189949692400
8 23 => 4168645459350372000
8 24 => 26403795950145213600
8 25 => 152700324078982680000
8 26 => 803784718213396920000
8 27 => 3838761204861983400000
8 28 => 16503742828841748480000
8 29 => 62545434470667308160000
8 30 => 198853691115980300400000
8 31 => 474189571122722254800000
8 32 => 632252761496963006400000

আপনার কোডটি এক মিনিটের মধ্যে (প্রতিটি) হ্যান্ডেল করতে হয় এমন সমস্ত ইনপুট, তবে এটি নীতিগতভাবে বৃহত্তর ইনপুটগুলির জন্য কাজ করা উচিত। আপনি এটি M = 10পরীক্ষা করতে নিম্নলিখিত কয়েকটি পরীক্ষার কেস ব্যবহার করতে পারেন :

10 1 => 2
10 2 => 6
10 3 => 23
10 4 => 100
10 5 => 492
10 6 => 2674
10 7 => 15752
10 8 => 99936
10 9 => 676520
10 10 => 4853104
10 11 => 36727966
10 12 => 291849866
10 13 => 2426074222
10 14 => 21033972388
10 15 => 189645995396
10 16 => 1773525588406
10 17 => 17155884420532
10 18 => 171073929494468
10 19 => 1750412561088334
10 20 => 18258387148774916
10 21 => 192475976310317700
10 22 => 2028834600633220380
10 23 => 21127206177119902860
10 24 => 214639961631544809360
10 25 => 2101478398293813739200
10 26 => 19602967930531817832000
10 27 => 172444768103233181556000
10 28 => 1417975382888905296456000
10 29 => 10820259026484304813416000
10 30 => 76213534343700480310584000
10 31 => 493916052421168703366040000
10 32 => 2941900199368102067135040000
10 33 => 16113144277547868007416960000
10 34 => 81222252655277786422930560000
10 35 => 376309102059179385262246080000
10 36 => 1589579966324953534441910400000
10 37 => 5981477408861097281112374400000
10 38 => 19005991357166148698688124800000
10 39 => 45381652832417130566255318400000
10 40 => 60508870443222840755007091200000

যতটা সম্ভব স্লট পূরণ করা বাধ্যতামূলক?
শুক্রবার 27'15

7
আমার ধারণা আমি আপনাকে উত্তর দেওয়ার turn()আগে আমার আরও অপেক্ষা করেছিলাম , না হলে আমি এবং ..... ম্যান এর পরে আপনার আমার দরকার হতে পারে ...help()get()load()ping()void()spark()crash()
ফ্রাইআম

@ ফেয়ারসাম হ্যাঁ, সমস্ত Nফাংশন ব্যবহৃত হচ্ছে।
মার্টিন এন্ডার

উত্তর:


18

সিজেএম (56 বাইট)

q~4@:Nm*:$_&{:+1$\-N),&},f{1$1$:+-\0-:(_e`0f=+++:m!:/}:+

অনলাইন ডেমো

NnkmnMN

X0XMNXN!X!(NX)!NXM3

λ0,λ1,,λkλ0λ1(NX)!λ0!λ1!...λk!λi=λjμi3 2 2 1μ3=1μ2=2μ1=1λiλi

সুতরাং প্রতিটি বিভাজনের জন্য ফাংশন বিতরণ সংখ্যা হয়

N!X!(λ01)!(λk1)!μ1!μ2!μ3!

উপরের কোডটি ডেনিসের মতো একই পদ্ধতির ব্যবহার করে পার্টিশনগুলি গণনা করে (এটি স্পষ্ট এবং সংক্ষিপ্ত, যদিও খুব পরিমাণে স্কেলযোগ্য নয়) এবং তারপরে প্রতিটি পার্টিশনকে এমন একটি অ্যারে রূপান্তর [N X λ_0-1 ... λ_k-1 μ_1 μ_2 μ_3]করে যার উপর দিয়ে এটি ফ্যাক্টরিয়াল ফাংশনটি উত্তোলন করতে পারে এবং তারপরে বিভাগ ভাঁজ করতে পারে।


9

সিজেম, 74 67 বাইট

q~4@:Mm*:$L|{:+W$\-M),&},f{0-:F1@@{_m!\I-:Nm!/I(m!/*N}fI;Fm!Fe=/}:+

আমি আমার ডেস্কটপ কম্পিউটারে জাভা ইন্টারপ্রেটার ব্যবহার করে সমস্ত পরীক্ষার কেস যাচাই করেছি । এটি 1 ≤ এম ≤ 8 এবং এম = 10 এর জন্য 3.5 মিনিটের জন্য 2.2 সেকেন্ড সময় নিয়েছে ।

ব্যবহার করে দেখুন এই বেহালার CJam অনুবাদক অথবা একবারে প্রথম 84 পরীক্ষার বিষয় যাচাই

ধারণা

নীতিগতভাবে, আমরা প্রতিটি সক্রিয় স্লট এবং এর সম্পর্কিত আপগ্রেড স্লটগুলিকে 0 , 1 , 2 বা 3 ফাংশন দিয়ে পূরণ করতে পারি। জন্য 4M মোট স্লট, আমরা সব ভেক্টর নেওয়া ভী এর {0, 1, 2, 3} এম এবং যা জন্য ঐ আউট ফিল্টার সমষ্টি (v)> এন অথবা (অ প্যাসিভ প্রাপ্তিসাধ্য মোট ফাংশন চেয়ে স্লট আরও ফাংশন) SUM ( ভি) + এম <এন (অ-সক্রিয় ফাংশনের জন্য পর্যাপ্ত প্যাসিভ স্লট নয়)। স্লট পরিবারের ক্রমটি গুরুত্বপূর্ণ নয় বলে আমরা সমস্ত রক্ষিত ভেক্টরকে বাছাই এবং নকল করি।

সঙ্গে এন কার্যকারিতা ও ভী = (x এর 1 , ..., x এম ) স্লট পরিবারের অ প্যাসিভ অংশে ফাংশন, আমরা সমাহারের সংখ্যা নিম্নরূপ নিরূপণ:

  1. যদি এক্স 1 = 0 হয় তবে সেই স্লট পরিবারের জন্য কেবল একটি সম্ভাবনা রয়েছে।

    যদি এক্স 1 = 1 হয় তবে এন সম্ভাবনা রয়েছে, যেহেতু আমাদের এন ফাংশন রয়েছে এবং ফাংশনটি অবশ্যই সক্রিয় স্লটে যেতে হবে।

    যদি এক্স 1 = 2 হয় তবে আমাদের অবশ্যই একটি ক্রিয়াকলাপ সক্রিয় স্লটে এবং অন্যটি একটি আপগ্রেড স্লটে রাখতে হবে (এটি কোনও বিষয় নয়)। আছে এন সক্রিয় স্লট এবং জন্য পছন্দ এন -1 আপগ্রেড স্লট অবশিষ্ট পছন্দ, একটি মোট দান এন (এন -1) সমন্বয়।

    যদি এক্স 1 = 3 , সক্রিয় স্লটের জন্য এন পছন্দ আছে , প্রথম আপগ্রেড স্লটের জন্য এন - 1 টি পছন্দ আছে এবং দ্বিতীয় আপগ্রেড স্লটের জন্য এন - 2 থাকবে । যেহেতু আপগ্রেড স্লটগুলির কোনও অর্ডার নেই, তাই এটি প্রতিটি সংমিশ্রণকে দুবার গণনা করে, সুতরাং এন (এন - 1) (এন - 2) অনন্য সংমিশ্রণ রয়েছে।

    যে কোনও ক্ষেত্রে, এন আছে! / ((এন - এক্স 1 )! × (এক্স 1 - 1)! এই পরিবারের জন্য সংমিশ্রণগুলি।

  2. আমরা এক্স 1 ফাংশন ব্যবহার করেছি , সুতরাং এন: = এন - এক্স 1 সেট করুন এবং এক্স 2 এর জন্য ধাপ 1 পুনরাবৃত্তি করুন , তারপর এক্স 3 ইত্যাদি etc.

  3. ভিতে যদি সদৃশ থাকে তবে উপরের ফলাফলের পণ্যটিতে সমস্ত সংমিশ্রণ একাধিকবার গণনা করা হবে। ভি এর প্রতিটি অনন্য উপাদানের জন্য , যদি এটি ভিতে আর বার হয় তবে সেখানে আর রয়েছে! এই স্লট পরিবারগুলি সাজানোর সমতুল্য উপায়, সুতরাং উপরের ফলাফলটি অবশ্যই আর দ্বারা বিভক্ত হতে হবে !

  4. চূড়ান্ত ফলাফলটি হ'ল ভি এর জন্য অনন্য সংমিশ্রণের সংখ্যা ।

অনন্য সংমিশ্রনের মোট সংখ্যার গণনা করতে, যা করতে বাকি তা হ'ল প্রতিটি ভি এর ফলাফলের যোগফল গণনা করা ।

কোড

q~        e# Read an evaluate all input from STDIN. Pushes M and N.
4@:M      e# Push 4, rotate the M, and formally save it in M.
m*        e# Push {0, 1, 2, 3}^M.
:$        e# Sort each vector.
L|        e# Perform set union with the empty list (deduplicates).
{         e# For each sorted vector:
  :+      e#   Compute the sum of its coordinates.
  W$\-    e#   Subtract the sum from N (bottom of the stack).
  M),&    e#   Push [0 ... M] and intersect.
},        e# If the intersection was not empty, keep the vector.
f{        e# For each kept vector, push N and V; then:
  0-:F    e#   Save the non-zero elements of V in F.
  1@@     e#   Push 1 (accumulator), and rotate N and F on top of it.
  {       e#   For each I in F:
    _m!   e#     Push I and push factorial(I).
    \I-:N e#     Subtract I from N and update N.
    m!/   e#     Divide factorial(N) (original N) by factorial(N) (updated N).
    I(m!/ e#     Divide the quotient by factorial(I - 1).
    *     e#    Multiply the accumulator by the resulting quotient.
    N     e#    Push N for the next iteration.
  }fI     e#
  ;       e#   Pop N.
  Fm!     e#   Push all non-unique permutations of F.
  Fe=     e#   Count the number of times F appears.
  /       e#   Divide the accumulator by the result.
}         e#
:+        e# Add all resulting quotients.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.