খেলোয়াড়দের কার্ড কার্ড


15

আজ রাতে কার্ড গেম নাইট! আপনি ডিলার এবং আপনার কাজ প্লেয়ারদের কার্ডকে ডিল করার জন্য একটি প্রোগ্রাম লিখতে হবে।

কার্ডগুলির একটি অ্যারে এবং প্লেয়ারের সংখ্যা দেওয়া, আপনাকে প্রতিটি খেলোয়াড়ের জন্য কার্ডের অ্যারেটি এক হাতে ভাগ করতে হবে।

উদাহরণস্বরূপ 10 টি কার্ডের ডেকে 4 জন খেলোয়াড়ের জন্য

বিধি

আপনার প্রোগ্রামটি একটি শূন্য-বিন্যাসের Aপাশাপাশি অ-শূন্য ধনাত্মক পূর্ণসংখ্যা প্রাপ্ত করবে n। অ্যারেটি তখন nহাতে ভাগ করা উচিত । যদি স্ট্রিংয়ের দৈর্ঘ্যটি nকোনও বাম পাশের কার্ড দ্বারা বিভাজ্য না হয় তবে যথাসম্ভব সমানভাবে বিতরণ করা উচিত।

  • যদি এটির উপাদান থাকে তবে আপনাকে n==1অ্যারের একটি অ্যারে ফেরত দিতে হবেA
  • যদি nদৈর্ঘ্যের চেয়ে বেশি হয় তবে Aআপনাকে প্রতিটি হাত এবং খালি হাতে ফিরতে হবে। যদি n = 4এবং array A = [1,2,3], আপনার ফিরে আসা উচিত [[1],[2],[3]]বা [[1],[2],[3],[]]। আপনি খালি, অপরিজ্ঞাত বা নাল দিয়ে খালি হাতটি পরিচালনা করতে মুক্ত।

  • অ্যারেতে সংখ্যার চেয়ে কোনও প্রকার থাকতে পারে।

  • লেনদেন করার সময় আপনার অ্যারের ক্রমটি পরিবর্তন করা উচিত নয়। উদাহরণস্বরূপ if n = 2এবং A= [1,2,3], এর চেয়ে কোনও ফলাফল [[1,3],[2]]অবৈধ হবে।

পরীক্ষার কেস

n   A               Output

1   [1,2,3,4,5,6]   [[1,2,3,4,5,6]]
2   [1,2,3,4,5,6]   [[1,3,5],[2,4,6]]
3   [1,2,3,4,5,6]   [[1,4],[2,5],[3,6]]
4   [1,2,3,4,5,6]   [[1,5],[2,6],[3],[4]]
7   [1,2,3,4,5,6]   [[1],[2],[3],[4],[5],[6]] // or [[1],[2],[3],[4],[5],[6],[]]

ডেমো প্রোগ্রাম

def deal(cards, n):
	i = 0
	players = [[] for _ in range(n)]
	for card in cards:
		players[i % n].append(card)
		i += 1
	return players

hands = deal([1,2,3,4,5,6], 2)

print(hands)

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

এটি , সুতরাং আপনি প্রতিটি ভাষার সংক্ষিপ্ত বাইটগুলি বিজয়ী হবেন।

চৌ জিয়াং দ্বারা অ্যারে থেকে খণ্ডগুলি তৈরি করা থেকে অনুপ্রাণিত


1
আপনাকে প্রতিটি হাত ফিরিয়ে দিতে হবে এবং একটি খালি হাত শেষ পরীক্ষার কেসের প্রথম ফলাফলের সম্ভাবনার সাথে বৈপরীত্য প্রদর্শন করে।
অ্যাডম

6
ভবিষ্যতে আমি আপনার প্রশ্নটি মূলত পোস্ট করার আগে সমস্যাগুলি সমাধানের জন্য এবং সম্প্রদায়ের প্রতিক্রিয়াগুলি সনাক্ত করতে স্যান্ডবক্স ব্যবহার করার পরামর্শ দেব
জো কিং

