कौन सा कार्ड है?


30

परिचय

बहुत पहले, जब मैं सामान्य खेल कार्ड के साथ कार्ड गेम को कोड करता था, तो मैं प्रत्येक कार्ड के लिए एक नंबर निर्दिष्ट करता था और कार्ड प्राप्त करने के लिए कुछ संख्या के साथ एक फ़ंक्शन को कॉल करता था। इसने मुझे कुछ हद तक इस चुनौती के लिए प्रेरित किया।

तो खेल कार्ड से अनजान लोगों के लिए, कार्ड के एक डेक में 52 कार्ड (चार सूटों में से प्रत्येक में 13, यानी, दिल, हीरे, हुकुम, क्लब) शामिल हैं। प्रत्येक सूट में, 13 कार्ड हैं - सबसे पहले कार्ड 2-10 से गिने गए, फिर जैक (जे), क्वीन (क्यू), किंग (के) और ऐस (ए)। यह आदेश है

चुनौती

चुनौती यह है कि इनपुट के रूप में 1-52 के बीच पूर्णांक लें और उस स्थिति में कार्ड प्रदर्शित करें। लेकिन, आपका आउटपुट शब्दों में होना चाहिए। इसके अलावा, ऑर्डर को बनाए रखा जाना चाहिए, यानी, पहले 13 कार्ड हर्ट्स के होंगे, फिर डायमंड्स, फिर स्पेड्स और अंत में क्लब।

उदाहरण के लिए, यदि कोई संख्या चुनता है 30। कार्ड तब तीसरे सूट, यानी हुकुम से संबंधित होगा। इसके अलावा, यह सूट में चौथा कार्ड होगा, जिसका अर्थ है नंबर 5। इसलिए शब्दों में आपका आउटपुट होना चाहिए: five of spadesऔर यह हमेशा इस प्रारूप का पालन करना चाहिए , अर्थात्, पहले कार्ड, और उसके बाद ofसूट का नाम अंत, बीच में आवश्यक रिक्त स्थान के साथ।

इनपुट और आउटपुट

इनपुट 1-52 (दोनों समावेशी) के बीच पूर्णांक होगा । ध्यान दें कि यहाँ गिनती 1 से शुरू होती है। आप 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एक स्थान है? (दो अतिरिक्त स्थान पर ध्यान दें।)
10

2
@totallyhuman क्षमा करें, लेकिन बीच में ठीक 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:]

अपरकेस में स्ट्रिंग लौटाने वाला एक अनाम फ़ंक्शन।

इसे ऑनलाइन आज़माएं!

कैसे?

यूनिकोड वर्णों के नाम हैं। इनमें से कुछ के नाम "PLAY CARD TWO OF SPADES" की तरह हैं, इसलिए हम आवश्यक कार्ड का प्रतिनिधित्व करने वाले यूनिकोड वर्ण के पात्रों को प्राप्त कर सकते हैं और अपना उत्पादन प्राप्त करने के लिए पहले 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. हमें सूट को फिर से व्यवस्थित करने की जरूरत है (एस, एच, डी, सी से एच, डी, एस, सी)
  2. हमें (A, 2, ..., K से 2,,, K, A) से रैंकों को पुनः व्यवस्थित करने की आवश्यकता है
  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

Perl6 / Rakudo 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 ♥ यूनिकोड


@JonathanAllan: यह 4 आधार कार्ड का उपयोग करके ऑर्डर सेट करता है (वे आवश्यक सूट ऑर्डर में हैं), लेकिन अच्छी तरह से शूरवीरों पर देखा जाता है - मैंने उस पर ध्यान नहीं दिया था। कुछ और चार्ज की कीमत पर तय किया गया।
फिल एच

@JonathanAllan: अन्य उत्तर की गिनती में कुछ गलतियाँ हैं - हर कोई 'बाइट्स' कहता है जब उनका मतलब होता है चर। कम्प्रेशन वाले लोग सबसे अधिक अपराधी होते हैं।
फिल एच।

