বাইনারি নম্বর ম্যাজিক ট্রিক


28

চ্যালেঞ্জ সহজভাবে হয়; নিম্নলিখিত ছয় 2D পূর্ণসংখ্যার অ্যারে আউটপুট করুন:

[[ 1, 11, 21, 31, 41, 51],
 [ 3, 13, 23, 33, 43, 53],
 [ 5, 15, 25, 35, 45, 55],
 [ 7, 17, 27, 37, 47, 57],
 [ 9, 19, 29, 39, 49, 59]]

[[ 2, 11, 22, 31, 42, 51],
 [ 3, 14, 23, 34, 43, 54],
 [ 6, 15, 26, 35, 46, 55],
 [ 7, 18, 27, 38, 47, 58],
 [10, 19, 30, 39, 50, 59]]

[[ 4, 13, 22, 31, 44, 53],
 [ 5, 14, 23, 36, 45, 54],
 [ 6, 15, 28, 37, 46, 55],
 [ 7, 20, 29, 38, 47, 60],
 [12, 21, 30, 39, 52]]

[[ 8, 13, 26, 31, 44, 57],
 [ 9, 14, 27, 40, 45, 58],
 [10, 15, 28, 41, 46, 59],
 [11, 24, 29, 42, 47, 60],
 [12, 25, 30, 43, 56]]

[[16, 21, 26, 31, 52, 57],
 [17, 22, 27, 48, 53, 58],
 [18, 23, 28, 49, 54, 59],
 [19, 24, 29, 50, 55, 60],
 [20, 25, 30, 51, 56]]

[[32, 37, 42, 47, 52, 57],
 [33, 38, 43, 48, 53, 58],
 [34, 39, 44, 49, 54, 59],
 [35, 40, 45, 50, 55, 60],
 [36, 41, 46, 51, 56]]

এই 2D পূর্ণসংখ্যা অ্যারে কি? এই যেকোন ম্যাজিক ট্রিকটিতে এই নম্বরগুলি সহ কার্ডগুলি ব্যবহৃত হয়:

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

যাদু কৌশলটি কাউকে [1, 60] পরিসীমাটির একটি সংখ্যা সম্পর্কে চিন্তা করতে বলে এবং যাদুকরী কৌশলটি সম্পাদনকারীটিকে এই নম্বরটি থাকা সমস্ত কার্ড দেয়। যাদু কৌশলটি সম্পাদনকারী যিনি সেই ব্যক্তিটি যে নম্বরটি ভাচ্ছিলেন সেই নম্বর পেতে প্রদত্ত কার্ডগুলির উপরের বাম সংখ্যা (2 এর সমস্ত শক্তি) যোগ করতে পারে। কেন এই কাজগুলি এখানে কিছু অতিরিক্ত ব্যাখ্যা পাওয়া যাবে।

চ্যালেঞ্জ বিধি:

  • আপনি যে কোনও যুক্তিসঙ্গত বিন্যাসে ছয় 2D পূর্ণসংখ্যার অ্যারে আউটপুট করতে পারেন। ডিলিমিটার দিয়ে মুদ্রিত হতে পারে; ছয় 2D পূর্ণসংখ্যার অ্যারে সমন্বিত একটি 3 ডি পূর্ণসংখ্যার অ্যারে হতে পারে; লাইনগুলির একটি স্ট্রিং-তালিকা হতে পারে; প্রভৃতি
  • 2D পূর্ণসংখ্যার অ্যারেগুলি আয়তক্ষেত্রাকার ম্যাট্রিকগুলি তৈরি করার জন্য আপনাকে পরিসীমা [-60, -1]বা চরিত্রের নেতিবাচক মান সহ শেষ চারটি কার্ডের নীচের ডান পজিশনটি পূরণ করার অনুমতি দেওয়া হয়েছে '*'(না, আপনাকে সেগুলি পূরণ করার অনুমতি নেই 0বা কোনও নন -অনুবর্তক যেমন null/ undefinedবিকল্প হিসাবে পছন্দ করে, *যেহেতু একটি তারাও আসল কার্ডগুলিতে ব্যবহৃত হয় ব্যতীত)।
  • ম্যাট্রিকগুলিতে সংখ্যার ক্রম বাধ্যতামূলক। যদিও এটি শারীরিক যাদু জন্য কোনও বিষয় নয়, আমি এই চ্যালেঞ্জটিকে মূলত একটি - হিসাবে দেখি , সুতরাং আদেশের উপর বিধিনিষেধ।
    আউটপুট তালিকায় ম্যাট্রিকের ক্রম যে কোনও ক্রমে হতে পারে, যেহেতু এটি শীর্ষ-বাম কার্ড থেকে কোনটি ম্যাট্রিক্স clear

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলস নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন (অর্থাত্ টিআইও) ) ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

