একটি সেট এর নবম সাবসেট


13

কাজটি

সেট দেওয়া

এস=[1,2,3,4,5,6,7,8]

এবং একটি পূর্ণসংখ্যা

0এন<2|এস|

নবম সাবসেটটি সন্ধান করুন।

ইনপুট আউটপুট

এন স্টিনে স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে দেওয়া হয়। আপনি আপনার ভাষায় জন্য উপযুক্ত একটি বিন্যাসে N তম উপসেট প্রিন্ট হবে (এতে এগুলি থাকতে পারে [1,2,3], {1,2,3}, [1, 2, 3], 1 2 3, 1,2,3ইত্যাদি দীর্ঘ যেমন একটি মানবিক পাঠযোগ্য হিসেবে পাঠ্য বিন্যাস)।

সাবসেট সম্পর্কে কিছুটা

বেস দুটিতে সাবসেট এবং সংখ্যার মধ্যে একটি সম্পর্ক রয়েছে। প্রতিটি ডিজিট

আমি
নির্দিষ্ট করে যে সেটটির i ম উপাদানটি উপসেটের মধ্যে রয়েছে কিনা। উদাহরণস্বরূপ 00000000 খালি সেট হবে এবং 10000001 হ'ল সাবসেট [1,8](সর্বশেষ এবং প্রথম উপাদান) রয়েছে। আপনি বেস 2 মধ্যে সংখ্যা রূপান্তর দ্বারা N তম উপসেট পেতে এবং তারপর উপসেট সব উপাদান যেখানে অন্তর্ভুক্ত
আমি>0
। তৃতীয় উপসেট (3 = 00000011) এতে রয়েছে [1,2]। ডান দিকের অঙ্কটি হ'ল অঙ্ক # 0। এটি মুদ্রণ করা ঠিক আছে [2,1]। সেটটি বাছাই করতে হবে না।

Addendums:

হ্যাঁ, সেটটি ঠিক করা হয়েছে 1..8। সেটটি ইনপুটটির অংশ নয়। ইনপুট ঠিক এন

হ্যাঁ, আপনি বিকল্প ইনপুট ফর্ম ব্যবহার করতে পারেন।

সকল এন এর জন্য প্রত্যাশিত ফলাফলগুলি : এনটিইউ


1
সেট বিশেষভাবে হয় 1থেকে 8, অথবা এটি কোন সেট হয়?
জো কিং

2
আমি অবাক হয়েছি আগে কেউ জিজ্ঞাসা করেনি: আপনি কি এতটা বিনীত হবেন যে জমা দেওয়ার মতো ফাংশনগুলিকে অনুমতি দেবে যা ইনপুটটিকে আর্গুমেন্ট হিসাবে গ্রহণ করবে এবং ভাষাগুলিকে স্টিডিন ব্যবহার করতে বাধ্য করবে না (যা কিছু লোক সক্ষম নয়)? প্রশ্নটি সাবসেট সম্পর্কে এবং ইনপুটগুলির সাথে ফিডিং নয়।
5

5
আপনার সমাধানটি সঠিক কিনা তা আপনার প্রত্যেককে বলার দরকার নেই, আপনি কখন নিজেকে তা সীমাবদ্ধ রাখতে পারবেন যখন তা হয় না।
ბიმო

1
যেহেতু সেটটি 1.8 এর মধ্যে সীমাবদ্ধ তাই কোনও আউটপুট যেমন "123"দ্ব্যর্থহীন হবে। এটা কি বৈধ?
আর্নৌল্ড

2
আমরা কি [1,8] এর পরিবর্তে 0-সূচিযুক্ত [0,7] ব্যবহার করতে পারি?
এরিক আউটগল্ফার

উত্তর:


17

জেলি , 3 বাইট

BUT

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

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

BUT  Main link. Argument: n

B    Binary; convert n to base 2.
 U   Upend; reverse the resulting array, so it starts with the LSB.
  T  Truth; find all 1-based indices of set bits.