3
मुझे लगता है कि आपको पता चल जाएगा कि कम्प्रेशन वाले तार जो यूनिकोड के रूप में प्रस्तुत किए गए हैं वास्तव में उनके अपने कोड-पेज हैं (यह निश्चित रूप से जेली, हस्क, चारकोल और 05AB1E के लिए सही है)।
जोनाथन एलन

धन्यवाद, मैंने उसकी सराहना नहीं की।
फिल एच।

@PhilH यदि आपको संदेह है कि बाइट की गिनती सही है, तो आप उन्हें हेक्सडंप प्रदान करने के लिए कह सकते हैं।
user202729

9

05AB1E , 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

@PhilH 05AB1E एक कोडपेज का उपयोग करता है , जैसा कि पीपीसीजी पर गोल्फिंग भाषाओं में अधिकांश उत्तर यहाँ मिलता है
dzaima

माफी, यह इतना आम नहीं था एहसास हुआ।
फिल एच।

@PHH एह, कई लोगों ने बिल्कुल यही सोचकर किया है कि यूनिकोड दिखाया गया वास्तव में सबमिशन स्कोर है। लेकिन मैं चाहूंगा कि अगर यह मानक था तो हमेशा शीर्षक में कोडपेज (मेरे एसओजीएल जवाब पर)
हाइपरलिंक करूं

@dzaima: मैंने कुछ समय के लिए ऐसा किया, लेकिन मुझे अभी भी टिप्पणियां मिलीं, इसलिए मैं रुक गया। लेकिन मैं मानता हूं, यह अच्छा होगा अगर इसे TIO टेम्पलेट में शामिल किया जाए।
एमिग्ना

LOL, मैंने इस उत्तर को नहीं देखा ... “»€Å‹ spadesž…“#"of "ì“‚•„í†ìˆÈŒšï¿Ÿ¯¥Š—¿—ÉŸÄ‹ŒÁà“#âí»- 54 बाइट्स!
मैजिक ऑक्टोपस Urn

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]

शून्य अनुक्रमित।

यह ऑनलाइन की कोशिश करो!

EDIT: बब्बलर ने स्प्लिट विधि (और एक छोटा उत्तर प्रदान करके) का उपयोग करके एक शानदार बिंदु बनाया। स्प्लिट () का उपयोग करके दूसरे ब्लॉक पर एक ही बाइट काउंट होता है।


स्वागत हे! डिफ़ॉल्ट प्रस्तुतियाँ इनपुट और आउटपुट को संभालना चाहिए; देख अजगर नियम सारांश
xnor

समझ गया, इशारा करने के लिए धन्यवाद!
पीएचसी

1
लैंबडा और स्प्लिट के साथ 141 बाइट्स[n%13::13]या कुछ के लिए वर्णों की व्याख्या करने की कोशिश की , लेकिन कोई भाग्य नहीं।
बुबलर

मुझे यह महसूस करने के लिए धन्यवाद कि विभाजन कुछ बाइट्स को बचाएगा। एक और बाइट Python2 के डिफ़ॉल्ट पूर्णांक विभाजन के साथ चली जाती है।
पीएचसी

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()]

इसे ऑनलाइन आज़माएं!

STDIN से इनपुट (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
PPCG में आपका स्वागत है! मुझे पहली बार में गोल्फिंग भाषाओं ने हतोत्साहित किया था, लेकिन तब कहीं किसी ने मुझसे कहा "यह वास्तव में प्रत्येक भाषा की जीत में सबसे अच्छा जवाब है " और मुझे एहसास हुआ कि यह अन्य (आपके यहाँ लंगूर) गोल्फरों के खिलाफ एक प्रतियोगिता थी। इसे बनाए रखें, और मुझे आशा है कि आप यहां अपना समय आनंद लेंगे।
ग्यूसेप

कोटलिन में लैम्बदास (जावा के विपरीत) में हमेशा एक अग्रणी {और अनुगामी} होता है। तो शायद आपको अपने समाधान में उन्हें शामिल और गिनना चाहिए?
रोलैंड शमित्ज़

3

जावास्क्रिप्ट ईएस 6, 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))

Base64 संस्करण

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