2
@ জোকিং আমি পুরোপুরি একমত আমি ভাবিনি যে আমার এত সম্পাদনা করতে হবে। এটি প্রথমে বিটা মোতায়েন না করে প্রোডে চাপ দেওয়ার মতো। সাহায্যের জন্য আপনাকে ধন্যবাদ।
aloisdg codidact.com

1
@aloisdg আমি আপনার প্রস্তাবিত বিকল্প নিয়ম পার্স করতে পারি না। যদি ধারণাটির মতো লোকেরা প্রায়শই একটি চেনাশোনা নিয়ে আসে, তবে বেশিরভাগ কার্ড দিয়ে শেষ হওয়া সমস্ত খেলোয়াড় শুরুতেই থাকে এবং যে খেলোয়াড়গুলি শেষ হয় তারা কোনও কার্ড পায় না।
অ্যাডম

2
কি হবে যদি ইনপুট অ্যারের রয়েছে একটি0 ?
শেগি

উত্তর:


12

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

আদনানকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

ι

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

ব্যাখ্যা

ι  # uninterleave

চ্যালেঞ্জটি যা চায় ঠিক তাই করে


5
আমি মনে করি ι
আদনান

@ আদনান: হ্যাঁ ধন্যবাদ :) কেবলমাত্র পার্থক্য হ'ল খালি তালিকা n=7, তবে এটি একটি গ্রহণযোগ্য আউটপুট ফর্ম্যাট। আমি বিল্ট-
ইনটি

সুতরাং এর জন্য অন্তর্নির্মিত একটি ভাষা আছে! : ডি
এলোইসডিগ কোডিংডটকম এ চলছে


7

পার্ল 6 , 33 24 বাইট

->\b{*.classify:{$++%b}}

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

নামবিহীন ক্যারিড কোড ব্লক যা একটি সংখ্যা নেয় এবং যে কোনও লাম্বদা যা তালিকা নেয় এবং তালিকাগুলির একটি তালিকা ফেরত দেয়। তালিকার দৈর্ঘ্যের চেয়ে বড় কোনও সংখ্যা দেওয়া হলে এটি দ্বিতীয় বিকল্পটি নেয়f(4)([1,2,3]) রিটার্ন[[1],[2],[3]]

ব্যাখ্যা:

->\b{                  }  # Anonymous code block that takes a number
     *                    # And returns a Whatever lambda
      .classify           # That groups by
               :{$++%b}   # The index modulo the number




5

জেলি , 6 2 বাইট

sZ

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

4 বাইট সংরক্ষণ করার জন্য @ জোনাথান অ্যালানকে ধন্যবাদ


না sZকাজ না?
জোনাথন অ্যালান

@ জোনাথন অ্যালান হ্যাঁ, কোনওরকমে এটি মিস করেছেন। আপনি কি আলাদা উত্তর হিসাবে পোস্ট করতে চান বা আমি আমার সম্পাদনা করব?
নিক কেনেডি

না আপনি সম্পাদনা করতে স্বাগত :)
জোনাথন অ্যালান

4

জে , 13 , 11 , 10 , 9 বাইট

(|#\)</.]

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

কীভাবে (পূর্ববর্তী ব্যাখ্যা, মূলত একই)

] </.~ (| #\)
  </.~          NB. box results of grouping
]               NB. the right arg by...
         |      NB. the remainders of dividing...
       [        NB. the left arg into...
           #\   NB. the length of each prefix of...
              ] NB. the right arg,
                NB. aka, the integers 1 thru
                NB. the length of the right arg

3

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

IEθ✂ηιLηθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ক্রমে ইনপুট নেয় [n, A]এবং প্রতিটি লাইনের নিজস্ব লাইনে আউটপুট দেয় এবং প্রতিটি হাত আগের থেকে দ্বিগুণ d ব্যাখ্যা:

  θ         First input `n`
 E          Map over implicit range
    η       Second input `A`
   ✂        Sliced
     ι      Starting at current index
      Lη    Ending at length of `A`
        θ   Taking every `n`th element
