একটি দুর্দান্ত শ্যাফল চালনা করুন ™


15

এই প্রশ্নের উদ্দেশ্যে, কার্ডগুলির একটি ডেকে এইভাবে ফর্ম্যাট করা হয়েছে:

[
  "AS", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS", 
  "AD", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD", 
  "AH", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH", 
  "AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC", 
  "J", "J"
]

কার্ডগুলি সর্বদা মান হিসাবে ফর্ম্যাট হয়, তারপরে স্যুট। উদাহরণস্বরূপ ASস্পাডেসের এস is দুটি একক জে হ'ল জোকার। আমরা কার্ডের এই ডেকে পরিবর্তন করতে চাই, তবে এলোমেলোটি অবশ্যই দুর্দান্ত ™

একটি দুর্দান্ত শ্যাফল ™ একটি যা:

  • একই মামলাটির কোনও দুটি কার্ড (জোকার বাদে) সংলগ্ন নয়।
  • কোনও কার্ড (জোকার্স ব্যতীত) একই মানের একের সাথে সংলগ্ন নয়।
  • কোনও কার্ড (জোকার্স ব্যতীত) সংলগ্ন মানগুলির একটিতে সংলগ্ন নয় (এই ক্রমে একটি উচ্চ বা এক নিম্ন, এ, 2, 3, 4, 5, 6, 7, 8, 9, 10, জে, কিউ, কে, উ: লক্ষ করুন যে টেকসই 2 বা কিং এর সাথে সংলগ্ন হতে পারে না)।
  • জোকাররা যে কোনও পদে থাকতে পারে।
  • একটি দুর্দান্ত শ্যাফলের সংজ্ঞা প্রতিবার কার্ডগুলি যখন বদলে যায় তখন তাদের আলাদা আলাদা ক্রমে থাকা প্রয়োজন হয় না । যা খুব চমত্কার নয়, তবে এটি দুর্দান্ত ™

কারণ এটি দুর্দান্ত ™

একটি উদাহরণ হতে পারে:

[
  "AS", "5D", "9H", "KC", "2D", "6H", "10C", "QS", "3H", "7C", "9S", 
  "KD", "4C", "6S", "10D", "AC", "3S", "7D", "JH", "J", "4D", "8H", 
  "QC", "AD", "5H", "9C", "JS", "2H", "6C", "8S", "QD", "3C", "5S", 
  "9D", "KH", "2S", "6D", "10H", "J", "3D", "7H", "JC", "KS", "4H", 
  "8C", "10S", "AH", "5C", "7S", "JD", "2C", "4S", "8D", "QH"
]

চ্যালেঞ্জ:

  • চমত্কার শফল চালাতে কিছু কোড লিখুন
  • যে কোনও ভাষা ব্যবহার করুন।
  • ইনপুট হতে পারে পারেন :
    • তাসের তাড়ার উপরে বর্ণিত হিসাবে একই আদেশ , একটি বিন্যাস বা অন্যান্য তালিকা গঠন করে।
    • কোনও ইনপুট নেই (কোডটি সেই ক্রমে কার্ডের একটি ডেকে উত্পন্ন করে)
  • উপরে বর্ণিত হিসাবে আউটপুট অবশ্যই একটি দুর্দান্ত শ্যাফল in এ কার্ডের একটি পূর্ণ ডেক হতে হবে।
  • স্বল্পতম বাইটে আপনার দুর্দান্ত শ্যাফল Sh সম্পাদন করার চেষ্টা করুন।
  • অনলাইন ইন্টারপ্রেটারের যেমন একটি ট্রাই ইট অনলাইন এর লিঙ্ক পছন্দ হয় তবে alচ্ছিক।

শুভ বদল!



আমরা কি Tপরিবর্তে বিকল্প করতে পারি 10?
জো কিং

@ জোকিং আপনি নাও পারেন। কার্ডের ডেকের প্রশ্ন উত্পন্ন করার মতোই, বিভিন্ন স্ট্রিং দৈর্ঘ্য জটিলতার অংশ।
এজেফারাডে

চারকোলের উত্তরের মতো আমাদের প্রতিটি কার্ড পৃথকভাবে মুদ্রণের অনুমতি দেওয়া হয়েছে, বা আমাদের আসলে কোন অ্যারে / তালিকাটি ফেরত দেওয়ার দরকার আছে?
কেভিন ক্রুইজসেন

@ কেভিনিক্রুজসেন এটি ঠিক আছে, যতক্ষণ না এটি উল্লেখযোগ্যভাবে সেই ফর্ম্যাটে কার্ডের একটি ডেকে ফেরত (মান তারপরে স্যুট)।
এজেফারাডে

উত্তর:


5

জাপট, 6 5 4 বাইট