ऑनलाइन परीक्षण टूटा हुआ लगता है
l4m2

क्रोम में काम नहीं करता है
लुइस फेलिप डी जीसस मुनोज

फ़ायरफ़ॉक्स पर काम करता है @Luis felipe De jesus Munoz
l4m2

आपका 118 बाइट संस्करण 107 चार्ट
Phil H

1
@PhilH यदि आप कोड के दिए गए आधार को बाइट्स की एक सूची (जैसे कि इस का उपयोग करके ) को डिकोड करते हैं , तो आप देखेंगे कि यह वास्तव में उल्लिखित 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 (दो दिलों का समर्थन करना)


PPCG में आपका स्वागत है!
मार्टिन एंडर

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

MIRCScript , 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:। mIRC 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 बाइट्स को बचाने में सक्षम होना चाहिए ।
caird coinheringaahing

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]

इसे ऑनलाइन आज़माएं!

मैं ईमानदार रहूंगा - मैं कोड गोल्फ में नया हूं, इसलिए मुझे नहीं पता कि क्या इस तरह के शुद्ध फ़ंक्शन के साथ जवाब देना उचित है (मापदंडों के साथ, लेकिन नहीं I / O) या उपयोगकर्ता के साथ काम करने वाले कोड ब्लॉक के साथ मैं / हे।


1
-4 बाइट्स केवल गैर-जरूरी जगहों को हटाकर
मनीष कुंडू

व्हॉट्सऐप पूरी तरह से मुझसे अतीत हो गया। अच्छी तरह से देखा गया! बहुत बहुत धन्यवाद!
सिआरण_मस्कारी

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 बाइट्स DJMcMayhem के लिए धन्यवाद

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
DJMcMayhem

धन्यवाद! :) और मैं कैसे उपयोग òकरूँ? मैं ò13j0Pòइसके बजाय की कोशिश की 4ñ13j0Pñ, लेकिन वह समाप्त नहीं किया
oktupol

मैंने वास्तव में कोशिश भी की थी। मुझे यकीन नहीं है कि यह समाप्त क्यों नहीं होता है। शायद यह है क्योंकि यह नीचे हिट नहीं करता है क्योंकि Pनई लाइनें जोड़ता है? इसके अलावा, क्या आप सुनिश्चित हैं कि आपको 0उस हिस्से की आवश्यकता है ? मुझे ऐसा लगता है जैसे कि यह शायद बिना काम करेगा
DJMcMayhem

ओह, यह वास्तव में मामला है। और आप सही कह रहे हैं, 0अनावश्यक है
ओकटुपोल

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];}

@Ciaran_McCarthy और @raznagul से इनपुट के लिए धन्यवाद

Int I का इनपुट लेता है, स्ट्रिंग ऐरे के 0 इंडेक्सिंग से 1 से मिलान करने के लिए 1 घटाता है और I mod 13 के आधार पर संख्या और i / 14 + 13 के आधार पर सूट को आउटपुट करता है।

मेरे दूसरे कोड गोल्फ के लिए बहुत अच्छा काम करता है, बस सोच रहा था कि मैं LINQ या कुछ और का उपयोग करके इसे छोटा कर सकता हूं।


2
I-- हटाकर 200 से नीचे ; और करने के बजाय पहले सरणी सूचकांक में (मैं modulo से पहले decremented हो जाता है, और निम्न डिवीजन के लिए इस तरह रहता है), सरणी में "की", (यह आवश्यक नहीं है?), और कोष्ठक को हटाने रिटर्न स्टेटमेंट और रिटर्न और s के बीच एक
व्हाट्सएप जोड़ना

1
चुनौती इनपुट को 0-अनुक्रमित करने की अनुमति देती है ताकि i++पूरी तरह से हटाया जा सके। फ़ंक्शन को एक लैम्ब्डा में परिवर्तित करके मैंने इसे 178 बाइट्स में मिला दिया ।
raznagul