I           Cast to string
            Implicitly print

একটি কাঁচি "স্লাইস" এর প্রতীক তৈরি করার জন্য +1!
জোনাহ

2

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

import Data.Lists
(transpose.).chunksOf

দ্রষ্টব্য: Data.Listsতৃতীয় পক্ষের লাইব্রেরি তালিকা থেকে রয়েছে , যা স্ট্যাকেজে নেই এবং তাই এইচটিউলে প্রদর্শিত হবে না।


Data.Listsবলে মনে হচ্ছে না আমি ধরে নেব যে আপনি বোঝাতে চেয়েছিলেন Data.Listতবে এটি এতে নেই chunksOf
জোসেফ সিবল-রিইনস্টেট মনিকা

chunksOfকেবলমাত্র স্বাক্ষর দিয়ে উপস্থিত হবে বলে মনে হচ্ছে Int -> Text -> [Text]1
পোস্ট রক গারফ হান্টার

@ জোসেফসিবল, এটি listsপ্যাকেজে রয়েছে।
dfeuer

@ শ্রীওচিলিজম ও'জাইক, গুগলে প্রচুর জিনিস দেখা যায় না। এটি splitপ্যাকেজে রয়েছে এবং প্যাকেজটি পুনরায় রফতানি করে listschunksOfতালিকাগুলি, পাঠ্যক্রম, ক্রম এবং সম্ভবত অন্যান্য জিনিসের জন্য সংস্করণ রয়েছে ।
dfeuer

2

কোটলিন , 53 51 49 বাইট

{a,n->(0..n-1).map{a.slice(it..a.size-1 step n)}}

পুরানো, ভুল সমাধানটি কেবল অ্যারের দৈর্ঘ্যের বিভাজনকারীদের জন্য কাজ করেছিল। আমি নিশ্চিত এটি নিচে ঝাপটানো যেতে পারে।

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



nতালিকার দৈর্ঘ্যের বিভাজক না হয়ে কাজ করে না
জো কিং

আমি, ধন্যবাদ। এখনই এটি ঠিক করা
অ্যাডাম

আমি বিশ্বাস করি এটি কেবলমাত্র ASCII- ঠিক করা হয়েছে
অ্যাডাম

1
দেখে মনে হচ্ছে আপনি অতিরিক্ত জোড়া ও পেরেনগুলি সরিয়ে ফেলতে পারেন
ASCII- কেবল


1

এপিএল + উইন 26 বা 31 বাইট

যদি স্বতন্ত্র হাতগুলিকে 2 ডি ম্যাট্রিক্সের কলাম হিসাবে উপস্থাপন করা যায় তবে অ্যারেগুলির অ্যারে যদি 26 বাইট থাকে তবে 5 বাইট যুক্ত করুন।

(l,n)⍴((l←⌈(⍴a)÷n)×n←⎕)↑a←⎕

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

অথবা

⊂[1](l,n)⍴((l←⌈(⍴a)÷n)×n←⎕)↑a←⎕

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

ব্যাখ্যা:

কার্ডের অ্যারের জন্য একটি ← ⎕ প্রম্পট

((l ← ⌈ ()a) ÷ n) × n ← ⎕) inte পূর্ণসংখ্যার জন্য প্রম্পট করুন, একটি হাত জিরো দিয়ে প্যাড করুন

(l, n) each প্রতিটি হাতকে উপস্থাপন করে প্রতিটি কলাম দিয়ে 2 ডি ম্যাট্রিক্স তৈরি করুন

⊂ [1] প্রয়োজনে নেস্টেড ভেক্টরে রূপান্তর করতে হবে - এপিএল অ্যারে


1

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

-- @       : table containing the input 
-- column c: value of the card, 
-- column a: position on the card in the deck
-- @n      : number of players

DECLARE @ table(a int identity(0,1), c varchar(9))
DECLARE @n int = 4

INSERT @ values('1a'),('2c'),('3e'),('4g'),('5i'),('6k')