ইনপুট অ্যারে প্রতি 16 তম উপাদান উপ-অ্যারে বিভক্ত এবং সমতল হয়।

óG c

চেষ্টা করে দেখুন


আপনি এটি চ্যাপ্টা প্রয়োজন?
অলিভার

@ অলিভার, আমি আশা করি না; নিশ্চিত হওয়ার জন্য এজে অপেক্ষা করছি।
শেগি

34

রুবি , 31 বাইট

->x{(0..53).map{|r|x[r*17%54]}}

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

ব্যাখ্যা:

আমি একটি কার্ড বাছাই করছি, তারপরে পরবর্তী 16 টি এড়িয়ে যাচ্ছি এবং ডেকের শেষ কার্ডে পৌঁছানোর পরে প্রথম কার্ড থেকে শুরু করব। 17 এবং 54 পারস্পরিকভাবে প্রধান, তাই আমি অবশ্যই সমস্ত কার্ড বাছাই করতে নিশ্চিত।

17 তম অবস্থানটি আলাদা মামলা হিসাবে গ্যারান্টিযুক্ত এবং মানটির পার্থক্য কমপক্ষে 2: 13 তম (বা 15 তম) কার্ডের একই মান এবং আলাদা মামলা রয়েছে, তাই অন্যান্য 4 (বা 2) এড়িয়ে মানটি সঠিক হয় ।


6
প্রতিটি অন্যান্য উত্তর ব্যবহার করে প্রক্রিয়াটি সন্ধানে ভাল হয়েছে;)
এজেফারাডে

3
আপনি কীভাবে * 17% 54 খুঁজে পেয়েছেন তা ব্যাখ্যা করতে পারেন? কেবল পরীক্ষা এবং ত্রুটি বা কিছু স্পষ্ট গণিত আছে যা আমি মিস করছি?
ড্যানিয়েল

@ ড্যানিয়েল 17 হ'ল দুটি পৃথকভাবে উপযুক্ত কার্ডগুলির মধ্যে প্রয়োজনীয় ন্যূনতম দূরত্ব যা সংখ্যাসূচক নয় (দুটি জোকারের অ্যাকাউন্টিং; উদাহরণস্বরূপ 17 টি পদক্ষেপ আপনাকে ক্লাবের এস থেকে স্পেডসের 3 এ নিয়ে যায়); ডেকের কার্ডের সংখ্যা 54।
Hellion


5

জাভাস্ক্রিপ্ট, 35 বাইট

x=>x.map((a,i)=>i%2?a:x[(i+20)%54])

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

ইনপুট হিসাবে ডেকের একটি অ্যারে নেওয়া, এবং প্রতিটি বিজোড় মানটিকে অন্য কার্ডের সাথে প্রতিস্থাপন করা যা "20 কার্ড" দূরে ডেকে রয়েছে।


1
আহা, যখন আমি আমার পোস্টে "প্রত্যেকে" ভুল ছিলাম; আমিও এভাবে চলে গেলাম!
জোনাথন অ্যালান

4

জাভা 10, 72 65 বাইট

d->{var r=d.clone();for(int i=54;i-->0;r[i*7%54]=d[i]);return r;}

@ জিবি'র রুবি উত্তর হিসাবে একই , তবে বাইট সংরক্ষণ করার জন্য ইনপুট-অ্যারের i*7%54পরিবর্তে ফলাফল-অ্যারে ব্যবহার করে i*17%54

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

ব্যাখ্যা:

d->{              // Method with String-array as both parameter and return-type
  var r=d.clone();//  Result-String, starting as a copy of the input
  for(int i=54;i-->0;
                  //   Loop `i` in the range (54, 0]
    r[            //    Set an item in the result-array at index:
      i*7%54      //     Index `i` multiplied by 7, and then take modulo-54
     ]=d[i]);     //    To the `i`'th item in the input-Deck
  return r;}      //  Return the result-Array

দুর্ভাগ্যক্রমে, ফলাফলটিতে একই কার্ডের কার্ড সংলগ্ন অসংখ্য কার্ড রয়েছে। এটি দিয়ে শুরু হয় AS, 6S, JS, 3D, 8D, KD,
এজেফারাডে

@ এজেফারাডে টিআইও এখনও instead এর পরিবর্তে ১১ জনের সাথে ছিলেন আপনি কি আবার এটি পরীক্ষা করতে পারেন। সম্ভবত আমি অন্য কিছু মিস করেছি, তবে আমি মনে করি এটি এখনই সঠিক হওয়া উচিত (আমি আশা করি)।
কেভিন ক্রুইজসেন

এটা এখন পেয়েছি। চমৎকার কাজ!
এজেফারাডে

3

পার্ল 6 , 21 20 18 বাইট