সম্পর্কিত। (যেমনটি, এটি একই যাদু কৌশল সম্পর্কে উল্লেখ করা হচ্ছে, তবে আমি মনে করি এই চ্যালেঞ্জটি থেকে অনুপ্রেরণা অর্জনের জন্য সত্যই দরকারী নয় That সেই চ্যালেঞ্জটি 'তম কার্ডে নম্বর nউপস্থিত কিনা তা সত্য / মিথ্যা মান আউটপুট করতে বলে k; যেখানে আমার চ্যালেঞ্জটি একটি ছয়টি ম্যাট্রিককে আউটপুট দেওয়ার জন্য কেসি-চ্যালেঞ্জ))
কেভিন ক্রুইজসেন

1
@ ডিজিটালট্রামা এইচএম, আমি সত্যিই এটির সদৃশ কিনা তা নিশ্চিত নই, কারণ আপনার চ্যালেঞ্জটি এসিআই-আর্ট (যেমনটি ট্যাগ করা হয়নি, তবে এটি), যখন এটি আপনাকে আরও বিন্যাসের বিন্যাসে অ্যারে আউটপুট করতে দেয় allows (কেবল চারটি মূলত অভিন্ন উপায় নয়)। আমি আবার খুলতে ভোট দিতে পারি না, যদিও আমার একটি হাতুড়ি রয়েছে।
এরিক আউটগলফার

@ এরিকথ আউটগল্ফার ওপস .. ভুলে গেছি আমার কাছে একটি হাতুড়িও রয়েছে>>> কখনও কখনও হাতুড়ি বন্ধ / উন্মুক্ত করতে সক্ষম হওয়া বেশ বিরক্তিকর .. এটিতে ইতিমধ্যে 2 টি ভোট ছিল, সুতরাং আপনার এবং আমার সাথে আরও 4 টি মুক্ত ভোট ছিল। তবে কেউ যদি আবার এটি বন্ধ করতে চায় তবে আমার আপত্তি নেই। এগুলি প্রকৃতপক্ষে খুব সমান, যদিও তাঁর চ্যালেঞ্জটি সত্যই [ascii-art]কঠোর (MD5) আউটপুট বিধিগুলির সাথে একটি চ্যালেঞ্জ, যেখানে খনিটি খুব নমনীয় (এবং সারি / কলামগুলি বদলানো হয়, এবং এর [1,60]পরিবর্তে পরিসীমা হয় [1,63]; বেশ ছোট ছোট পার্থক্য, তবে এখনও)।
কেভিন ক্রুইজসেন

দেখে মনে হচ্ছে আপনি "এটি আমার মূল্যবান চ্যালেঞ্জ !!!" এর মনোভাব নিয়ে ভিটিআরও করার চেষ্টা করেন নি " কমপক্ষে ...: পি
এরিক আউটগল্ফার

1
আমিও হাতুড়িটি ভুলে গেছি। আমি এখনও মনে করি এটি দ্বিধাদ্বন্দ্বের পক্ষে ভোট দেওয়ার পক্ষে যথেষ্ট, যদিও আমি যদি সম্প্রদায়টির পুনরায় চালু করা হয় তবে আমি এর বুদ্ধি মেনে চলি।
ডিজিটাল ট্রমা

উত্তর:


6

এমএটিএল , 12 11 বাইট

-1 বাইট নিজে মাস্টারকে ধন্যবাদ :)

