কোন ডোমিনো নিখোঁজ?


34

একটি স্ট্যান্ডার্ড ডোমিনো সেটে 28 টি স্বতন্ত্র টুকরো রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

28 বা তারও কম স্বতন্ত্র ডোমিনোজের একটি তালিকা দেওয়া হয়েছে, একটি সম্পূর্ণ সেট তৈরি করতে প্রয়োজনীয় তালিকাটিকে আউটপুট দিন।

ইনপুট এবং আউটপুট dominoes দুটি সংখ্যা দ্বারা নির্দিষ্ট হয় - ডমিনো প্রতিটি পাশ দিয়ে পিপস সংখ্যা, উদাঃ 00, 34, 40, 66

অঙ্কগুলি কোনও ক্রমে দেওয়া যেতে পারে, 34একই ডোমিনো হিসাবেও43

উদাহরণ ইনপুট

00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 33 34 35 36 44 45 46 55 56 66
00 10 11 20 21 22 30 31 32 33 40 41 42 43 44 50 51 52 53 54 55 60 61 62 63 64 65 66
00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 34 35 36 44 45 46 55 56 66
00 02 03 04 05 06 11 13 14 15 16 22 24 25 26 33 35 36 44 46 55 66
<empty list>

সম্পর্কিত উদাহরণ ফলাফল

<empty list>
<empty list>
33
01 12 23 34 45 56
00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 33 34 35 36 44 45 46 55 56 66

2
কোন ইনপুট ফর্ম্যাট অনুমোদিত? স্ট্রিংয়ের তালিকা? পূর্ণসংখ্যার তালিকাগুলির তালিকা?
মার্টিন ইন্ডার

1
@Martin আমি অভিমানী ছিল আমরা লাইন বরাবর একটি মেটা ঐক্যমত্য কোথাও আছে "যাই হোক না কেন তালিকা, অ্যারে, সেট, সংগ্রহ, ভেক্টর, ম্যাট্রিক্স, ... আপনার ভাষার জন্য উপযুক্ত সদস্য সংখ্যা বা স্ট্রিং হতে পারে।"
ডিজিটাল ট্রমা

এর অর্থ কি এই যে আমরা প্রতিটি ডোমিনোকে জোড় জোড় হিসাবে অনুরোধ করতে পারি, উদাহরণস্বরূপ 03 16= [0, 3], [1, 6]?
ফ্লিপট্যাক

1
@ ফ্লিপট্যাক হ্যাঁ, অবশ্যই
ডিজিটাল ট্রমা

উত্তর:


10

সিজেম, 11 বাইট

{:$7Ym*:$^}

সংখ্যার জোড়গুলির তালিকা হিসাবে I / O সহ একটি নামবিহীন ব্লক (ফাংশন)।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

:$   e# Sort each pair in the input.
7Ym* e# Get all pairs with elements in range [0 .. 6] using a Cartesian product.
:$   e# Sort each pair.
^    e# Symmetric set-difference. This will remove all pairs that are in the input
     e# and also remove duplicates, because it's a set operation.

আপনার {}বন্ধনী কেন দরকার ?
ক্রোমিয়াম

6

পাইথ, 12 10 বাইট

-.CU7 2SMQ

ফর্ম্যাট ইনপুট এবং আউটপুট [[0, 0], [0, 1], ...]

   U7       generate range [0, 1, ..., 6]
 .C   2     all combinations-with-replacement of 2, generates [[0,0],[0,1],...]
         Q  get the input
       SM   sort each domino (turns ex. [1,0] into [0,1])
-           remove the map-sort'd input from the full array

এখানে চেষ্টা করুন।

একটি ভিন্ন ইনপুট / আউটপুট ফর্ম্যাট সহ 2 বাইট সংরক্ষণ করার জন্য @ মার্টিনব্যাটনারকে ধন্যবাদ !


4

জাভাস্ক্রিপ্ট (ES7 প্রস্তাবিত), 80 76 বাইট

s=>[for(n of d="0123456")for(o of d.slice(n))if(s.search(n+o+'|'+o+n)<0)n+o]