-২ বাইটের জন্য ব্র্যাড গিলবার্ট বি 2 গিলসকে ধন্যবাদ

{.[$++*17%$_]xx$_}

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

তবুও জিবি এর উত্তর একটি অন্য বন্দর । মনে রাখবেন যে, বিশ্বব্যাপী চলকটি $!ফাংশনগুলির মধ্যে পুনরায় সেট না করা হলেও, আউটপুটটির কোনও ক্রম বৈধ হওয়ায় মানটি কিছু যায় আসে না। যাইহোক, $ হয় পুনরায় সেট করুন।

ব্যাখ্যা:

{                } #Anonymous code block
             xx$_  #Repeat size of inputted array (54) times
 .[         ]      #Get from the inputted array, the value at index
    $++*17%$_         #The incremented variable, multiplied by 17, modded by size of the array

1
এই একটি নামহীন রাষ্ট্র Var সঙ্গে ঠিক যেমন ভাল কাজ করে $যেমন কিছু করে $!বা $/। এছাড়াও আপনি যদি আপনার $_পরিবর্তে ব্যবহার করেন তবে অন্য বাইট সংরক্ষণের পরিবর্তে @_এটি শুরু করতে পারেন । .[…]@_[…]
ব্র্যাড গিলবার্ট

2

05 এ বি 1 ই , 9 7 5 বাইট

ā17*è

এর বন্দর @ গিগাবাইট এর রুবি উত্তর, তাই তাকে upvote নিশ্চিত করুন!

-২ বাইটগুলি প্রতিটি কার্ডকে ফলাফল-তালিকায় মোড়ানোর পরিবর্তে একটি নতুন-লাইন ডিলিমিটার দিয়ে মুদ্রণ করে
-২ মিঃ এক্সএক্সকোডারকে ধন্যবাদ

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

ব্যাখ্যা:

ā        # 1-indexed length range [1 ... length_of_input_list (54)]
 17*     #  `k`: Multiply each index by 17
    è    #  And then replace each item with the 0-indexed `k`'th card of the input-list
         #  (with automatic wrap-around)

1
ā17*èআরও 2 টি বাইট সংরক্ষণ করা উচিত
মিঃ এক্সকডার

2

জাভাস্ক্রিপ্ট, 27

রুবি উত্তর বন্ধ অন্য একটি

d=>d.map((_,i)=>d[i*17%54])

সুস্পষ্ট সংক্ষিপ্ত আকারে সম্পাদিত


2

টি এসকিউএল, 31 বাইট

SELECT c FROM t ORDER BY i*7%54

যদি আপনি আউটপুটে কোনও অতিরিক্ত কলাম সম্পর্কে চিন্তা না করেন তবে আমি এটি 29 বাইটে নামিয়ে আনতে পারি :

SELECT*FROM t ORDER BY i*7%54

সুতরাং আপনি আমার আউটপুটটি "সুপারব" যাচাই করতে পারেন, এটি তৈরির ডেক এখানে রয়েছে:

 J, 5H,  8S, KH, 3D,  8C, JD, AS, 6H,  9S, AC, 4D, 9C, QD, 
2S, 7H, 10S, 2C, 5D, 10C, KD, 3S, 8H,  JS, 3C, 6D, JC, 
AH, 4S,  9H, QS, 4C,  7D, QC, 2H, 5S, 10H, KS, 5C, 8D, 
KC, 3H,  6S, JH, AD,  6C, 9D,  J, 4H,  7S, QH, 2D, 7C, 10D

(নতুন এসকিউএল 2017 সংযোজন ব্যবহার করে উত্পন্ন হয়েছে STRING_AGG):

SELECT STRING_AGG(c,', ')WITHIN GROUP(ORDER BY i*7%54)FROM t 

আমার পক্ষে শক্ত অংশটি নির্বাচিত কোড ছিল না, এটি ইনপুট টেবিলটি পপুলেশন করছিল (যা আমাদের আইও নিয়ম অনুসারে এসকিউএল এর জন্য অনুমোদিত) )।

এইজন্য কারণ sql (এটি শুধুমাত্র একটি নির্দিষ্ট ক্রম আপনি একটি সুনির্দিষ্ট অন্তর্ভুক্ত গ্যারান্টী বা নিশ্চয়তা দিচ্ছে মজ্জাগতভাবে unordered হয় ORDER BYদফা), কারণ আমি একটা ক্ষেত হিসাবে মূল অর্ডার অন্তর্ভুক্ত করা ছিল আমি ইনপুট টেবিলের টি । এর অর্থ হ'ল আমি একে অন্যের তুলনায় একই "তুলনামূলকভাবে প্রধান" ফ্যাক্টর / মোড প্রক্রিয়াটি ব্যবহার করে বাছাই করতে ব্যবহার করতে পারি। আমি এটি খুঁজে পেয়েছিi*7%54 কাজ ঠিক হিসাবে কাজ i*17%54