2
मूल रूप से मैं 163 बाइट्स के लिए एक उत्तर के साथ आया था (ऊपर लिंक देखें)। मैं इसे पोस्ट नहीं है, क्योंकि के 1 के लिए 1 बंदरगाह का फैसला किया @KevinCruijssen रों जावा जवाब अभी भी कम हो जाएगी। हो सकता है कि बाद में मैं सिर्फ एक होने के लिए लिनक जवाब देने की कोशिश करूं। लेकिन मुझे संदेह है कि यह कम होगा। खासतौर पर इसलिए क्योंकि लाइनटेक के लिए usingलाइनक 18 बाइट की कमी से शुरू होता है । वैसे भी +1 मुझसे।
raznagul

आपके इनपुट के लिए Ciran_McCarthy दोनों के लिए raznagul का धन्यवाद, अब इसे 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 बाइट्स ने टिप्पणी में AdmBorkBork के लिए धन्यवाद बचाया


आप -split6 बाइट्स बचाने के लिए व्हाट्सएप पर एकजुट हो सकते हैं -split'two three four five six seven eight nine ten jack queen king ace'और एक अन्य बाइट इनलाइन का उपयोग करके फर्श की जगह $_/13-replace'\..*'
AdmBorkBork

@AdmBorkBork सुझावों के लिए धन्यवाद! आप कैसे बदल रहे हैं से 6 बाइट्स -split? मैं केवल 3 बाइट की बचत देखता हूं। ऐसा लगता है कि अभी भी कोष्ठकों की आवश्यकता है, इसलिए मैं केवल ',' को हटा रहा हूं और बाकी को फिर से आदेश दे रहा हूं।
निक वीस

मुझे यकीन नहीं है कि मैं 6 के साथ कैसे आया, यह वास्तव में केवल 3 की बचत है, योग्य।
AdmBorkBork

1

सीजेएम , 114 बाइट्स

riDmd"two three four five six seven eight nine ten jack queen king ace"S/=" of "@"hearts diamonds spades clubs"S/=

इसे ऑनलाइन आज़माएं!

शून्य अनुक्रमित। शायद शब्दकोश संपीड़न के साथ भाषाओं द्वारा पीटा जाएगा, लेकिन ओह अच्छी तरह से ...






1

जावास्क्रिप्ट 149 143 140 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=अपने फ़ंक्शन की पुनरावृत्ति नहीं होने की आवश्यकता है ।
ओलिवर


1

जाप , 91 86 बाइट्स

0 अनुक्रमित।

मैंने संकुचित सूचियों को जेनरेट करने के लिए @Saggy द्वारा लिखित टूल का उपयोग किया ।

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

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

पहले संकुचित स्ट्रिंग में कार्ड मानों को सीमांकित किया गया है d। दूसरी संपीड़ित स्ट्रिंग में कार्ड रैंक सीमांकित है k

ये चार्ट शैगी के उपकरण का उपयोग करके उठाए गए थे, जो एक स्ट्रिंग द्वारा सीमांकित स्ट्रिंग उत्पन्न करता है जो कि Shoco (जो कि Japt का उपयोग करता है संपीड़न) का उपयोग करके जानबूझकर संकुचित होता है। यह हमें कार्ड मूल्यों और रैंक की एक सूची बनाने की अनुमति देता है।

हम `इन स्ट्रिंग्स को विघटित करने के लिए बैकटिक्स का उपयोग करते हैं, फिर हम स्ट्रिंग का उपयोग करके विभाजित करते हैं q, इसके बाद चार को विभाजित करते हैं।

एक बार हमारे पास सूचियां होने के बाद, हम कार्ड वैल्यू के माध्यम से मैप करते हैं, फिर हमें इनपुट का इंडेक्स मिलता है। यह ध्यान रखना महत्वपूर्ण है कि जाप अपने अनुक्रमित को लपेटता है, इसलिए हमें 13 से modulo नहीं करना है।

प्रत्येक आइटम पर, हम कार्ड रैंक के माध्यम से लूप करते हैं। हम इनपुट को 13 से विभाजित करके सूचकांक प्राप्त करते हैं।

एक बार जब हमारे पास दोनों आइटम होते हैं, तो हम उन्हें समेटते हैं " of ", जो अंतिम तार पैदा करता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.