5
কিন্তু কিন্তু কিন্তু...?!
আর্নৌল্ড

2
@ আর্নল্ড তবে সবকিছুই মিথ্যা! আপনি কি মনে করেন সব বাইনারি, তাই না? ভাল ... যে আপেনড সত্য! সুতরাং, না, সবকিছু বাইনারি নয়। ধূসর অঞ্চলে আপনাকে স্বাগতম!
এরিক দি আউটগল্ফার

7

আর , 52 26 বাইট

which(intToBits(scan())>0)

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

ইনপুটটিকে তার বিটগুলিতে রূপান্তর করে এবং তারা কোথায় রয়েছে তার 1-ভিত্তিক সূচকগুলি প্রদান করে TRUE। এটি এটিকে ডেনিসের জেলি উত্তরের বন্দরে পরিণত করে ।

রিটার্নস integer(0), পূর্ণসংখ্যার খালি তালিকা, ইনপুট জন্য 0


যদিও এই উত্তরে কোনও আইএফ, অ্যান্ডস, বা বুট নেই।
এনজিএম




2

কে 4 , 7 বাইট

সমাধান:

1+&|2\:

উদাহরণ:

প্রথম 10 ...

q)k)(1+&|2\:)@'!10
`long$()
,1
,2
1 2
,3
1 3
2 3
1 2 3
,4
1 4

ব্যাখ্যা:

1+&|2\: / the solution
    2\: / convert to base-2
   |    / reverse
  &     / indices where true
1+      / add 1



1

কাস্তে , 5 বাইট

`fN↔ḋ

না কম্যান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট লাগে stdin ( আমি আশা করি এই ঠিক আছে ), এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

`fN↔ḋ  -- example input: 6
    ḋ  -- convert to binary: [1,1,0]
   ↔   -- reverse: [0,1,1]
`      -- flip the arguments of
 fN    -- | filter the natural numbers by another list
       -- : [2,3]

1

হাস্কেল , 55 54 বাইট

s n=[x|(x,d)<-zip[8,7..]$mapM(pure[0,1])[1..8]!!n,d>0]

বিপরীত ক্রমে সেট আউটপুট দেয়, এটি অনলাইনে চেষ্টা করুন!

সাধারণ সংস্করণ, 56 বাইট

{আমি}আমি=18

s n=[x|(x,d)<-zip[n,n-1..]$mapM(pure[0,1])[1..n]!!n,d>0]

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

ব্যাখ্যা

শব্দটি mapM (pure [0,1]) [1..n]তালিকা তৈরি করে ( n=4) [[0,0,0,0],[0,0,0,1],[0,0,1,0],..,[1,1,1,1]]- যেমন। এর বাইনারি উপস্থাপনা [0..2^n-1]। এর সাথে সূচীকরণ nআমাদের বাইনারি উপস্থাপনা দেয়n

এখন আমরা কেবল zipএটি বিপরীত সংখ্যার সাহায্যে করতে পারি [1..n]এবং কেবলমাত্র সেই উপাদানগুলি রাখতে পারি যেখানে বাইনারি-অঙ্কটি শূন্য নয়:

 [ x | (x,digit) <- zip [n,n-1,..1] binaryRepN, digit > 0 ]

1

কাঠকয়লা , 11 বাইট

↓⭆⮌↨N²×ιI⊕κ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ফাঁকা জায়গা ছাড়াই যদি অনুভূমিকভাবে উত্তরটি মুদ্রণযোগ্য হয় তবে প্রথম অক্ষরটি মুছে ফেলা যাবে। ব্যাখ্যা:

    N       Input as a number
   ↨        Converted to base
     ²      Literal 2
  ⮌         Reversed
 ⭆          Map over bits and join
          κ Current index (0-indexed)
         ⊕  Incremented
        I   Cast to string
       ι    Current bit
      ×     Repeat string
↓           Print vertically








0

পাইথন 3.6, 58 বাইট