এই সম্পর্কিত প্রশ্নের আমার সমাধানের উপর ভিত্তি করে ইনপুট টেবিল টি সেট আপ এবং পপুলেট করার কমান্ডগুলি এখানে রয়েছে :

CREATE TABLE t (i INT IDENTITY(1,1), c VARCHAR(5))

--Insert 52 suited cards
INSERT t(c)
SELECT v.value+s.a as c
FROM STRING_SPLIT('A-2-3-4-5-6-7-8-9-10-J-Q-K','-')v,
     (VALUES('S',1),('D',2),('H',3),('C',4))s(a,b)
ORDER BY s.b

--Insert Jokers
INSERT t(c) SELECT 'J'
INSERT t(c) SELECT 'J'

চান iএখানে অতিরিক্ত ইনপুট বিবেচনা করা?
শেগি

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

2

জেলি ,  5  4 বাইট

s⁴ZẎ

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

উপায় বাদে বাকি সবাইকে বাদ দেয় র্যান্ডম লোক এটি একটি বাইট :( সংরক্ষণ করছে
ক্রেডিট তাদের পদ্ধতির জন্য গিগাবাইট


আমি যেভাবে গেলাম ...

ṙÐe20

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

কিভাবে?

প্রতিটি অন্যান্য কার্ড ঠিক করুন এবং 20 টি জায়গায় রেখে যাওয়া ডেকের আবর্তনের সাথে ছেদ করুন (১৮ এবং ২২ টি স্থানেও এটি কাজ করে; তদুপরি, ঘূর্ণনের দিকের পাশাপাশি বিজোড় বা এমনকি কার্ডগুলিও ঠিক করা হয়)

ṙÐe20 - Link: list of the card strings (lists of characters)
   20 - place a literal twenty on the right
 Ðe   - apply to even indices:
ṙ     -   rotate left (by 20)

(ব্যবহার করছে যা Tজন্য 10এবং rj& bjজন্য Jগুলি):

input: AS 2S 3S 4S 5S 6S 7S 8S 9S TS JS QS KS AD 2D 3D 4D 5D 6D 7D 8D 9D TD JD QD KD AH 2H 3H 4H 5H 6H 7H 8H 9H TH JH QH KH AC 2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KC rj bj
  ṙ20: 8D 9D TD JD QD KD AH 2H 3H 4H 5H 6H 7H 8H 9H TH JH QH KH AC 2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KC rj bj AS 2S 3S 4S 5S 6S 7S 8S 9S TS JS QS KS AD 2D 3D 4D 5D 6D 7D
ṙÐe20: AS 9D 3S JD 5S KD 7S 2H 9S 4H JS 6H KS 8H 2D TH 4D QH 6D AC 8D 3C TD 5C QD 7C AH 9C 3H JC 5H KC 7H bj 9H 2S JH 4S KH 6S 2C 8S 4C TS 6C QS 8C AD TC 3D QC 5D rj 7D

2

পাওয়ারশেল ৩.০, 30 26 বাইট

$args[(0..53|%{$_*17%54})]

-4
30 বাইটে মাজ্জি ওল্ড কোডকে ধন্যবাদ

param($d)0..53|%{$d[$_*17%54]}

জিবি পদ্ধতির আরেকটি বন্দর।


26 বাইট $args[(0..53|%{$_*17%54})]
mazzy

@ ম্যাজি আমার মনে হচ্ছে এটি ইনপুট স্পেসগুলি ভেঙে দেয়। নিশ্চিত যে সেগুলি $
অর্গগুলিতে

উদ্ধৃতি: The input can be either:... in the same order, as *an array*$argsএকটি অ্যারে হয়। এবং আপনি একটি splatting ব্যবহার করতে পারেন । উদাহরণস্বরূপ $a=@("AS", ..., "J"); &{} @a। চেষ্টা করে দেখুন :)
mazzy

অতিরিক্ত হিসাবে, আমার কাছে মনে হয় অক্ষরগুলি গণনা করার দরকার নেই &{এবং }। আপনি param($d)0..53|%{$d[$_*17%54]}একটি ফাইল সংরক্ষণ করতে পারেন । এবং এই ফাইলটি কল করুন&{...}
mazzy

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

1

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

Eθ§θ×¹⁷κ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। @ জিবি এর রুবি উত্তর এর অন্য একটি বন্দর। ব্যাখ্যা:

 θ          Input array
E           Map over elements
       κ    Current index
     ¹⁷     Literal 17
    ×       Multiply
   θ        Input array
  §         Cyclically index
            Implicitly print each result on its own line

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