60:B"@fQ6eq

ব্যাখ্যা:

60:           % create a vector [1,2,3,...,60]
   B          % convert to binary matrix (each row corresponds to one number)
    "         % loop over the columns and execute following commands:
     @f       % "find" all the nonzero entries and list their indices
       Q      % increment everything
        6e    % reshape and pad with a zero at the end
          q   % decrement (reverts the increment and makes a -1 out of the zero
              % close loop (]) implicitly
              % display the entries implicitly

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



7

পাইথন 2 , 76 বাইট

r=range;print[[[i for i in r(61)if i&2**k][j::5]for j in r(5)]for k in r(6)]

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

এখানে পদ্ধতিটি হল সমস্ত সম্ভাব্য সংখ্যার একটি তালিকা তৈরি করা r(61)এবং তারপরে এটি কোনও কার্ডের জন্য সংখ্যার তালিকার নিচে নামিয়ে দেওয়াi&2**k

তারপরে, তালিকা স্লাইসিং ব্যবহার করে, সেই 1 ডি সংখ্যার তালিকাটি সঠিক 6x5 কার্ডের আকারে পুনরায় সাজানো হবে [card nums][j::5]for j in r(5)

তারপরে, এই জেনারেটরটি কেবল 6 টি কার্ডের জন্য পুনরাবৃত্তি হয় for k in r(6)


যদিও আমি 76 76 বাইটের চেয়ে কম সমাধান খুঁজে পাইনি, এখানে আরও দু'টি রয়েছে যা 76 76 বাইটেরও:

r=range;print[[[i for i in r(61)if i&1<<k][j::5]for j in r(5)]for k in r(6)]

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

এই পরবর্তীটি জোনাথন অ্যালান দ্বারা অনুপ্রাণিত ।

k=32
while k:print[[i for i in range(61)if i&k][j::5]for j in range(5)];k/=2

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

কোন মন্তব্য ব্যাপকভাবে প্রশংসা করা হয়।


6

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

E⁶E⁵⪫E⁶§⁺§⪪Φ⁶¹&πX²ι⁵ν⟦*⟧λ 

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

E⁶                          Loop over 6 cards
  E⁵                        Loop over 5 rows
     E⁶                     Loop over 6 columns
           Φ⁶¹              Filter over 0..60 where
               π            Current value
              &             Bitwise And
                 ²          Literal 2
                X           Raised to power
                  ι         Card index
          ⪪        ⁵        Split into groups of 5
         §          ν       Indexed by column
        ⁺                   Concatenated with
                      *     Literal string `*`
                     ⟦ ⟧    Wrapped in an array
       §                λ   Indexed by row
    ⪫                       Joined with spaces
                            Implicitly print

আমি *আসল কার্ডগুলিতে তারকাদের দেখার পরে মজাদার জন্য সেই নিয়মটি যুক্ত করেছি। এটি ব্যবহার করে কোনও ভাষা থাকবে কিনা তা ভাবছিলাম, তবে কমপক্ষে একটি করে দেখে আমি আনন্দিত। :) চমৎকার উত্তর!
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন চারকোলের ট্রান্সপোজ অপারেটর নেই, এবং গল্ফিয়েস্ট ট্রান্সপোজের পরিচিত আকারের একটি আয়তক্ষেত্রাকার অ্যারের প্রয়োজন, তাই আকারটি তৈরি করার জন্য আমার কিছু যোগ করা দরকার, এবং *অন্য কোনও কিছুর চেয়ে কম সংক্ষিপ্ত।
নীল

আমি মনে করি না এটি 26 বাইট ...
টিভিডি 1

@ টিভিডি 1 কাঠকোল, এই সাইটের অনেকগুলি এসওল্যাংয়ের মতো, একটি কাস্টম কোড পৃষ্ঠা ব্যবহার করে। পৃষ্ঠার অক্ষরগুলির জন্য 1 বাইট খরচ হয়, অন্য অক্ষরের দাম 4 বাইট পর্যন্ত হয়
নীল

