তিনটি পৃথক ডাইস


12

একটি পরিষ্কার ঘনক্ষেত্র তিনটি পাশা

সাজানো ক্রমে তিনটি ডাইস রোল (1-6 থেকে পূর্ণসংখ্যার মানগুলি) দেওয়া (যাতে অবিচ্ছেদ্য হতে পারে), একটি অভিন্ন বিতরণের মাধ্যমে তাদের দুটি ফর্সা ডাইসের যোগফলে রূপান্তর করুন

তিন থেকে একটির জন্য উত্তরগুলি সমস্তটি সংক্ষিপ্ত করে রাখে, মডেল 6 The শেষ ফলাফলটি পুরোপুরি সমতল বিতরণ, যেখানে ছয় সংখ্যার প্রত্যেকেরই সমান সম্ভাবনা থাকে (ঠিক এককভাবে মারা যাওয়ার মতো)।

তিনটি থেকে একের জন্য এটি করা সহজ, সমস্তগুলিকে 6 মডিউলগুলি সংশ্লেষ করে শেষ ফলাফলটি একটি পুরোপুরি সমতল বিতরণ, যেখানে ছয় সংখ্যার প্রত্যেকেরই সমান সম্ভাবনা থাকে (ঠিক এককভাবে মারা যাওয়ার মতো)। আপনার চ্যালেঞ্জটি তিন-টু-দুজনের জন্য একই কাজ করা do

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

নির্দেশনা

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা তিনটি সাজানো পূর্ণসংখ্যা / সংখ্যা, 1-6 স্বীকৃতি দেয় এবং আউটপুটগুলি দেয় বা একটি একক পূর্ণসংখ্যকে 2-12 দেয়, যেমন 216 সম্ভাব্য ইনপুটগুলির জন্য আউটপুটগুলি বিতরণ করা হয়:

 222222
 333333333333
 444444444444444444
 555555555555555555555555
 666666666666666666666666666666
 777777777777777777777777777777777777
 888888888888888888888888888888
 999999999999999999999999
 AAAAAAAAAAAAAAAAAA
 BBBBBBBBBBBB
 CCCCCC

(আমি একক অক্ষর ধরে রাখতে হেক্স ব্যবহার করেছি; দশমিক আউটপুট ভাল)

পাশা অবিচ্ছিন্ন কারণ, তাদের কাছে কোনও অভ্যন্তরীণ ক্রম নেই, সুতরাং সাজানো ইনপুট। আপনি কেবল "তৃতীয়টি বাদ দিতে" পারবেন না কারণ এটি দ্ব্যর্থক হবে।

বিস্তারিত

  • স্কোর হ'ল বাইটে প্রোগ্রামের দৈর্ঘ্য
  • প্রোগ্রামটি এমন কোনও ফাংশন হতে পারে যা বলা যায় কোনওরকম, বা এক্সিকিউটেবল স্ক্রিপ্ট যা স্টিডিনের কাছ থেকে পড়ে বা যা কিছু সন্তুষ্ট।
  • অন্য উত্স থেকে এন্ট্রপি পেয়ে কোনও "পুনরায় তালিকাভুক্ত" নয়

উদাহরণ (এবং পরীক্ষা)

কোনও ধরণের সম্ভাব্যতা পরীক্ষা করার পরিবর্তে, তিনটি পাশার 216 (6³) কেস কেটে ফেলা যথেষ্ট সহজ এবং আপনার ফাংশনটি প্রতিটি মানকে যতবার করা উচিত তার চেয়ে বহুগুণ ফেরত দেয় তা জোর দিয়ে বলা যায়। এটি অভিন্ন পরামিতিগুলির সাথে ডাকা হবে (যেমন কেসগুলি 1, 2, 3এবং 3, 2, 1, ... পৃথক পৃথক বলে ধরা হয় এবং এগুলি (নির্বিচারে রূপান্তরিত হয় 1, 2, 3))।