স্থান-বিভাজিত স্ট্রিং হিসাবে ইনপুট নেয় এবং স্ট্রিংগুলির একটি অ্যারে প্রদান করে। অ্যারে বোধগম্যতা এইগুলির জন্য সত্যই তাদের ওজন টান।


3

রুবি 74 বাইট

->b{a=(0..27).map{|i|"%d%d"%[i%7,(i+i/7)%7]}
b.map{|e|a-=[e,e.reverse]}
a}

স্ট্রিংগুলির একটি অ্যারে নেয়, স্ট্রিংগুলির একটি অ্যারে প্রদান করে।

পরীক্ষার প্রোগ্রামে মন্তব্য করা হয়েছে

f=->b{a=(0..27).map{|i|"%d%d"%[i%7,(i+i/7)%7]} #generate complete set of dominos (each domino once) and store in a
b.map{|e|a-=[e,e.reverse]}                     #remove provided dominos (check both forward and reverse representations)
a}                                             #return a

p f[%w{00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 33 34 35 36 44 45 46 55 56 66}]
p f[%w{00 10 11 20 21 22 30 31 32 33 40 41 42 43 44 50 51 52 53 54 55 60 61 62 63 64 65 66}]
p f[%w{00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 34 35 36 44 45 46 55 56 66}]
p f[%w{00 02 03 04 05 06 11 13 14 15 16 22 24 25 26 33 35 36 44 46 55 66}]
p f[[]]

আউটপুট

[]
[]
["33"]
["01", "12", "23", "34", "45", "56"]
["00", "11", "22", "33", "44", "55", "66", "01", "12", "23", "34", "45", "56", "60", "02", "13", "24", "35", "46", "50", "61", "03", "14", "25","36", "40", "51", "62"]

শেষ উদাহরণে (ইনপুট খালি তালিকা) মডুলার গাণিতিক ব্যবহার করে ডোমিনোয়গুলির সম্পূর্ণ তালিকা তৈরির ক্রমটি নোট করুন। প্রথমে 7 টি ডাবলিনো তৈরি করা হয়, তারপরে প্রতিটি পক্ষের মধ্যে 1 (বা 6) পিপের পার্থক্য সহ 7 ডোমিনোস, তারপরে 2 (বা 5) পিপের পার্থক্য সহ 7 ডোমিনোস এবং শেষ পর্যন্ত 3 (বা 4) এর পার্থক্য সহ 7 ডোমিনোস তৈরি করা হয় পিপস।


3

জুলিয়া 0.6 , 47 বাইট

A->setdiff([[i,j]for i=0:6 for j=i:6],sort.(A))

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

(জাইসিকে ধন্যবাদ পরিসীমা শুরুর জন্য।)


48 বাইট

A->[(i,j)for i=0:6 for j=i:6 if[i,j]∉sort.(A)]

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


আমি মনে করি শূন্য ডোমিনোজগুলি আপনার তৃতীয় টিআইও পরীক্ষার কেস থেকে অনুপস্থিত রয়েছে। আমি = 0: 6 এর জন্য সম্ভবত?
জেসি

ভোর 3 টায় অর্ধেক ঘুমন্ত পোস্ট করার চেষ্টা থেকে আমি এটাই পাই! হ্যাঁ, এখনই স্থির (আশাকরি), ধন্যবাদ।
- মনিকা

2

পার্ল, 48 + 1 = 49 বাইট

for$=(0..6){for$.($=..6){/$=$.|$.$=/||say$=.$.}}

-nপতাকা প্রয়োজন , এবং বিনামূল্যে -M5.010| -E:

$ perl -nE'for$=(0..6){for$.($=..6){/$=$.|$.$=/||say$=.$.}}' <<< '00 02 03 04 05 06 11 13 14 15 16 22 24 25 26 33 35 36 44 46 55 66'                      
01
12
23
34
45
56

বেশ বিরক্তিকর উত্তর সামগ্রিকভাবে, তবে এখানে একটি বর্ণা version্য সংস্করণ রয়েছে:

# '-n' auto reads first line into `$_`:
# $_ = <>;
foreach $a (0..6) {
  foreach $b ($a..6) {
    say $a . $b unless $_ =~ /$a$b|$b$a/;
  }
}




2

05 এ বি 1 ই , 12 11 বাইট

6Ýã€{JI€{KÙ

-1 বাইট @ এমিগানাকে ধন্যবাদ ।

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

ব্যাখ্যা:

6Ý         # [0,1,2,3,4,5,6]
  ã        # Duplicate and take the cartesian product (pair up each)
   €{      # Sort each pair
     J     # Join them together to strings
I€{        # Sort each pair-string of the input
K          # Remove all pairs from the input from the cartesian list
Ù          # Only leave unique values

1

গণিত, 49 বাইট

Complement[Join@@Table[{x,y},{x,0,6},{y,0,6}],#]&

সংখ্যার তালিকার তালিকা ইনপুট।


3
সর্বশেষ পরীক্ষার মামলায় ব্যর্থ; মনে রাখবেন, এগুলি আনর্ডারড সেটগুলি।
LegionMammal978

আমি @ লেজিওনম্যামাল 978 এর সাথে একমত হব; এই উত্তরটি অবৈধ বলে মনে হচ্ছে।
জোনাথন ফ্রেচ

1

জাভা 8, 105 বাইট

একটি অকার্যকর ল্যাম্বদা একটি পরিবর্তনীয় গ্রহণ করছেন java.util.Set<String>

s->{for(int i=0,a,b;i<49;)if(s.add(""+(a=i/7)+(b=i++%7))&(s.add(""+b+a)|a==b))System.out.print(" "+a+b);}

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

Ungolfed

s -> {
    for (int i = 0, a, b; i < 49;)
        if (
            s.add("" + (a = i / 7) + (b = i++ % 7))
            & (
                s.add("" + b + a)
                | a == b
            )
        )
            System.out.print(" " + a + b);
}

প্রাপ্তি স্বীকার

  • -1 বাইট জোনাথন ফ্রেচের জন্য ধন্যবাদ

1
int i=0,a,b;while(i<49হতে পারে for(int i=0,a,b;i<49;
জোনাথন ফ্রেচ

1

জেলি , 8 বাইট

Ṣ€7ḶŒċ¤ḟ

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

যুক্তি দৈর্ঘ্য -2 পূর্ণসংখ্যার তালিকার একটি তালিকা। পাদলেখ এই সমাধানটিকে গ্রহণ করে এমন ফর্ম্যাটে পরীক্ষার ক্ষেত্রে বিন্যাস থেকে ইনপুট রূপান্তর করে।


1

জে, 26 , 24 বাইট

-২ বাইটস ফ্রাউনফ্রোগকে ধন্যবাদ

(;(,.i.,])&.>i.7)-.\:~"1
  • (;(,.i.,])&.>i.7) পুরো সেটটি গণনা করে (এই অংশটি আরও গল্ফ হতে পারে, আমি বিশ্বাস করি And এবং যদি আপনি দেখতে পান তবে দয়া করে করুন ...)
  • -. "সেট বিয়োগ" হয়
  • /:~"1 প্রতিটি ইনপুট অর্ডার

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

মূল

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

((#~<:/"1)>,{;~i.7)-./:~"1

(;(,.i.,])&.>i.7)2 বাঁচায় (
ক্রমটি

@ ফ্রাউনফ্র্যাগ ধন্যবাদ, আপডেট হয়েছে।
জোনা

1

পাইথন 2, 89 86 বাইট

ডোমিনো সেট জেনারেশনকে সহজ করে কয়েকটি বাইট সংরক্ষণ করেছেন।

lambda z,s="0123456":{x+y for x in s for y in s[int(x):]}-{(a+b,b+a)[a>b]for a,b in z}

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

ডোমিনোজের আর্গুমেন্ট হিসাবে ["00", "10", "02] এর মতো স্ট্রিংয়ের একটি তালিকা নেয় p পাইথন সেট অবজেক্টস, যা স্বতন্ত্র পৃথক তালিকার তালিকা রয়েছে তা ফেরত দেয়।

ব্যাখ্যা

# anonymous function, s should always have its default value
lambda z,s="0123456":
                     # contents are a set
                     {                                  }
                          # iterate over characters in string
                          for x in s
                                     # for each x, iterate over x from index of current item forward
                                     for y in s[int(x):]
                     # add characters together for domino string
                     x+y
                                                         # contents are a set, return the difference between these two sets 
                                                         -{                          }
                                                             # iterate over items in input list, split strings into two characters
                                                                         for a,b in z
                                                             # sort strings in input list (so that i.e. "10" => "01")
                                                             # essentially, "ab" if a<b, otherwise "ba"
                                                             (a+b,b+a)[a>b]

0

হাস্কেল, 65 বাইট

f x=[[a,b]|a<-"0123456",b<-[a..'6'],notElem[a,b]x&&notElem[b,a]x]

ব্যবহারের উদাহরণ:

*Main> f ["00","02","03","04","05","06","11","13","14","15","16","22","24","25","26","33","35","36","44","46","55","66"]
["01","12","23","34","45","56"]

পুনরুক্তি aথেকে সমস্ত সংখ্যার উপর একটি বাইরের লুপ 0থেকে 6এবং bথেকে সব ডিজিটের উপরে ভেতরের লুপ aথেকে 6এবং যারা রাখা abযেখানে তন্ন তন্ন abনা baইনপুট স্ট্রিং পাওয়া যায়।


0

গুরুতরভাবে, 16 বাইট

,`S`M7r;∙`εjS`M-

স্ট্রিংগুলির তালিকা হিসাবে ইনপুট নেয়, স্ট্রিংগুলির একটি তালিকা আউটপুট করে

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

ব্যাখ্যা:

,`S`M7r;∙`εjS`M-
,`S`M             map: sort each input string
     7r;∙         cartesian product of range(0,7) ([0,1,2,3,4,5,6]) with itself
         `εjS`M   map: join on empty string, sort (results in all valid dominoes with some duplicates)
               -  set difference (all values present in valid dominoes set not present in input, with duplicates removed)

প্রকৃতপক্ষে , 13 বাইট (প্রতিযোগী নয়)

♂S7r;∙`εjS`M-

এটি সিরিয়াসলি উত্তরের অনুরূপ (অন্তর্নির্মিত ইনপুট ব্যতীত এবং ♂Sপ্রতিটি ইনপুট স্ট্রিংয়ের সংক্ষিপ্ততর উপায় হিসাবে)।

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


1
আপনার আউটপুটে সদৃশ রয়েছে
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা এটি পোস্ট করার সময় থেকে পিছনে-অসম্পূর্ণ পরিবর্তনগুলির কারণে।
মেগো

0

কোলাহল

(define (missing-dominoes input)
  (filter
   (lambda (n)
     (not (member n (map
                     (lambda (n)
                       (let ((x (quotient n 10)) (y (remainder n 10)))
                         (if (<= x y) n (+ (* y 10) x))))
                     input))))
   (for*/list ([i (in-range 7)] [j (in-range i 7)])
     (+ (* 10 i) j))))

2
লোকেরা র‌্যাকেটে গল্ফ করতে দেখে ভাল লাগল! এটি একটি কোড-গল্ফ প্রশ্ন তাই সম্ভবত আপনার উত্তরের ক্ষেত্রে আপনার বাইকোয়ান্ট অন্তর্ভুক্ত করা উচিত। আপনি অবশ্যই এই উত্তরটি থেকে বেশ খানিকটা সাদা জায়গা সরিয়ে ফেলতে পারেন।
গম উইজার্ড

আমি @WW এর সাথে একমত হব যে এই উত্তরটি বৈধ বলে যথেষ্ট পরিমাণে গল্ফ হয়েছে বলে মনে হচ্ছে না।
জনাথন ফ্রেচ 22 ই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.