6

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

60L2вíƶ0ζε0K5ô®ζ

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

ব্যাখ্যা

60L                 # push [1 ... 60]
   2в               # convert each to a list of binary digits
     í              # reverse each
      ƶ             # multiply each by its 1-based index
       0ζ           # transpose with 0 as filler
         ε          # apply to each list
          0K        # remove zeroes
            5ô      # split into groups of 5
              ®ζ    # zip using -1 as filler

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

6F60ÝNoôāÈϘ5ô®ζ,

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

ব্যাখ্যা

6F                  # for N in [0 ... 5] do
  60Ý               # push [0 ... 60]
     Noô            # split into groups of 2^N numbers
        āÈÏ         # keep every other group
           ˜        # flatten
            5ô      # split into groups of 5
              ®ζ    # transpose with -1 as filler
                ,   # print


5

পাইথন 2 , 82 80 78 74 বাইট

i=1 
exec"print zip(*zip(*[(n for n in range(61)+[-1]if n&i)]*5));i*=2;"*6

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

-4 বাইট, জোনাথন অ্যালানকে ধন্যবাদ


3
খুশী হলাম। iterযেহেতু শব্দ এখানে অপ্রয়োজনীয় জেনারেটরের ঠিক যেমন ভাল কাজ কি করতে হবে
জোনাথন অ্যালান



4

জাভাস্ক্রিপ্ট (ES6),  90  88 বাইট

_=>[1,2,4,8,16,32].map(n=>(g=i=>i<60?g(++i,i&n?m[y%5]=[...m[y++%5]||[],i]:0):m)(y=m=[]))

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

মন্তব্য

_ =>                        // anonymous function taking no argument
  [1, 2, 4, 8, 16, 32]      // list of powers of 2, from 2**0 to 2**5
  .map(n =>                 // for each entry n in this list:
    ( g = i =>              //   g = recursive function taking a counter i
      i < 60 ?              //     if i is less than 60:
        g(                  //       recursive call:
          ++i,              //         increment i
          i & n ?           //         if a bitwise AND between i and n is non-zero:
            m[y % 5] =      //           update m[y % 5]:
            [ ...m[y++ % 5] //             prepend all previous values; increment y
              || [],        //             or prepend nothing if it was undefined so far
              i             //             append i
            ]               //           end of update
          :                 //         else:
            0               //           do nothing
        )                   //       end of recursive call
      :                     //     else:
        m                   //       return m[]
    )(y = m = [])           //   initial call to g with i = y = m = []
                            //   (i and y being coerced to 0)
  )                         // end of map()


4

সি (জিসিসি) , 95 বাইট

i,j,k;f(int o[][5][6]){for(i=6;i;)for(o[--i][4][5]=j=k=-1;j<60;)++j&1<<i?o[i][++k%5][k/5]=j:0;}

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

ও-তে একটি 3D ইন্ট অ্যারে হিসাবে ম্যাট্রিকগুলি ফেরত দেয়।

সর্বশেষ 4 টি ম্যাট্রিকের সর্বশেষ মান হিসাবে -1 রয়েছে।

কেভিন ক্রুইজসেনকে 2 বাইট সংরক্ষণ করা হয়েছে।

সংরক্ষিত 7 8 Arnauld ধন্যবাদ বাইট।


