এটি কোন কার্ড?


30

ভূমিকা

অনেক আগে, যখন আমি সাধারণ প্লে কার্ডগুলির সাথে কার্ড গেমস কোড করতাম, আমি প্রতিটি কার্ডের জন্য একটি নম্বর নির্দিষ্ট করে বলতাম এবং কার্ড পাওয়ার জন্য কয়েকটি নম্বর দিয়ে একটি ফাংশন কল করতাম। এটি কিছুটা আমাকে এই চ্যালেঞ্জটি তৈরি করতে অনুপ্রাণিত করেছিল।

সুতরাং প্লে কার্ডগুলি সম্পর্কে অসচেতন লোকদের জন্য, কার্ডের একটি ডেকে 52 টি কার্ড থাকে (চারটি স্যুটগুলির প্রত্যেকটিতে 13 টি, অর্থাত, হৃদয়, হীরা, স্পেডস, ক্লাব)। প্রতিটি স্যুটে 13 টি কার্ড রয়েছে - প্রথমত কার্ডগুলি 2-10 থেকে জ্যাক, জ্যাক (জে), কুইন (কিউ), কিং (কে) এবং এস (এ) থেকে শুরু করে from এই আদেশ

চ্যালেঞ্জ

চ্যালেঞ্জটি হ'ল ইনপুট হিসাবে 1-52 এর মধ্যে একটি পূর্ণসংখ্যা নেওয়া এবং সেই অবস্থানে কার্ডটি প্রদর্শন করা। তবে, আপনার আউটপুট অবশ্যই কথায় হবে। এছাড়াও, অর্ডার বজায় রাখতে হবে, প্রথমত 13 টি কার্ড হৃদয়, তারপরে হীরা, তারপরে স্পেডস এবং অবশেষে ক্লাবগুলির হবে।

উদাহরণস্বরূপ, যদি কেউ নম্বরটি চয়ন করেন 30card কার্ডটি তখন তৃতীয় মামলা, অর্থাত্ স্প্যাডসের অন্তর্ভুক্ত। এছাড়াও, এটি স্যুটটিতে চতুর্থ কার্ড হবে, যার অর্থ সংখ্যা 5 5. সুতরাং আপনার কথায় আপনার আউটপুটটি অবশ্যই হওয়া উচিত: five of spadesএবং এটি সর্বদা এই ফর্ম্যাটটি অনুসরণ করা উচিত , অর্থাত্, প্রথমে কার্ডটি, তারপরে একটি ofএবং স্যুটটির নাম অনুসরণ করা উচিত এর মধ্যবর্তী স্থানে প্রয়োজনীয় স্পেস সহ।

ইনপুট এবং আউটপুট

ইনপুটটি 1-52 (উভয় সমেত) এর মধ্যে একটি পূর্ণসংখ্যা হবে । নোট করুন যে এখানে গণনা 1 থেকে শুরু হয় You আপনি 0 থেকে শুরু করতে বেছে নিতে পারেন । তবে আপনাকে অবশ্যই উপরে উল্লিখিত কার্ডগুলির ক্রম বজায় রাখতে হবে । আপনার আউটপুট শব্দের সাথে লেখা সেই অবস্থানে কার্ড হওয়া উচিত। আপনার অবৈধ ইনপুট হ্যান্ডেল করার দরকার নেই। এছাড়াও, আপনার আউটপুটটি লোয়ার-কেস বা বড়-বড় ক্ষেত্রে হতে পারে।

সমস্ত সম্ভাব্য ইনপুট এবং তাদের ফলাফলগুলি নীচে দেওয়া হল:

1 -> two of hearts
2 -> three of hearts
3 -> four of hearts
4 -> five of hearts
5 -> six of hearts
6 -> seven of hearts
7 -> eight of hearts
8 -> nine of hearts
9 -> ten of hearts
10 -> jack of hearts
11 -> queen of hearts
12 -> king of hearts
13 -> ace of hearts
14 -> two of diamonds
15 -> three of diamonds
16 -> four of diamonds
17 -> five of diamonds
18 -> six of diamonds
19 -> seven of diamonds
20 -> eight of diamonds
21 -> nine of diamonds
22 -> ten of diamonds
23 -> jack of diamonds
24 -> queen of diamonds
25 -> king of diamonds
26 -> ace of diamonds
27 -> two of spades
28 -> three of spades
29 -> four of spades
30 -> five of spades
31 -> six of spades
32 -> seven of spades
33 -> eight of spades
34 -> nine of spades
35 -> ten of spades
36 -> jack of spades
37 -> queen of spades
38 -> king of spades
39 -> ace of spades
40 -> two of clubs
41 -> three of clubs
42 -> four of clubs
43 -> five of clubs
44 -> six of clubs
45 -> seven of clubs
46 -> eight of clubs
47 -> nine of clubs
48 -> ten of clubs
49 -> jack of clubs
50 -> queen of clubs
51 -> king of clubs
52 -> ace of clubs

স্কোরিং

এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী।


1
সাধারণত অন্তরে, স্পেসস, হীরা, ক্লাবগুলির (লাল, কালো, লাল, কালো) স্যুটগুলির ডিফল্ট ক্রম নয়। এটি যে চ্যালেঞ্জের জন্য গুরুত্বপূর্ণ তা নয়, কেবল এই ক্রমে এটি কেন ভাবছিল।
কেভিন ক্রুজসসেন