পাইথনের নীচে উদাহরণের উত্তর (অত্যন্ত নিষ্ঠুর শক্তি এবং অদক্ষ) এবং পরীক্ষার স্যুট সরবরাহ করা হয়েছে। আশা করি পরীক্ষার বিটগুলি আপনার পছন্দের ভাষাটিতে পোর্ট করার পক্ষে যথেষ্ট স্পষ্ট, যদিও স্টিডিন / স্টাডআউট করা কিছুটা আলাদা হবে। টেস্টিং কোডটি কেবল পরীক্ষার জন্য এবং স্কোর না করার জন্য (যদিও আপনি এটি আপনার ভাষা বা I / O পদ্ধতির অন্য ব্যবহারকারীদের জন্য সরবরাহ করতে চান তবে এটি কার্যকর হতে পারে)।

# 6x6 lists of numbers with digits sorted
LUT = [
    [[124], [133, 166], [346], [223, 355], [256], [115, 445]],
    [[233, 266], [125], [224, 455], [134], [116, 446], [356]],
    [[126], [111, 333, 555, 225], [234], [144, 366], [456], [135]],
    [[112, 244], [235], [334, 466], [145], [226, 556], [136]],
    [[146], [122, 155], [236], [113, 344], [245], [335, 566]],
    [[246], [123], [114, 336], [345], [222, 444, 666, 255], [156]],
]

def three2two(rolls):
    look_for = int('{}{}{}'.format(*sorted(rolls)))
    for i in range(6):
        for j in range(6):
            if look_for in LUT[i][j]:
                return i + j + 2

# fair distribution of the sum of two dice multiplied by 6 (because each should be hit 6x)
expected_counts = {
    2: 6,   12: 6,
    3: 12,  11: 12,
    4: 18,  10: 18,
    5: 24,   9: 24,
    6: 30,   8: 30,
    7: 36,
}

d = [1, 2, 3, 4, 5, 6]
for i in d:
    for j in d:
        for k in d:
            ijk = sorted([i, j, k])
            result = three2two(ijk)
            expected_counts[result] -= 1

for key in expected_counts:
    assert expected_counts[key] == 0

2
আমি প্রশ্নটি বেশ কয়েকবার পড়েছি এবং এটি কী জিজ্ঞাসা করছে সে সম্পর্কে সামান্য ধারণা নেই।

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

আমি মনে করি এটি পেয়েছি। প্রশ্নটি তিনটি ডাইস রোল থেকে দুটি ডাইস রোলগুলিতে কিছু সীমাবদ্ধতার সাথে মানচিত্র করতে বলছে।
ফাঁস নুন

2
আপনি দুটি ডাইস দিয়ে এটি তৈরি করছেন না , আপনি দুটি রোল অনুকরণ করতে তিনটি রোল ব্যবহার করছেন।
নিক টি

2
উভয় (a+b+c)%6+1এবং (a*b*c)%7অবারিত ডাইসের এক ট্রিপলকে অভিন্ন একক ডাই রোলে রূপান্তরিত করুন, তবে দুর্ভাগ্যক্রমে সম্ভবত সম্ভাব্যভাবে স্বাধীন নয়।
xnor

উত্তর:


5

জেলি , 22 20 বাইট

6ṗ3Ṣ€ṢðQ€L€Ụịḷi’:6d6‘S

এটি অনলাইন চেষ্টা করুন! বা সমস্ত 216 ফলাফল অনুকরণ

পটভূমি

আমরা পাশের রোলগুলির প্রত্যেকটি অর্ডারযুক্ত ট্রিপলেট (স্বতন্ত্র গুণাগুলির সাথে তালিকাভুক্ত) ম্যাপ করি নিম্নলিখিত ফ্যাশনে ডাইস রোলগুলির একটি অর্ডারযুক্ত জোড়ায়:

[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3] -> [1,1]
[1,2,4],[1,2,4],[1,2,4],[1,2,4],[1,2,4],[1,2,4] -> [1,2]
[1,2,5],[1,2,5],[1,2,5],[1,2,5],[1,2,5],[1,2,5] -> [1,3]
[1,2,6],[1,2,6],[1,2,6],[1,2,6],[1,2,6],[1,2,6] -> [1,4]
[1,3,4],[1,3,4],[1,3,4],[1,3,4],[1,3,4],[1,3,4] -> [1,5]
[1,3,5],[1,3,5],[1,3,5],[1,3,5],[1,3,5],[1,3,5] -> [1,6]
[1,3,6],[1,3,6],[1,3,6],[1,3,6],[1,3,6],[1,3,6] -> [2,1]
[1,4,5],[1,4,5],[1,4,5],[1,4,5],[1,4,5],[1,4,5] -> [2,2]
[1,4,6],[1,4,6],[1,4,6],[1,4,6],[1,4,6],[1,4,6] -> [2,3]
[1,5,6],[1,5,6],[1,5,6],[1,5,6],[1,5,6],[1,5,6] -> [2,4]
[2,3,4],[2,3,4],[2,3,4],[2,3,4],[2,3,4],[2,3,4] -> [2,5]
[2,3,5],[2,3,5],[2,3,5],[2,3,5],[2,3,5],[2,3,5] -> [2,6]
[2,3,6],[2,3,6],[2,3,6],[2,3,6],[2,3,6],[2,3,6] -> [3,1]
[2,4,5],[2,4,5],[2,4,5],[2,4,5],[2,4,5],[2,4,5] -> [3,2]
[2,4,6],[2,4,6],[2,4,6],[2,4,6],[2,4,6],[2,4,6] -> [3,3]
[2,5,6],[2,5,6],[2,5,6],[2,5,6],[2,5,6],[2,5,6] -> [3,4]
[3,4,5],[3,4,5],[3,4,5],[3,4,5],[3,4,5],[3,4,5] -> [3,5]
[3,4,6],[3,4,6],[3,4,6],[3,4,6],[3,4,6],[3,4,6] -> [3,6]
[3,5,6],[3,5,6],[3,5,6],[3,5,6],[3,5,6],[3,5,6] -> [4,1]
[4,5,6],[4,5,6],[4,5,6],[4,5,6],[4,5,6],[4,5,6] -> [4,2]
[1,2,2],[1,2,2],[1,2,2],[1,3,3],[1,3,3],[1,3,3] -> [4,3]
[1,4,4],[1,4,4],[1,4,4],[1,5,5],[1,5,5],[1,5,5] -> [4,4]
[1,6,6],[1,6,6],[1,6,6],[2,3,3],[2,3,3],[2,3,3] -> [4,5]
[2,4,4],[2,4,4],[2,4,4],[2,5,5],[2,5,5],[2,5,5] -> [4,6]
[2,6,6],[2,6,6],[2,6,6],[3,4,4],[3,4,4],[3,4,4] -> [5,1]
[3,5,5],[3,5,5],[3,5,5],[3,6,6],[3,6,6],[3,6,6] -> [5,2]
[4,5,5],[4,5,5],[4,5,5],[4,6,6],[4,6,6],[4,6,6] -> [5,3]
[5,6,6],[5,6,6],[5,6,6],[1,1,2],[1,1,2],[1,1,2] -> [5,4]
[1,1,3],[1,1,3],[1,1,3],[1,1,4],[1,1,4],[1,1,4] -> [5,5]
[1,1,5],[1,1,5],[1,1,5],[1,1,6],[1,1,6],[1,1,6] -> [5,6]
[2,2,3],[2,2,3],[2,2,3],[2,2,4],[2,2,4],[2,2,4] -> [6,1]
[2,2,5],[2,2,5],[2,2,5],[2,2,6],[2,2,6],[2,2,6] -> [6,2]
[3,3,4],[3,3,4],[3,3,4],[3,3,5],[3,3,5],[3,3,5] -> [6,3]
[3,3,6],[3,3,6],[3,3,6],[4,4,5],[4,4,5],[4,4,5] -> [6,4]
[4,4,6],[4,4,6],[4,4,6],[5,5,6],[5,5,6],[5,5,6] -> [6,5]
[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[6,6,6] -> [6,6]

এটি সমস্ত ফলাফলকে সজ্জিত করে তোলে।

কিভাবে এটা কাজ করে

6ṗ3Ṣ€ṢðĠ€Ụịḷi’:6d6‘S  Main link. Argument: D (three dice rolls, sorted)

6ṗ3                     Generate lists of length 3 over [1, 2, 3, 4, 5, 6].
   Ṣ€                   Sort each triplet.
     Ṣ                  Sort the list of triplets.
      ð                 Begin a new, dyadic chain.
                        Arguments: A (list of triplets), D
       Ġ€               Group each; group the indices of each triplet by the
                        the corresponding values.
                        For a triplet [a, b, c], this yields:
                          [[1], [2], [3]] if a < b < c
                          [[1], [2, 3]]   if a < b = c
                          [[1, 2], [3]]   if a = b < c
                          [[1, 2, 3]]     if a = b = c
           Ụ            Grade up; sort the indices of A by those 2D lists.
            ịḷ          Retrieve the elements of A at those indices.
                        This sorts A as in the previous section.
              i         Find the (1-based) index of D.
               ’        Decrement to get the 0-based index.
                :6      Divide the index by 6, rounding down.
                  d6    Divmod; return quotient and remainder of division by 6.
                    ‘   Increment to map [0, ..., 5] to [1, ..., 6].
                     S  Sum the results.

1

সিজেম, 25 24 বাইট

6Zm*{$e`z}$q~:(a#6bW2t1b

এটি আমার জেলি উত্তরের একটি বন্দর ।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত 216 ফলাফল অনুকরণ

1 বাইট বন্ধ করে গল্ফ করার জন্য @ জিমি 23013 কে ধন্যবাদ


আচ্ছা, আমি একটা উত্তর পোস্ট করার আগে আপনার কোড পড়া থাকা উচিত ... কিন্তু কিছু সহজ গলফ: 6bW2t1b
জিমি 23013

@ jimmy23013 সুন্দর। ধন্যবাদ!
ডেনিস

1

পাইথ, 41 27 বাইট

JSSM^S6 3+2sPtj+216xo/JNJQ6

10 এলোমেলো টেস্টকেস

বৈধতা নিশ্চিতকরণ।

রূপান্তর টেবিল:

2: [111, 222, 333, 444, 555, 666]
3: [112, 113, 223, 224]
4: [114, 115, 225, 226, 355, 366]
5: [116, 122, 125, 233, 244, 445, 446]
6: [126, 133, 144, 146, 255, 266, 455, 466]
7: [134, 155, 156, 166, 246, 334, 335, 556, 566]
8: [123, 135, 234, 256, 336, 344]
9: [124, 136, 235, 345]
10: [145, 236, 346]
11: [245, 356]
12: [456]

পূর্ববর্তী 41-বাইট সমাধান:

আমার এটি গল্ফ করা উচিত ...

JSM^S6 3+2f/@co,/JNNJ.u+NY*R6t+S5_S6 6TQ0

এটি অনলাইন চেষ্টা করুন!

রূপান্তর টেবিল:

2: [111, 222, 333, 444, 555, 666]

3: [112, 113, 114, 115]

4: [116, 122, 133, 144, 155, 166]

5: [223, 224, 225, 226, 233, 244, 255, 266]

6: [334, 335, 336, 344, 355, 366, 445, 446, 455, 466]

7: [556, 566, 123, 124, 125, 126, 134]

8: [135, 136, 145, 146, 156]

9: [234, 235, 236, 245]

10: [246, 256, 345]

11: [346, 356]

12: [456]

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