আপনি পরিবর্তন করে 2 বাইট সংরক্ষণ করতে পারবেন o[i][4][5]=-1;for(j=k=0;করার for(o[i][4][5]=-1,j=k=0;তাই বন্ধনী সরানো হতে পারে। ভাল উত্তর বিটিডব্লিউ, আমার কাছ থেকে +1।
কেভিন ক্রুইজসেন


(মনে রাখবেন যে সঠিক মাত্রাগুলি দিয়ে ইতিমধ্যে বরাদ্দ করা 3 ডি অ্যারে পাস করার অনুমতি থাকলে আমি 100% নিশ্চিত নই। তবে আমি নিয়মিত সি গল্ফারদের সম্পর্কে আরও ভাল অন্তর্দৃষ্টি দিতে দেব let)
আরনাউল্ড ২

@ আরনাউল্ড আমি সে সম্পর্কে ভাবছিলাম, কিন্তু এর বিরুদ্ধে সিদ্ধান্ত নিয়েছি।
মতেজ মুলেজ

ভাল বাদ #includeযে এটা ছাড়া কাজ করে দেখানোর জন্য
হওয়া ASCII শুধুমাত্র

3

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

6{61{2A#&},5/zp}fA

অনলাইন ডেমো । এটি একটি সম্পূর্ণ প্রোগ্রাম যা স্টডআউটকে আউটপুট করে।

ব্যবচ্ছেদ

6{             }fA    # for A = 0 to 5
  61{2A#&},           #   filter [0,61) by whether bit 2^A is set
           5/z        #   break into chunks of 5 and transpose to get 5 lists
              p       #   print

3

জেলি , 13 বাইট

60&ƇⱮs€5LÐṂZ€

একটি নীলাডিক লিংক যা পূর্ণসংখ্যার তালিকার (6) তালিকার একটি তালিকা দেয়। (এটি কোনও *বা নেতিবাচক ফিলার না থাকার ডিফল্ট বিকল্পটি ব্যবহার করে p

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

কিভাবে?

60 যা উপরের বাম (ন্যূনতম) সংখ্যার সাথে একক সেট-বিট ভাগ করে।

এই প্রোগ্রামটি প্রথমে সমস্ত তোলে60[1,60]যা তাদের সূচী নম্বর দিয়ে কোনও সেট-বিট (গুলি) ভাগ করে । এটি তারপর প্রতিটি অংশে বিভক্ত5এবং কেবলমাত্র ন্যূনতম দৈর্ঘ্যের সাথে রাখে - যা সূচকে কেবলমাত্র একটি সেট-বিট থাকে (এবং এর ফলে এটির সর্বনিম্ন মানও হয়)। পরিশেষে এটি কলাম-মেজর ক্রমে তাদের স্থাপনের জন্য প্রতিটি স্থানান্তর করে।

60&ƇⱮs€5LÐṂZ€ - Link: no arguments
60            - set the left argument to 60
    Ɱ         - map across ([1..60]) with:  (i.e. [f(60,x) for x in [1..60]])
   Ƈ          -   filter keep if:  (N.B. 0 is falsey, while non-zeros are truthy)
  &           -     bitwise AND
      €       - for each:
     s 5      -   split into chunks of five
         ÐṂ   - keep those with minimal:
        L     -   length
           Z€ - transpose each

"পাঁচকে ভাগ হয়ে গেলে দৈর্ঘ্যে ন্যূনতম ন্যূনতম" অনুধাবন না করে প্রচুর 15s:

5Ż2*Ɱ60&ƇⱮs€5Z€
6µ’2*60&Ƈ)s€5Z€
60&ƇⱮ`LÞḣ6s€5Z€

... এবং, আরও ছোট করার চেষ্টা করার সময়, কৌতুকের বিনা প্রয়োজনে আমি আরও ১৩ টি পেয়েছি:

60B€Uz0Ts5ZƊ€

3

ওল্ফ্রাম ভাষা (গণিত) , ৮৮ বাইট a

Transpose@Partition[#~Append~-1,5]&/@Last@Reap[Sow[,NumberExpand[,2]]~Do~{,60},Except@0]

আমি টিআইও লিঙ্ক যুক্ত করার স্বাধীনতা নিয়েছি ( @ জে 212161217 এর উপর ভিত্তি করে ) এর উত্তরের )। আমার কাছ থেকে +1
কেভিন ক্রুইজসেন


@ মিঃ এক্সকোডার ধন্যবাদ আমি এই ব্যবহার করেছি ~আরো এক জায়গায় কৌতুক এবং পরিবর্তনশীল প্রতিস্থাপিত kদ্বারা Null। দুঃখিত, একটি টিও লিঙ্ক যোগ করার সময় নেই।
ব্রুনো লে ফ্ল্যাচ

2

ওল্ফ্রাম ভাষা (ম্যাথমেটিকা) , 99 বাইট

Transpose@Partition[#~FromDigits~2&/@Last@GatherBy[{0,1}~Tuples~6,#[[-k]]&],5]~Table~{k,6}/. 61->-1

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


আপনি কয়েকটি চর সংরক্ষণ করতে পারেন: Transpose@পরিবর্তে করছেনTranspose[...] ; বিভাজনের আগে 30 টি এন্ট্রিগুলিতে প্যাডিং; Table[...,{k,6}]প্রয়োজন এড়াতে ব্যবহার k=#
ব্রুনো লে ফ্ল্যাচ

@ ব্রুনো লে ফ্ল্যাশ টেবিলটি একটি বাইট সংরক্ষণ করতে পারে। আপনি কি @ ট্রান্সপোজ চেষ্টা করেছিলেন? কারণ আপনি সাবধানে দেখলে এটি কাজ করে না। আমি আফ্রিকান তবে পরে গল্ফ করব
J42161217

দুঃখিত, Transpose@আপনি PadRightভিতরে যাওয়ার পরে কাজ করে Partition। আরেকটি মন্তব্য হ'ল যে প্রশ্নটি ""স্থানধারকের জন্য অনুমতি দেয় না বলে মনে হয় ; আপনি -1কোনও বাইট না হারিয়ে এটিকে প্রতিস্থাপন করতে পারেন ।
ব্রুনো লে ফ্ল্যাচ


2

আর , 73 বাইট

`!`=as.raw;lapply(0:5,function(i)matrix(c((a=1:60)[(!a&!2^i)>0],-1),5,6))

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

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


আউটপুট ভাল দেখাচ্ছে। আর যদি প্রায় সমস্ত অন্যান্য ভাষার মতো আর-এর পরিবর্তে সারির পরিবর্তে কলামের পরে কলামগুলিতে ম্যাট্রিকগুলি পূরণ করা হয়, তবে এর অর্থ হ'ল আমার ধারণা এই চ্যালেঞ্জটির জন্য এটি একটি ভাল প্রোগ্রামিং ভাষা ব্যবহার করা উচিত। :)
কেভিন ক্রুইজসেন

2

টি-এসকিউএল, ( 1,168 1,139 বাইট)

আমি কেবল এটি করতে পারি তা জানতে চেয়েছিলাম।

অনুকূল সংস্করণ

 WITH g AS(SELECT 1 AS n UNION ALL SELECT n+1 FROM g WHERE n+1<61),B as(SELECT cast(cast(n&32 as bit)as CHAR(1))+cast(cast(n&16 as bit)as CHAR(1))+cast(cast(n&8 as bit)as CHAR(1))+cast(cast(n&4 as bit)as CHAR(1))+cast(cast(n&2 as bit)as CHAR(1))+cast(cast(n&1 as bit)as CHAR(1))as b FROM g),P as(SELECT * from (values(1), (2), (4), (8), (16), (32)) as Q(p)),S as(select distinct p,p+(substring(b,6,1)*1)*(case when p=1 then 0 else 1 end)+(substring(b,5,1)*2)*(case when p=2 then 0 else 1 end)+(substring(b,4,1)*4)*(case when p=4 then 0 else 1 end)+(substring(b,3,1)*8)*(case when p=8 then 0 else 1 end)+(substring(b,2,1)*16)*(case when p=16 then 0 else 1 end)+(substring(b,1,1)*32)*(case when p=32 then 0 else 1 end)as e from P cross apply B),D as(select * from S where e>=p and e<61),R as(select p,(row_number()over(partition by p order by cast(e as int)))%5 as r,e from D),H as(select k.p,'['+stuff((select','+cast(l.e as varchar)from R l where l.p=k.p and l.r=k.r for xml path('')),1,1,'')+']'as s from R k group by k.p,k.r)select stuff((select','+cast(x.s as varchar)from H x where x.p=z.p for xml path('')),1,1,'')from H z group by z.p

অনলাইন ডেমো

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

ভার্বোজ সংস্করণ - এসকিউএল মন্তব্য হিসাবে নোট সহ

WITH gen -- numbers 1 to 60
AS (
    SELECT 1 AS num
    UNION ALL
    SELECT num+1 FROM gen WHERE num+1<=60
),
BINARIES -- string representations of binaries 000001 through 111111
as (
SELECT 
    +cast( cast(num & 32 as bit) as CHAR(1))
    +cast( cast(num & 16 as bit)  as CHAR(1))
    +cast( cast(num & 8 as bit)  as CHAR(1))
    +cast( cast(num & 4 as bit)  as CHAR(1))
    +cast( cast(num & 2 as bit)   as CHAR(1))
    +cast(cast(num & 1 as bit)  as CHAR(1)) as binry FROM gen
),
POWERS -- first 6 powers of 2
as (
SELECT * from (values(1), (2), (4), (8), (16), (32)) as Q(powr)
),
SETELEMENTS -- cross apply the six powers of 2 against the binaries
-- returns 2 cols. col 1 = the power of 2 in question.
-- col 2 is calculated as that power of 2 plus the sum of each power of 2 other than the current row's power value, 
-- but only where a given power of 2 is switched "on" in the binary string, 
-- ie. where the first digit in the string represents 32, the second represents 16 and so on. 
-- That is, if the binary is 100100 then the number will be 
-- the sum of (32 x 1) + (16 x 0) + (8 x 0) + (4 x 1) + (2 x 0) + (1 x 0) 
-- but if the current row's power is 32 or 4, then just that number (32 or 4) is excluded from the sum.
-- rows are distinct.
as (
select distinct powr,
powr+
 (substring(binry,6,1) * 1) * (case when powr = 1 then 0 else 1 end)
 +(substring(binry,5,1) * 2) * (case when powr = 2 then 0 else 1 end)
 +(substring(binry,4,1) * 4) * (case when powr = 4 then 0 else 1 end)
 +(substring(binry,3,1) * 8) * (case when powr = 8 then 0 else 1 end)
 +(substring(binry,2,1) * 16) * (case when powr = 16 then 0 else 1 end)
 +(substring(binry,1,1) * 32) * (case when powr = 32 then 0 else 1 end) as elt
from POWERS cross apply BINARIES
),
DISTINCTELEMENTS -- purge calculated numbers smaller than the power of 2 or greater than 60
as (
select * from SETELEMENTS where elt >= powr and elt < 61
)--,
,
ROWNUMBERED -- for each power, number the rows repeatedly from 0 through 5, then back to 0 through 5 again, etc
as (
select powr, (row_number() over (partition by powr order by cast(elt as int)))%5 as r, elt  from DISTINCTELEMENTS
),
GROUPEDSETS -- for each row number, within each power, aggregate the numbers as a comma-delimited list and wrap in square brackets - the inner arrays
as (
select r1.powr, '['+stuff((select ',' + cast(r2.elt as varchar) from ROWNUMBERED r2 where r2.powr = r1.powr and r2.r = r1.r for xml path('')),1,1,'')+']' as s
from ROWNUMBERED r1
group by r1.powr,r1.r
)
select -- now aggregate all the inner arrays per power
stuff((select ',' + cast(g2.s as varchar) from GROUPEDSETS g2 where g2.powr = g1.powr for xml path('')),1,1,'')
from GROUPEDSETS g1
group by g1.powr

ভাল খবর!

দ্রষ্টব্য 1: কিছু যুক্তি স্কোয়ার বন্ধনী এবং কমা রেন্ডারিং সম্পর্কিত।

দ্রষ্টব্য 2: এসকিউএল সার্ভারের নতুন সংস্করণগুলিতে কমা-সীমাবদ্ধ তালিকা তৈরির জন্য আরও কমপ্যাক্ট পদ্ধতি রয়েছে। (এটি এসকিউএল সার্ভার 2016 এ তৈরি করা হয়েছিল))

নোট 3: প্রদত্ত কার্ডের জন্য অ্যারেগুলি বাছাই করা হয় না (যা অনুমান অনুযায়ী ঠিক আছে)। একটি অ্যারের মধ্যে নম্বরগুলি সঠিকভাবে বাছাই করা হয়। এই ক্ষেত্রে, প্রশ্নের প্রতিটি "কার্ড", ফলাফলগুলিতে পৃথক সারিতে তার অ্যারেগুলি সরবরাহ করে।

হার্ড-কোড অ্যারে থেকে কম?

হ্যাঁ।

আমাকে বাইট।


জিৎ, ফলাফলটি কেবল হার্ডকোড করা কি সংক্ষিপ্ত হবে না?
জো কিং

হা হা। না মজা হিসাবে, না এক্সটেনসিবল।
youcantryreachingme

আমি পুরোপুরি বুঝতে পারি না - আপনি কি বলছেন যে আপনার সমাধানটি কেবলমাত্র সুযোগের দ্বারা কাজ করে বা আপনি নিশ্চিত হন যে আপনি নির্দিষ্টকরণগুলি সঠিকভাবে অনুসরণ করেছেন?
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ - আমি সংখ্যার ক্রমটির জন্য স্পষ্টভাবে কোড দিইনি, যদিও গ্যারান্টিযুক্ত আদেশের ফলে ভাষার কোনও অন্তর্নিহিত শর্ত থাকতে পারে। তারা সঠিক আরোহী ক্রম রেন্ডার। পৃথকভাবে, পোস্ট করার পরে, আমি বুঝতে পারি যে কীভাবে ডেটা উপস্থাপন করা উচিত (কার্ড প্রতি স্ট্রিপ অ্যারেগুলিতে কার্ডের প্রতি একক সেট না করে) - তাই এখনও সমস্যাটি সমাধান করতে পারেনি। সেই হিসাবে, ফলাফলটি বর্তমানে 6 টি প্রত্যাশিত সেটের প্রতিটিটির মধ্যে আরোহণের ক্রমে সঠিক সংখ্যাগুলি উপস্থাপন করে - লিঙ্কযুক্ত স্ক্যুচল ফ্রিডলটি দেখুন। তবুও করতে হবে: প্রতিটি সেটকে 5 টি সাবসেটে বিভক্ত করুন।
youcantryreachingme

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




1

ম্যাটল্যাব, 155 বাইট

cellfun(@disp,cellfun(@(x)x-repmat(62,5,6).*(x>60),cellfun(@(x)reshape(find(x,30),[5 6]),mat2cell(dec2bin(1:62)-48,62,ones(1,6)),'Uniform',0),'Uniform',0))

এটি একাধিক লাইন হিসাবে সংক্ষিপ্ত হতে পারে তবে আমি কোডের এক লাইনে এটি করতে চেয়েছিলাম।


1
আপনি কি পরীক্ষার কোড সহ একটি টিআইও লিঙ্ক যুক্ত করতে পারেন, তাই আমি আউটপুটটি যাচাই করতে পারি?
কেভিন ক্রুইজসেন

1

1
এর žOবদলে শুধু কেন 6L? আমি জানি আপনি এগুলি আপনার মানচিত্রে ব্যবহার করছেন না, তবে কেন আপনি aeiouy6 মান সহ একটি তালিকা তৈরি করতে ব্যবহার করেছেন তা জানতে আগ্রহী । এক্সডি চমৎকার উত্তর, বিটিডাব্লু!
কেভিন ক্রুইজসেন

1
@KevinCruijssen কোন বিশেষ কারন ছাড়াই, আমি শুধু ভেবেছিলাম এটা এর চেয়ে মজার ছিল 6L, , , , অথবা 9!
গ্রিমি

এটি অবশ্যই আমার নজর কেড়েছে, এটি অবশ্যই নিশ্চিত। ;)
কেভিন ক্রুইজসেন

@KevinCruijssen আমি শুধু উপলব্ধি тœ, ₅œ, ₁œ:, এছাড়াও কাজ, ঐ চমত্কার খুব শান্ত হয় (
Grimmy

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