3
এটি খেলা থেকে গেমের পরিবর্তিত হয়। বিভিন্ন গেম বিভিন্ন অর্ডার অনুসরণ করে। কার্ডের কথা বলছি, কিছু গেমের স্যুটে সর্বনিম্ন কার্ড হিসাবে টেক্কাও রয়েছে।
মনীষ কুণ্ডু

আমি two\s\s\sof\sheartsকোথায় আউটপুট দিতে পারি যেখানে \sকোনও স্থান দাঁড়িয়ে আছে? (দুটি অতিরিক্ত স্থান নোট করুন))
নিখুঁতভাবে

2
@ টোটালিহুমান দুঃখিত, তবে এর মধ্যে অবশ্যই ঠিক 1 স্থান থাকতে হবে
মণীশ কুণ্ডু

উত্তর:


31

পাইথন 3 ,  115  90 বাইট

from unicodedata import*
lambda n:name(chr(n%13+n%13//11+[6,0,4,2][-n//13]*8+127137))[13:]

বড়হাতে স্ট্রিংটি ফিরিয়ে আনছে একটি নামহীন ফাংশন।

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

কিভাবে?

ইউনিকোডের অক্ষরের নাম রয়েছে। এর মধ্যে কয়েকটির নাম "স্পিডে দুটি বাজানো কার্ড" এর মতো, অতএব আমরা প্রয়োজনীয় কার্ডের প্রতিনিধিত্ব করে ইউনিকোডের অক্ষরগুলি পেতে পারি এবং আমাদের আউটপুট পেতে প্রথম 13 টি অক্ষর ছাঁটাই করতে পারি।

ইউনিকোডের আগ্রহের অক্ষরগুলি এর মতো একটি ব্লকের মধ্যে রয়েছে:

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
U+1F0Ax     x   As  2s  3s  4s  5s  6s  7s  8s  9s  Ts  Js  x   Qs  Ks  x
U+1F0Bx     x   Ah  2h  3h  4h  5h  6h  7h  8h  9h  Th  Jh  x   Qh  Kh  x
U+1F0Cx     x   Ad  2d  3d  4d  5d  6d  7d  8d  9d  Td  Jd  x   Qd  Kd  x
U+1F0Dx     x   Ac  2c  3c  4c  5c  6c  7c  8c  9c  Tc  Jc  x   Qc  Kc  x                           

যেখানে xআমরা যে অক্ষরগুলি নেই তার পরে নেই ( Cকলামের চারটি হ'ল "নাইট"; তিনটি F"জোকার"; একটিতে 0জেনেরিক; বাকীগুলি সংরক্ষিত অক্ষর)।

এর মতো আমরা চাইলে কার্ডটি খুঁজে পেতে আমরা 0x1F0A1 = 127137 (As) তে কিছু মান যুক্ত করতে পারি।

যুক্ত করার মানটি কেবল তিনটি জিনিস দ্বারা জটিল:

  1. আমাদের স্যুটগুলি পুনঃক্রম করতে হবে (s, h, d, c থেকে h, d, s, c)
  2. আমাদের (এ, ২, ..., কে থেকে ২, ..., কে, এ) থেকে র‌্যাঙ্কগুলি পুনঃক্রম করতে হবে
  3. আমাদের আগ্রহের কার্ড ছাড়াই কলামগুলি এড়াতে হবে।

ওয়ান-ইনডেক্সিং বিকল্পটি ব্যবহার করে সুনির্দিষ্টভাবে পুনরায় অর্ডার করার জন্য [6,0,4,2][-n//13]*8+(কার্যকরভাবে [48,0,32,16][-n//13]) সারি-ভিত্তিক অফসেটের অ্যারেতে নেতিবাচক পূর্ণসংখ্যার বিভাগকে ব্যবহারের অনুমতি দেওয়া হয় , তারপরে আমরা সেই জায়গাগুলিকে সঠিক স্থানেও রেখে দিতে পারি n%13+এবং তারপরে এড়াতে পারি (কার্যকরভাবে ) Cসহ কলামে নাইটস ।n%13//11+(n%13>10)+


আমি যেমন উত্তরটি শুরু করছিলাম ঠিক তেমনই (আমি নিশ্চিত আমার আরও দীর্ঘতর হত) আমি একবার তাকিয়ে আপনার উত্তরটি দেখেছি। সুন্দর.
mbomb007

... এবং আরও একটি বাইট গল্ফ করার জন্য ছিল :)
জোনাথন অ্যালান

13

পার্ল 6 / রাকুডো 70 বাইট

সূচক 0

perl6 -peকোনও অভিধান সংকোচনের সাথে ব্যবহার করে এবং:

chr('🂱🃁🂡🃑'.ords[$_/13]+($_+1)%13*1.091).uniname.substr(13)

এটি কেবল ইউনিকোডে কার্ডটি দেখায় (এস থেকে শুরু করে) নাম জিজ্ঞাসা করে এবং এটি ব্যবহার করে। এটি জোনাথন আইটকেনের পাইথনের উত্তরটি (যদিও আমি তখন জানতাম না!) এটি একই ধরণের রুট - কেবলমাত্র স্পেসের এস থেকে 4 অফসেটের চেয়ে সমস্ত 4 টি এসি থেকে আমি সূচী করেছি এবং সূচকটি তৈরি করতে আমি 1.091 দ্বারা গুণ করেছি ইউনিকোডে নাইট এন্ট্রি থেকে দূরে।

সমস্ত আউটপুট দেখুন (0 থেকে 51 ইনপুট মানগুলির জন্য) https://glot.io/snippets/ez5v2gkx83

ইউনিকোড ডেকে নাইটদের সাথে লড়াই করতে সম্পাদিত, কারণ ইউনিকোড।

পার্ল 6 ♥ ইউনিকোড


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

@ জোনাথন অ্যালান: অন্যান্য উত্তরের গণনাতে কিছু ভুল আছে - প্রত্যেকে চরিত্র বলতে গেলে 'বাইটস' বলে থাকে। সংক্ষিপ্তসারগুলি হ'ল সবচেয়ে গুরুতর অপরাধী।
ফিল এইচ

3
আমি মনে করি আপনি দেখতে পাবেন যে ইউনিকোড হিসাবে উপস্থাপিত সংক্ষিপ্তসারগুলির সাথে তাদের নিজস্ব কোড-পৃষ্ঠা রয়েছে (এটি অবশ্যই জেলি, হুস্ক, কাঠকয়লা এবং 05 এবি 1 ই এর জন্য সত্য)।
জোনাথন অ্যালান

ধন্যবাদ, আমি মোটেও প্রশংসা করি নি
ফিল এইচ

@ ফিলিলহ যদি আপনি সন্দেহ করেন যে বাইট গণনাটি সঠিক, আপনি তাদের একটি হ্যাক্সডাম্প সরবরাহ করতে বলতে পারেন।
ব্যবহারকারী 202729

9

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

0-ইন্ডেক্স

“»€Å‹¡Šdesž…“#“‚•„í†ìˆÈŒšï¿Ÿ¯¥Š—¿—ÉŸÄ‹ŒÁà“#âí" of "ýsè

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

ব্যাখ্যা

“»€Å‹¡Šdesž…“#                                          # push list of suits
              “‚•„í†ìˆÈŒšï¿Ÿ¯¥Š—¿—ÉŸÄ‹ŒÁà“#             # push list of ranks
                                           â            # cartesian product
                                            í           # reverse each
                                             " of "ý    # join on " of "
                                                    sè  # index into cardlist with input

@ ফিলফ 05 এবি 1 ই পিপিসিজি
ডিজাইমা

দুঃখিত, বুঝতে পারি নি যে এটি এত সাধারণ ছিল।
ফিল এইচ

ফিলিহ এহ, অনেকেই ইউনিকোডটি দেখানো ঠিক এমনভাবে ভাবনার ঠিক একই কাজ করেছেন যা দেখানো হয়েছে the তবে আমি চাই যে শিরোনামে কোডপেজটি সর্বদা হাইপারলিংক করা আমার আদর্শ ছিল (আমার এসওজিএলের উত্তরের মতো)
জাজিমা

@জাইমা: আমি কিছুক্ষণের জন্য তা করেছিলাম, কিন্তু এখনও মন্তব্য পেয়েছি তাই থামলাম। তবে আমি একমত, এটি টিআইও টেম্পলেটে অন্তর্ভুক্ত করা ভাল হবে।
এমিগানা

LOL, আমি এই উত্তরটি তাকান না ... “»€Å‹ spadesž…“#"of "ì“‚•„í†ìˆÈŒšï¿Ÿ¯¥Š—¿—ÉŸÄ‹ŒÁà“#âí»- 54 বাইটও ভাল!
ম্যাজিক অক্টোপাস ইউরান

6

পাইথন 2 , 167 148 বাইট

n=input();print 'two three four five six seven eight nine ten jack queen king ace'.split()[n%13]+' of '+['hearts','diamonds','spades','clubs'][n/13]

শূন্য-ইন্ডেক্স।

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

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


স্বাগত! ডিফল্টরূপে জমা দিতে হবে ইনপুট এবং আউটপুট; দেখতে পাইথন নিয়ম সারসংক্ষেপ
এক্সনোর

বুঝেছি, দেখানোর জন্য ধন্যবাদ!
পিএইচসি 14'18

1
ল্যাম্বদা এবং বিভক্ত সঙ্গে 141 বাইট । চরগুলি [n%13::13]বা অন্য কিছুর জন্য ইন্টারলিভ করার চেষ্টা করেছেন , তবে ভাগ্য নেই।
বুবলার

আমাকে উপলব্ধি করার জন্য ধন্যবাদ যে বিভাজন কিছু বাইট সংরক্ষণ করবে। আর একটি বাইট পাইথন 2 এর ডিফল্ট পূর্ণসংখ্যা বিভাগের সাথে চলে যায়।
পিএইচসি

4
140 বাইট শতাংশ নির্ধারণের জন্য ফ্যাক্ট আউট ব্যবহার করে s; xnor আড্ডায় এটি নির্দেশ।
বুবলার

6

আর , 154 বাইট

paste(el(strsplit("Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King,Ace",",")),"of",rep(c("Hearts","Diamonds","Spades","Clubs"),e=13))[scan()]

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

এসটিডিআইএন থেকে ইনপুট নেয় (1-ইনডেক্সড) এবং এর সাথে ফলাফলটি কনসোলটিতে source(...,echo=T)মুদ্রণ করবে।

এটি সুন্দর নয়, তবে এটি আমি যে সর্বোত্তম সমাধানটি ব্যবহার করতে পারি তার চেয়ে কম 2 বাইট কম আসে outer(নীচে উপস্থাপিত), সুতরাং এটি অন্য পদ্ধতির পরীক্ষা করার জন্য একটি অনুস্মারক হয়ে উঠুক!

paste(                          # concatenate together, separating by spaces,
                                # and recycling each arg to match the length of the longest
el(strsplit("Two,...",",")),    # split on commas and take the first element
"of",                           # 
 rep(c("Hearts",...),           # replicate the suits (shorter as a vector than using strsplit
               e=13)            # each 13 times
                    )[scan()]   # and take the input'th index.

আর , 156 বাইট

outer(el(strsplit("Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King,Ace",",")),c("Hearts","Diamonds","Spades","Clubs"),paste,sep=" of ")[scan()]

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

মূলত উপরের মত একই; তবে, outerপুনর্ব্যবহারযোগ্যভাবে সঠিকভাবে করতে হবে, কিন্তু এটি তৈরি করা sep=" of "জন্য pasteএটি একটি চুল আরও দীর্ঘ।


6

ইমোজিকোড , 202 বাইট

🍇i🚂😀🍪🍺🐽🔫🔤two.three.four.five.six.seven.eight.nine.ten.jack.queen.king.ace🔤🔤.🔤🚮i 13🔤 of 🔤🍺🐽🔫🔤hearts.diamonds.spades.clubs🔤🔤.🔤➗i 13🍪🍉

0 সূচকযুক্ত। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা :

🍇		start of the closure block
  i🚂		 closure takes an integer argument i
  😀		 print:
    🍪		  concatenate these strings:
      🍺🐽🔫🔤...🔤🔤.🔤🚮i 13  [a]
      🔤 of 🔤
      🍺🐽🔫🔤...🔤🔤.🔤➗i 13  [b]
    🍪
🍉

[a]:
🍺		tell Emojicode to dereference without checking
🐽		 get the nth element of the following array
  🔫		  create an array using the following string and separator
    🔤...🔤
    🔤.🔤
  🚮 i 13	n, i mod 13

[b]
🍺🐽🔫🔤...🔤🔤.🔤➗i 13
same but with ⌊i÷13⌋

10
একরকম এটি ঠিক বলে মনে হচ্ছে যে "চেক না করেই ডেফেরেশন করা" বিগের একটি মগ।
ম্যাক্সথ হাজার হাজার

6

এক্সেল, 156 বাইট

=TRIM(MID("two  threefour five six  seveneightnine ten  jack queenking ace",1+MOD(A1,13)*5,5))&" of "&CHOOSE(1+(A1/13),"hearts","diamonds","spades","clubs")

0-51 থেকে কার্ড। দুর্ভাগ্যক্রমে, এক্সেল রূপান্তর 1করতে কোনও ফাংশন দেয় না "one"...

ব্যবহার করা TRIMএবং মুখের মানগুলির জন্য MIDব্যবহারের চেয়ে কম CHOOSE, তবে CHOOSEস্যুটটির জন্য ব্যবহারের চেয়ে দীর্ঘ ।


সাথে চালাক MID()এবং শব্দগুলির সংমিশ্রণ!
ব্রুসওয়েইন

5

জাভা 8, 141 বাইট

n->"two;three;four;five;six;seven;eight;nine;ten;jack;queen;king;ace".split(";")[n%13]+" of "+"hearts;diamonds;spades;clubs".split(";")[n/13]

ইনপুট 0-সূচকযুক্ত।

ব্যাখ্যা:

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

n->         // Method with integer parameter and String return-type
  "two;three;four;five;six;seven;eight;nine;ten;jack;queen;king;ace".split(";")[n%13]
            //  Take `n` modulo-13 as 0-indexed card value
   +" of "  //  append " of "
   +"hearts;diamonds;spades;clubs".split(";")[n/13]
            //  append `n` integer-divided by 13 as 0-indexed suit

4

কোটলিন , 154 152 140 বাইট

i->"two,three,four,five,six,seven,eight,nine,ten,jack,queen,king,ace".split(',')[i%13]+" of ${"heart,diamond,spade,club".split(',')[i/13]}s"

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

সবেমাত্র ল্যাম্বদা এক্সপ্রেশন ব্যবহার করতে আপডেট হয়েছে।


পুরোপুরি ঠিক আছে।
নিসা

2
পিপিসিজিতে আপনাকে স্বাগতম! আমি প্রথমে গল্ফিং ভাষাগুলি দ্বারা নিরুৎসাহিত হয়েছি, কিন্তু তারপরে কোথাও কেউ আমাকে বলেছে "এটি প্রতিটি ভাষার জয়ের পক্ষে সেরা উত্তর " এবং আমি বুঝতে পেরেছিলাম এটি অন্য (আপনার ল্যাং এখানে) গল্ফারদের বিরুদ্ধে প্রতিযোগিতা। এটি চালিয়ে যান, এবং আমি আশা করি আপনি এখানে আপনার সময় উপভোগ করবেন।
জিউসেপে

কোটলিনে লাম্বদাসের (জাভা বিপরীতে) সর্বদা একটি শীর্ষস্থানীয় {এবং একটি পিছনে have থাকে} সুতরাং হতে পারে আপনার অন্তর্ভুক্ত করা উচিত এবং আপনার সমাধানে তাদের গণনা করা উচিত?
রোল্যান্ড স্মিটজ

3

জাভাস্ক্রিপ্ট ES6, 124 118 বাইট, 0-সূচক

F= x=>(h=btoa`O
?NÞ{ñhº¿Å÷¿J,IëÞñ"6)Þý7§üô.yéÿ*)àüÿÿÿæ«·÷bjj'wû)i׿r[`.split`/`)[x%13]+` of ${h[x/13|16]}s`

console.log (F(51))

বেস 64 সংস্করণ

eD0+KGg9YnRvYWBPCj9OGt578Wi6v8WK979KLH9J696f8SKCG382Kd79N6f8lpyT9C556f8qKeD8Bx7///+F5qu392Jqaid3+ylp179yW5tgLnNwbGl0YC9gKVt4JTEzXStgIG9mICR7aFt4LzEzfDE2XX1zYA==

অনলাইন পরীক্ষা ভাঙা মনে হচ্ছে
l4m2

ক্রোমে কাজ করে না
লুইস ফিলিপ দে জেসুস মুনোজ

ফায়ারফক্সে কাজ করে @ লুইস ফিলিপ দে জেসুস মুনোজ
l4m2

আপনার 118 বাইট সংস্করণটি এখানে 107 অক্ষর 136 বাইট পরিমাপ করে: mothereff.in/byte-counter
ফিল এইচ

1
@PhilH আপনি যদি একটি (ব্যবহার যেমন বাইট তালিকায় কোডের দেওয়া করুন Base64- ডিকোড যদি এই ), আপনি দেখতে পাবেন যে এটি আসলে ফলাফল 118 বাইট উল্লেখ করেছে।
ডিজাইমা

3

স্ট্যাক্স , 58 57 56 বাইট

î↑à■?R╢8«E▄¡╔ÿ•L╫<<⌠ï∞∟⌡♪Ös1"TàLα╥▀¢¡◄└%≈δñM;;}'░o=⌡»╬í√

এটি চালান এবং এটি ডিবাগ করুন

এখানে একই প্রোগ্রামটির মন্তব্যবিহীন প্রতিনিধিত্ব করা হয়েছে। এটি স্ট্যাকসের সংকীর্ণ আক্ষরিকাগুলি ভারী ব্যবহার করে। ইনপুটটি 0-সূচকযুক্ত। এটি এমিগানার 05AB1E অ্যালগরিদম।

`SsUI'S~pTU5T@T^Ez+`j   suits
`fV:l7eTkQtL*L2!CZb6u[&YNO4>cNHn;9(`j   ranks
|*  cross-product
@   index with input
r   reverse pair
`%+(`*  join with " of "

এটি চালান


3

বাশ, 133 বাইট

V=(two three four five six seven eight nine ten jack queen king ace hearts diamonds spades clubs)
echo ${V[$1%13]} of ${V[$1/13+13]}

প্রদত্ত বিকল্প অনুযায়ী 0 ব্যবহার করে বাছাই করা, 51 (ক্লাবের টেক্কা) এর মাধ্যমে 0 (অন্তরের দুটি) সমর্থন করে


পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন ইন্ডার

3

কান্ড , 52 বাইট

;↔!Πmw¶¨×‼sÿẋδẎ₆ṡ⁷Ḃ6‰fωθ»&⌈θƒV₆x⁵▼Ëġ`nıEṅ'jĊk⁸"eïkÄc

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

আমি হুসের স্ট্রিং সংক্ষেপণ সিস্টেমটি প্রদর্শন করে সর্বদা খুশি: ডি

ব্যাখ্যা

প্রোগ্রামের বেশিরভাগ অংশ ( ¨পরে থেকে) স্পষ্টতই একটি সংকীর্ণ স্ট্রিং। সঙ্কুচিত হলে তা এতে পরিণত হয়:

hearts diamonds spades clubs
of
two three four five six seven eight nine ten jack queen king ace

প্রোগ্রামটি হ'ল:

;↔!Πmw¶¨…
       ¨…    The previous string
      ¶      Split on lines
    mw       Split each line into words
             - we now have a list of lists of words
   Π         Cartesian product of the three lists
             - with this we obtain all possible combinations of suits and values
               with "of" between the two (e.g. ["spades","of","king"])
  !          Pick the combination at the index corresponding to the input
 ↔           Reverse it, so words are in the correct order
;            Wrap it in a list. Result: [["king","of","spades"]]

ব্যাখ্যা করার জন্য দুটি জিনিস বাকি রয়েছে:

  • কার্টেসিয়ান পণ্য কীভাবে Πকাজ করে তার জন্য আমরা স্যুটগুলির সাথে কার্ডগুলি তৈরি করি : যদি আমরা এটি অন্য উপায়ে করে থাকি তবে কার্ডের তালিকাটি মান অনুসারে অর্ডার করা হত (অর্থাত্ হৃদয় দুটি, দুটি হীরার দুটি, কোদাল দুটি) ক্লাব, হৃদয়ের তিনটি ...)। ফলস্বরূপ, আমাদের ফলাফলটি আমাদের বিপরীত করতে হবে।

  • প্রোগ্রামটির ফলাফলটি স্ট্রিংয়ের একটি দ্বি-মাত্রিক ম্যাট্রিক্স। এটি নিউজলাইন এবং স্পেস সহ কক্ষগুলির সাথে ম্যাট্রিক্সের সারিগুলিতে যোগদান করে একক স্ট্রিং হিসাবে হুস দ্বারা স্বয়ংক্রিয়ভাবে মুদ্রিত হয়। আমরা আরও সহজলভ্য w(স্পেস সহ শব্দের তালিকায় যোগ দিতে) পরিবর্তে এই ম্যাট্রিক্সটি তৈরি করার কারণটি হ'ল wটাইপ ইনফারেন্সার প্রোগ্রামটির জন্য অন্য ব্যাখ্যাটি অনুমান করে, অন্যরকম ফলাফল তৈরি করে।


2

এমআইআরসিএসক্রিপ্ট , 157 বাইট

c echo $token(ace two three four five six seven eight nine ten jack queen king,$calc(1+$1% 13),32) of $token(clubs spades diamonds hearts,$calc(-$1// 13),32)

উপনাম হিসাবে লোড, তারপর ব্যবহার করুন: /c N। এমআইআরসি হ'ল 1-ইনডেক্সড, সুতরাং ইনপুটটির নেতিবাচক মানের উপর তল বিভাগ (//) প্রয়োজনীয় হিসাবে -1 থেকে -4 উত্পাদন করে।


2

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

f(n){printf("%.5s of %.7ss","two\0 threefour\0five\0six\0 seveneightnine\0ten\0 jack\0queenking\0ace"+n%13*5,"heart\0 diamondspade\0 club"+n/13*7);}

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

0-ভিত্তিক।


\0আক্ষরিক নাল বাইটগুলি প্রতিস্থাপন করে আপনার 10 বাইট সংরক্ষণ করতে সক্ষম হওয়া উচিত ।
কেয়ার্ড কোইনারিংহিংহ

2

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

(!!)[v++" of "++s|s<-words"hearts diamonds spades clubs",v<-words"two three four five six seven eight nine ten jack queen king ace"]

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

একটি বেনাম ফাংশন, মামলা এবং মানের সমস্ত সংমিশ্রণ তৈরি করতে তালিকা বোধগম্যতা ব্যবহার করে এবং ইনপুট সহ ফলাফলের তালিকায় সূচী।


2

এফ #, 174 168 বাইট

মনীষ কুন্ডু দ্বারা উল্লিখিত কিছু অতিরিক্ত শ্বেতস্থান সরানো হয়েছে। ধন্যবাদ!

let c x=["two";"three";"four";"five";"six";"seven";"eight";"nine";"ten";"jack";"queen";"king";"ace"].[(x-1)%13]+" of "+["hearts";"diamonds";"spades";"clubs"].[(x-1)/13]

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

আমি সত্যবাদী হব - আমি কোড গল্ফে নতুন, সুতরাং এর মতো খাঁটি ফাংশন (পরামিতি সহ, তবে আমি / ও নেই) বা ব্যবহারকারীর সাথে একটি ওয়ার্কিং কোড ব্লক সহ উত্তর দেওয়া আরও উপযুক্ত কিনা তা আমি জানি না ইনপুট / আউটপুট।


1
-4 বাইটগুলি কেবল অ-প্রয়োজনীয় স্থানগুলি সরিয়ে
মনীষ কুন্ডু

সাদা স্থান পুরোপুরি আমার অতীত হয়ে গেছে। ভাল বিক্ষোভ! অনেক ধন্যবাদ!
Ciaran_McCarthy

2

অষ্টাভে , 155 153 151 150 বাইট

@(x)[strsplit(' of ,s,heart,diamond,spade,club,ace,two,three,four,five,six,seven,eight,nine,ten,jack,queen,king',','){[mod(x,13)+7,1,ceil(2+x/13),2]}]

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

এটি দিয়ে শুরু করে একটি স্ট্রিং তৈরি করে ' of 'এবং 's'তারপরে সমস্ত পদক্ষেপ অনুসরণ করে সমস্ত র‌্যাঙ্ক। এই স্ট্রিংটি কমাতে পৃথক স্ট্রিংগুলিতে বিভক্ত। স্যুটগুলি র‌্যাঙ্কের আগে রয়েছে, কারণ সূচকগুলি তৈরি করার সময় এটি একটি বাইট সংরক্ষণ করে। এর পরে, আমরা নিম্নলিখিত সূচকগুলির সাথে বর্গাকার বন্ধনী ব্যবহার করে এটি সূচীকরণ করি:

{[mod(x,13)+7,1,ceil(2+x/13),2]}

যা প্রথম পদার্থের পরে র‌্যাঙ্ক, তারপরে ' of 'স্যুট, তারপরে অনুসরণ করবে 's'

রয়ে 's'মামলা অংশ হিসেবে (hearts,diamonds,spades,clubs ) একটি পৃথক স্ট্রিং এর পরিবর্তে সঠিক একই দৈর্ঘ্য কিন্তু কম মজা।

ডিফল্ট বিভাজক উপর বিভক্ত strsplit বিভক্ত হয়ে- কলটিতে 4 বাইট সংরক্ষণ করতে পারে তবে চারপাশের স্পেসগুলি ' of 'সরিয়ে ফেলা হবে এবং ম্যানুয়ালি যুক্ত করতে হবে, আরও বেশি বাইটের দাম পড়তে হবে।


2

ভি , 154 147 144 142 বাইট

-7 বাইটস ডিজেএমসিএমহেমকে ধন্যবাদ

13i1heart
2diamond
3spade
4club
ÚGxCtwo
three
four
five
six
seven
eight
nine
ten
jack
queen
king
aceH$A of 012j$d4ñ13jPñÍ «/ 
{ÀjYHVGpAs

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

Hexdump:

00000000: 3133 6931 6865 6172 740a 3264 6961 6d6f  13i1heart.2diamo
00000010: 6e64 0a33 7370 6164 650a 3463 6c75 620a  nd.3spade.4club.
00000020: 1bda 1647 7843 7477 6f0a 7468 7265 650a  ...GxCtwo.three.
00000030: 666f 7572 0a66 6976 650a 7369 780a 7365  four.five.six.se
00000040: 7665 6e0a 6569 6768 740a 6e69 6e65 0a74  ven.eight.nine.t
00000050: 656e 0a6a 6163 6b0a 7175 6565 6e0a 6b69  en.jack.queen.ki
00000060: 6e67 0a61 6365 1b16 4824 4120 6f66 201b  ng.ace..H$A of .
00000070: 3016 3132 6a24 6434 f131 336a 50f1 cd20  0.12j$d4.13jP.. 
00000080: ab2f 200a 7bc0 6a59 4856 4770 4173       ./ .{.jYHVGpAs

এখানে সাজানোর শর্টকাট: এটি অনলাইন চেষ্টা করে দেখুন! কারও নতুন ভি ভি দেখে সর্বদা খুশি
DJMcMayhem

এখানে কয়েকটি টিপস রয়েছে: 1) « == \+2)12dj == 13D
ডিজেএমসিএমহেম

ধন্যবাদ! :) এবং আমি কীভাবে ব্যবহার করব ò? আমি এর ò13j0Pòপরিবর্তে চেষ্টা করেছি 4ñ13j0Pñ, কিন্তু এটি শেষ হয়নি
Oktupol

আমি আসলে এটিও চেষ্টা করেছিলাম। আমি নিশ্চিত না কেন এটি শেষ হচ্ছে না। সম্ভবত এটি কারণ এটি নীচে আঘাত না কারণ Pনতুন লাইন যুক্ত? এছাড়াও, আপনি কি নিশ্চিত 0যে সেই অংশটি আপনার প্রয়োজন ? এটা আমার মনে হচ্ছে মত এটা সম্ভবত ছাড়া কাজ করবে
DJMcMayhem

ওহ, সত্যিই কেস। এবং আপনি ঠিকই বলেছেন, এটি 0অপ্রয়োজনীয়
21

2

সি # , 219 207 202 197 বাইট (0 সূচিত)

static string O(int i){string[]s={"two","three","four","five","six","seven","eight","nine","ten","jack","queen","king","ace","hearts","diamonds","spades","clubs"};return s[i%13]+" of "+s[i/14+13];}

@ সিয়ারান_এমসি কার্টি এবং @ রজনগুল থেকে ইনপুট দেওয়ার জন্য ধন্যবাদ thanks

ইনট আইয়ের একটি ইনপুট নেয়, স্ট্রিং অ্যারের 0 সূচীকরণের সাথে মেলে 1 বিয়োগ করে এবং আমি মোড 13 এর উপর ভিত্তি করে সংখ্যাটি এবং i / 14 + 13 এর ভিত্তিতে স্যুট আউটপুট করে।

আমার দ্বিতীয় কোড গল্ফের জন্য বেশ ভাল কাজ করে, কেবল লিনকিউ বা অন্য কিছু ব্যবহার করে এটি আরও খাটো করে পেতে পারি কিনা তা ভেবে অবাক হচ্ছেন।


2
আই-- কে সরিয়ে 200 এর নিচে ; এবং এর পরিবর্তে প্রথম অ্যারে সূচকগুলিতে --i করা (আমি মডুলোর আগে হ্রাস পেয়েছি, এবং নিম্নলিখিত বিভাগের মতোই রয়েছি), অ্যারেতে "এর" অপসারণ (এটির প্রয়োজন নেই?), এবং চারপাশে বন্ধনীগুলি সরানো প্রত্যাবর্তনের বিবৃতি এবং রিটার্ন এবং এর মধ্যে একটি সাদা জায়গা যুক্ত করে [...
Ciaran_McCarthy

1
চ্যালেঞ্জটি ইনপুটটিকে 0-সূচিযুক্ত করার অনুমতি দেয় যাতে i++সম্পূর্ণরূপে মুছে ফেলা যায়। ফাংশনটিকে ল্যাম্বডায় রূপান্তর করে আমি এটি 178 বাইটে নামিয়েছি
রাজনগুল

2
প্রাথমিকভাবে আমি 163 বাইটের জন্য একটি উত্তর নিয়ে এসেছি (উপরের লিঙ্কটি দেখুন)। আমি এটি পোস্ট না করার সিদ্ধান্ত নিয়েছি, কারণ @ কেভিন ক্রুইজসেন এর জাভা উত্তরগুলির 1 থেকে 1 পোর্টটি এখনও ছোট হবে। সম্ভবত পরে আমি একটি উত্তর দেওয়ার প্রয়োজনে একটি লিনক উত্তর নিয়ে আসার চেষ্টা করব। তবে আমার মনে হয় এটি আরও কম হবে। বিশেষত কারণ লিনক- usingস্টেটমেন্টের জন্য 18 বাইট ঘাটতি দিয়ে শুরু হয় । যাইহোক আমার কাছ থেকে +1।
রাজনগুল

আপনার ইনপুটটির জন্য Ciaran_McCarthy একটি রাজনগুল উভয়কেই ধন্যবাদ, এখন তা 202 এ নেমে এসেছে, অতিরিক্ত গল্ফ করা যেতে পারে এমন আরও কিছু যদি আপনি দেখতে পান তবে আমাকে জানান
জেমস এম

1
আপনার কাছে "of"অ্যারেতে অতিরিক্ত অতিরিক্ত রয়েছে।
raznagul

2

পাওয়ারশেল , 207 192 182 174 165 163 161 157 বাইট

0-সূচিবদ্ধ

$args|%{(-split'two three four five six seven eight nine ten jack queen king ace')[$_%13]+' of '+('hearts','diamonds','spades','clubs')[$_/13-replace'\..*']}

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

মন্তব্যগুলিতে অ্যাডমবর্কবর্ককে 4 বাইট সংরক্ষণ করা হয়েছে


আপনি ইউনারী -splitহোয়াইটস্পেস 6 বাইট সংরক্ষণ করতে উপর -split'two three four five six seven eight nine ten jack queen king ace'এবং ইনলাইন ব্যবহার করে অন্য বাইট মেঝে পরিবর্তে প্রতিস্থাপন $_/13-replace'\..*'
AdmBorkBork

@ অ্যাডমবার্কবার্ক টিপসটির জন্য ধন্যবাদ! স্প্লিট-পরিবর্তন থেকে আপনি কীভাবে 6 বাইট পাচ্ছেন? আমি কেবল 3 বাইটের সঞ্চয় দেখি। এটি এখনও বন্ধনীগুলির দরকার বলে মনে হচ্ছে, তাই আমি কেবল ',' অপসারণ করছি এবং বাকীগুলি পুনরায় অর্ডার করছি।
নিক ওয়েইস

আমি কীভাবে 6 এ এসেছি তা নিশ্চিত নই, এটি 3 টিরও সত্যিই লোল।
অ্যাডমবর্কবার্ক






1

জাভাস্ক্রিপ্ট 149 143 140 বাইট

a=_=>"two three four five six seven eight nine ten jack queen king ace".split` `[_%13]+' of '+["hearts","diamonds","spades","clubs"][_/13|0]

-3 বিটস @ ক্রিক হিচকোকে ধন্যবাদ

a=_=>"two three four five six seven eight nine ten jack queen king ace".split` `[_%13]+' of '+["hearts","diamonds","spades","clubs"][_/13|0]
console.log(a(14))
console.log(a(34))
console.log(a(51))
console.log(a(8))
console.log(a(24))


1
দ্বিতীয় অ্যারে বিভক্ত না করে এবং এর সাথে সূচি রেখে 3 বাইট সংরক্ষণ করুন [_/13|0]। উদাহরণস্বরূপ: ["hearts","diamonds","spades","clubs"][_/13|0]
রিক হিচকক

আমি মনে করি না a=যেহেতু আপনার ফাংশনটি পুনরাবৃত্ত হয় না you
অলিভার


1

জাপট , ৯১ 86 বাইট

0-ইন্ডেক্স।

সংক্ষেপিত তালিকাগুলি তৈরি করতে আমি @ শ্যাগি দ্বারা রচিত একটি সরঞ্জাম ব্যবহার করেছি ।

`{`twodÈ(‚fÆfivÀ£xç P ightdÍÂdȈjackdquÁÈkˆg»­`qd gU}  {`Ê#tsk¹aÚˆäi£kclubs`qk gUzD

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

ব্যাখ্যা:

প্রথম সংক্ষিপ্ত স্ট্রিংয়ে কার্ড মানগুলি অন্তর্ভুক্ত করে d। দ্বিতীয় সংকীর্ণ স্ট্রিংয়ের মধ্যে কার্ড সীমানা অন্তর্ভুক্ত রয়েছে k

এই অক্ষরগুলি শ্যাগির সরঞ্জাম ব্যবহার করে বাছাই করা হয়েছিল, যা একটি চর দ্বারা সীমাবদ্ধ স্ট্রিং উৎপন্ন করে যা শোক (জপ্ট ব্যবহার করে এমন সংক্ষেপণ) ব্যবহার করে অনুকূলভাবে সংকুচিত হয়। এটি আমাদের কার্ডের মান এবং র‌্যাঙ্কগুলির একটি তালিকা তৈরি করতে দেয়।

আমরা `এই স্ট্রিংগুলি সংক্ষেপিত করতে ব্যাকটিক্স ব্যবহার করি , তারপরে আমরা স্ট্রিংটি ব্যবহার করে বিভক্ত করিq চারটি বিভক্ত হয়ে যায়।

আমাদের তালিকাগুলি একবার হয়ে গেলে, আমরা কার্ডের মানগুলির মাধ্যমে ম্যাপ করি, তারপরে আমরা ইনপুটটির সূচক পাই। এটি লক্ষণীয় যে জাপ্ট তার সূচীগুলিকে আবৃত করে, তাই আমাদের 13 দ্বারা মডুলো করতে হবে না।

প্রতিটি আইটেমের মধ্যে আমরা কার্ডের র‌্যাঙ্কটি লুপ করি। আমরা ইনপুট 13 দ্বারা ভাগ করে সূচক পাই।

আমাদের উভয় আইটেম একবার হয়ে গেলে, আমরা তাদের সাথে সম্মতি জানাই " of ", যা চূড়ান্ত স্ট্রিং উত্পাদন করে।


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