SELECT string_agg(c,',')FROM @ GROUP BY a%@n

চেষ্টা কর


1
প্রতিবার যখন আমি এই ওয়েবসাইটে থাকি তখন আমি নতুন কিছু দেখি এবং "বাহ যে চিত্তাকর্ষক, তবে কেন?"
মাইন্ডসুইপ

@ মাইন্ডসুইপ আমি স্ট্যাকওভারফ্লোতে প্রচুর প্রশ্নের উত্তর দিয়েছি, তবে এই প্রশ্নগুলির মধ্যে অনেকগুলি একই বা প্রায় একই রকম - এছাড়াও মনে হয় যে আমি নিখরচায় কাজ করছি। কোড-গল্ফের প্রশ্নগুলি প্রতিবারই আলাদা হয় এবং আমি এগুলি বেশি উপভোগ করি কারণ আমি এমন পদ্ধতি ব্যবহার করতে পারি যা আমার সাথে বিরল হয়।
t-clausen.dk

1

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

\ô_í\%q╞;

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

ব্যাখ্যা

\           swap top elements (pops both input onto stack)
 ô          start block of length 6
  _         duplicate TOS (will duplicate the list)
   í        get total number of iterations of for loop (the other input)
    \       swap top elements
     %      modulo (picks every n:th item of the list
      q     print without newline
       ╞    discard from left of string/array (makes the next player pick cards starting with the next in the deck)
        ;   discard TOS (removes some junk in the end)

1

জাভা (জেডিকে) , 90 বাইট

A->n->{var o="";for(int h=0,i;h<n;o+="\n")for(i=h++;i<A.length;i+=n)o+=" "+A[i];return o;}

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

ল্যাম্বডা এবং পুনরাবৃত্তির সময় আরও ভাল বর্ধনের জন্য অলিভিয়ার গ্রাগোয়ারকে ধন্যবাদ ।



@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ! এতে কিছুটা নতুন এবং ল্যাম্বডা বিটে কাজ করে যাচ্ছিলেন তবে লড়াই করছেন ling
ড্যানিয়েল উইদিস

1

রুবি, 81 বাইট

def s a,n;a.each_with_index.inject(([[]]*n).map(&:dup)){|b,(c,d)|b[d%n]<<c;b};end

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


1
আপনি যাচাইকরণের স্বাচ্ছন্দ্যের জন্য সম্ভবত কোনও অনলাইন পরীক্ষার পরিবেশে একটি লিঙ্ক যুক্ত করতে পারেন?
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ আপনি সেখানে যান
এভিলিন

পিপিসিজিতে আপনাকে স্বাগতম! দৈর্ঘ্যের জন্য আপনি করতে পারেন এমন অনেকগুলি অপ্টিমাইজেশন রয়েছে; উদাহরণস্বরূপ, each_with_indexইনক্রিমেন্টিং কাউন্টারের তুলনায় বেশ ব্যয়বহুল, map{[]}মূলত আপনার map(&:dup)কৌশল, বেনামে প্রোক ইত্যাদির মতো একই কাজ করে যা আপনার কোডটি 59 বাইটে হ্রাস করতে পারে। এটি অনলাইন চেষ্টা করুন! এছাড়াও রুবি টিপস পৃষ্ঠাটি দেখুন
মান কালি

1

পিএইচপি ,85 83 82 বাইট

function($a,$n){while($x<$n)$c[]=array_column(array_chunk($a,$n),+$x++);return$c;}

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

এটি স্বল্পতম এন্ট্রি হবে না তবে আমি ভেবেছিলাম যে পিএইচপি অ্যারে ফাংশন বিল্ট-ইনগুলি ব্যবহার করে চেষ্টা করে এটি করতে মজা হবে। ফলাফল: দীর্ঘ

আউটপুট

1   [1,2,3,4,5,6]   [[1,2,3,4,5,6]]
2   [1,2,3,4,5,6]   [[1,3,5],[2,4,6]]
3   [1,2,3,4,5,6]   [[1,4],[2,5],[3,6]]
4   [1,2,3,4,5,6]   [[1,5],[2,6],[3],[4]]
7   [1,2,3,4,5,6]   [[1],[2],[3],[4],[5],[6],[]]
5   ["9C","QD","2S","4H","6D","AS","9D","TH","5C"]  [["9C","AS"],["QD","9D"],["2S","TH"],["4H","5C"],["6D"]]

1
শুধু এফওয়াইআই, পরিবর্তে print_flatআপনি কেবল json_encode স্যান্ডবক্স করতে পারেন - উত্তরটি কোনও উত্তর দেয় না, কেবল ভেবেছিলাম আমি এটি উল্লেখ করব, চিয়ার্স!
আর্টিস্টিকফিনিক্স

@ আর্টিস্টিকফোনিক্স অবশ্যই, ভাল! (ফেসপাম) ধন্যবাদ! :)
640KB