f=lambda n:[8-v for v,i in enumerate(f'{n:08b}')if int(i)]



0

এপিএল + উইন, 13 বাইট

এন এর জন্য অনুরোধ:

((8⍴2)⊤⎕)/⌽⍳8

এটি অনলাইন চেষ্টা করুন! সৌজন্যে ডায়ালগ ক্লাসিক

ব্যাখ্যা:

((8⍴2)⊤⎕) prompt for N and convert to binary

/⌽⍳8 generate a vector from 1 to 8, reverse and select integers according to 1s in binary

বিপরীত ক্রমে সাবসেট প্রদান করে



0

ওরাকল এসকিউএল, 77 বাইট

select*from(select rownum r,value(p)from t,table(powermultiset(x))p)where:n=r

এসকিউএল প্লাসে পরীক্ষা

SQL> var n number
SQL> exec :n:=67;

PL/SQL procedure successfully completed.

SQL> with t as (select ku$_vcnt(1,2,3,4,5,6,7,8) x from dual)
  2  select*from(select rownum r,value(p)from t,table(powermultiset(x))p)where:n=r
  3  /
        67
KU$_VCNT('1', '2', '7')

0

ম্যাথগল্ফ , 8 বাইট

â^mÉ┤\*─

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

ব্যাখ্যা

â         Convert first input to binary list
 ^        Zip with [1,2,3,4,5,6,7,8] (other input)
  mÉ      Map 2D array using the next 3 instuctions
    ┤     Pop from right of array
     \*   Swap top two elements and repeat array either 0 or 1 times
       ─  Flatten to 1D array

বিকল্প আউটপুট ফর্ম্যাট

আরও নমনীয় আউটপুট বিন্যাসের সাথে (যেটি আমি ব্যক্তিগতভাবে বেশ ভাল বলে মনে করি) আমি 6-বাইটার নিয়ে আসতে পারি:

â^É┤\*

ম্যাপিংয়ের পরিবর্তে, আমি প্রত্যেকের জন্য অন্তর্নিহিত ব্যবহার করি এবং আমি সমতলতা এড়িয়ে যাই। আউটপুট এর মতো দেখাচ্ছে:

[1][2][][4][5][6][7][]


0

এফ # (মনো) , 45 বাইট

let m x=Seq.where(fun y->x>>>y-1&&&1>0)[1..8]

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

আমি জেনেরিক / রিকভারসিভ ফাংশনটিও বাস্তবায়িত করেছি, তবে এটির সুন্দর কদর্য এবং বাইট গণনা অনেক a বড় ...

এফ # (মনো) , 107 বাইট

let rec g y i=
 if y>0 then seq{
  if y%2>0 then yield i
  yield!g(y/2)(i+1)
 }else Seq.empty
let f x=g x 1

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


0

05 এ বি 1 ই , 6 বাইট

bRSƶ0K

এটি অনলাইনে চেষ্টা করুন বা সম্ভাব্য সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

b         # Convert the (implicit) integer input to binary
          #  i.e. 22 → "10110"
 R        # Reverse it
          #  i.e. "10110" → "01101"
  S       # Convert it to a list of 0s and 1s
          #  i.e. "01101" → ["0","1","1","0","1"]
   ƶ      # Multiply each with its 1-indexed index
          #  i.e. ["0","1","1","0","1"] → [0,2,3,0,5]
    0K    # Remove all 0s (and output implicitly)
          #  i.e. [0,2,3,0,5] → [2,3,5]

0

জাভা 8, 58 বাইট

n->{for(int i=0;i<8;)if((1&n>>i++)>0)System.out.print(i);}

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

ব্যাখ্যা:

n->{                        // Method with integer as parameter and no return-type
  for(int i=0;i<8;)         //  Loop `i` in the range [0,8):
    if((1&n>>i++)>0)        //   If 1 AND `n` bitwise right-shifted to `i` is larger than 0
                            //   (with `i` increased by 1 afterwards with `i++`)
      System.out.print(i);} //    Print `i+1`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.