1

O_o ব্যাখ্যা pls
ASCII-

@ এএসসিআইআই-কেবল ;; ;;একটি টুকরো, মোটামুটি পাইথনের সমান : :; এটি প্রত্যেকের টুকরা পায়এনঅফসেটের 1 তম উপাদান ... এন
এটিনিট

হ্যাঁ, ভুলে গেছি এটা লোল ;;না ;। এই চলছে "wth is i ; ; ; ; #"
এএসসিআইআই-

0

@ জোকিংয়ের [1,2,3], 4আউটপুট হওয়া উচিত [[1],[2],[3]]। আপনি 4 জন খেলোয়াড়কে 3 টি কার্ড ডিল করছেন। আমি মূল প্রশ্নটি আপডেট করব।
aloisdg codidact.com

1
অবিলম্বে আপনার নিজের চ্যালেঞ্জগুলির সমাধান পোস্ট করতে নিরুৎসাহিত করা হয়।
শেগি

1
@ শেগি ঠিক আছে আমি পরের বারের জন্য এটি অ্যাকাউন্টে নেব। এটি ঠিক আছে এবং আরপিজি তবে আমি অনুমান করি কোডগল্ফের প্রতিযোগিতামূলক দিকটি এটি সরাসরি নিজের পোস্টে কিছুটা অন্যায় করেছে। ধারণা তৈরী কর.
aodisdg codidact.com

@ জো রাজা আপনি ঠিক বলেছেন! আমি একটি টাইপ করেছি: /
এলোইসডি কোডিড্যাকট.কম

0

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

সংকলক পতাকা -Df=(স্পেস অগ্রণী স্থান) স্পেসিফিকেশন পূরণ করে। f(n_cards,n_hands,card_ptr)হাতের তালিকার দিকে একটি পয়েন্টারকে মূল্যায়ন করে।

ব্যাখ্যা

সি তে, একক আন্তঃবাহিত অ্যারে হিসাবে তালিকাগুলির তালিকা প্রয়োগ করা সাধারণ অনুশীলন, যখন তালিকার সংখ্যা স্থির থাকে তবে সমস্ত তালিকাগুলি বাড়ানো যেতে পারে। উদাহরণস্বরূপ, কার্ডগুলি ডিল করার ক্ষেত্রে, আরও বেশি হাত যুক্ত হওয়ার চেয়ে প্রতিটি হাতে আরও কার্ড যুক্ত হওয়া আরও সাধারণ, তাই আন্তঃস্তৃত তালিকা হিসাবে হাতের তালিকাটি কার্যকর করা যুক্তিসঙ্গত হবে। কাকতালীয়ভাবে, "ডেক" এমন একটি তালিকা, এবং এইভাবে আমরা প্যারামিটারটি অপরিশোধিতভাবে ফিরিয়ে আনি।

এই চ্যালেঞ্জটি সম্ভবত স্যান্ডবক্স করা উচিত ছিল।


আমি মনে করি আমরা সকলেই স্যান্ডবক্সের জন্য সম্মত হই
aloisdg

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