어떤 카드입니까?


30

소개

오래 전에 일반적인 카드 놀이로 카드 게임을 코딩 할 때 각 카드의 번호를 지정하고 숫자를 가진 함수를 호출하여 카드를 얻었습니다. 이로 인해 나는이 도전을하게되었다.

따라서 카드 놀이를 모르는 사람들을 위해, 한 벌의 카드는 52 장의 카드로 구성됩니다 (심장, 다이아몬드, 스페이드, 클럽 등 4 가지 정장 중 각각 13 장). 각 소송에는 13 장의 카드가 있습니다. 먼저 2-10 장의 카드, 그 다음에 Jack (J), Queen (Q), King (K) 및 Ace (A)입니다. 이것은 순서입니다

도전

문제는 입력으로 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
게임마다 다릅니다. 다른 게임은 다른 순서를 따릅니다. 또한 카드에 대해 이야기하면 일부 게임은 소송에서 가장 낮은 카드로 에이스를 갖습니다.
Manish Kundu

공백을 나타내는 two\s\s\sof\shearts위치를 출력 할 수 있습니까 \s? (두 개의 추가 공간에 주목하십시오.)
완전히 인간적인

2
@totallyhuman 죄송하지만 사이에 정확히 1 개의 공간이 있어야합니다
Manish Kundu

답변:


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열의 4 개 는 "기사", 3 개 F는 "조커", 1 개 0는 일반, 나머지는 예약 된 문자)입니다.

따라서 우리는 추가 할 수있는 몇 가지 우리가 원하는 카드를 찾기 위해 0x1F0A1 = 127137 (AS)에 가치를.

추가 할 가치는 세 가지로 인해 복잡합니다.

  1. 정장을 다시 주문해야합니다 (s, h, d, c에서 h, d, s, c로)
  2. 순위를 (A, 2, ..., K에서 2, ..., K, A)로 재정렬해야합니다.
  3. 관심 카드가없는 컬럼은 피해야합니다.

one-indexing 옵션을 사용하면 음의 정수 나누기를 사용하여 [6,0,4,2][-n//13]*8+(효과적으로 [48,0,32,16][-n//13]) 와 함께 순서를 다시 맞추기 위해 행 단위 오프셋 배열로 색인 할 수 있습니다. 그러면 에이스를 올바른 위치에 배치 n%13+하고 (효과적으로 )를 C가진 란에 있는 기사 .n%13//11+(n%13>10)+


내가 이와 같은 대답을 시작한 것처럼 (내가 더 길었을 것이라고 확신한다) 나는 당신의 대답을 보았습니다. 좋은데
mbomb007

... 그리고 또 다른 바이트가 골프를 타기 위해 거기에 있었다 :)
Jonathan Allan

13

Perl6 / Rakudo 70 바이트

인덱스 0

사용 perl6 -pe하고, 아무 사전 압축 :

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

에이스에서 시작하여 유니 코드로 카드를 찾아 이름을 묻고 사용합니다. 이것은 Jonathan Aitken의 Python 답변 과 비슷한 경로입니다 (나는 당시에 그것을 알지 못했지만!) -스페이드 에이스에서 4 개의 오프셋이 아닌 4 개의 에이스에서만 인덱스하고 1.091을 곱하여 인덱스를 만듭니다. 유니 코드로 기사 항목에서 반올림하십시오.

모든 출력보기 (입력 값 0 ~ 51) https://glot.io/snippets/ez5v2gkx83

유니 코드이기 때문에 유니 코드 데크에서 기사를 처리하도록 편집되었습니다.

Perl6 ♥ 유니 코드


@JonathanAllan : 4 개의 기본 카드를 사용하여 주문을 설정하지만 (필수 소송 순서대로되어 있음) 기사에서 잘 발견되었습니다. 몇 문자를 추가로 수정했습니다.
Phil H

@JonathanAllan : 다른 답변의 계산에는 약간의 잘못이 있습니다. 모두 문자를 의미 할 때 모두 '바이트'라고 말합니다. 압박을 가진 사람들이 가장 심한 범죄자입니다.
Phil H

3
유니 코드로 제공되는 것을 포함하는 압축 문자열이있는 코드에는 실제로 자체 코드 페이지가 있음을 알 수 있습니다 (Jelly, Husk, Charcoal & 05AB1E의 경우에도 마찬가지입니다).
Jonathan Allan

고마워, 나는 전혀 그것을 감사하지 않았다.
Phil H

@PhilH 바이트 수가 정확하지 않다면 16 진수 덤프를 제공하도록 요청할 수 있습니다.
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는 PPCG 에서 골프 언어로 된 대부분의 답변과 마찬가지로 코드 페이지를 사용 합니다
dzaima

사과, 이것이 너무 일반적임을 깨달았다.
Phil H

@PhilH, 많은 사람들은 표시된 유니 코드가 실제로 제출 점수라고 생각하는 것과 똑같은 일을했습니다. 그러나 제목에 코드 페이지를 항상 하이퍼 링크하는 것이 표준이라면 여기 (SOGL 답변과 같은)
dzaima

@ dzaima : 잠시 동안 그렇게했지만 여전히 의견을 얻었으므로 중단했습니다. 그러나 TIO 템플릿에 포함되어 있으면 좋을 것입니다.
Emigna

LOL, 나는이 대답에 보이지 않았다 ... “»€Å‹ spadesž…“#"of "ì“‚•„í†ìˆÈŒšï¿Ÿ¯¥Š—¿—ÉŸÄ‹ŒÁà“#âí»- 54 바이트 아니라!
Magic Octopus Urn

6

파이썬 2 , 167148 바이트

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]

인덱스가 0입니다.

온라인으로 사용해보십시오!

편집 : Bubbler는 split 방법을 사용하여 더 좋은 점을 제시했습니다 (더 짧은 답변 제공). split ()을 사용하는 두 번째 블록에서 동일한 바이트 수를 산출합니다.


환영! 기본적으로 제출은 입력 및 출력을 처리해야합니다. Python 규칙 요약을 참조하십시오 .
xnor

알았어, 지적 해줘서 고마워!
PHC

1
람다 및 분할이있는 141 바이트 숯을 [n%13::13]넣거나 다른 것을 시도 했지만 운이 없었습니다.
Bubbler

split이 약간의 바이트를 절약 할 수 있다는 것을 알게 해 주셔서 감사합니다. 다른 바이트는 Python2의 기본 정수 나누기와 함께 사라집니다.
PHC

4
퍼센트 표기법을 사용하여 인수 분해하는 140 바이트s ; xnor 은 채팅에서 지적했습니다.
Bubbler

6

R , 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)결과를 콘솔에 인쇄합니다.

그것은 예쁘지 않지만, 내가 사용할 수있는 최상의 솔루션 outer(아래 제시) 보다 2 바이트 짧아 지기 때문에 다른 접근법을 살펴 보도록 상기시켜줍니다!

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.

R , 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
어쨌든 "확인하지 않고 역 참조"는 맥주 잔입니다.
maxathousand

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()하고 단어를 결합!
BruceWayne

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"

온라인으로 사용해보십시오!

람다 식만 사용하도록 업데이트되었습니다.


완전히 괜찮습니다.
Nissa

2
PPCG에 오신 것을 환영합니다! 나는 처음에 골프 언어에 낙담했지만, 누군가 어딘가에서 " 각 언어 승리 에서 가장 좋은 대답이라고"말했고 다른 골프 선수들과의 경쟁이라는 것을 깨달았습니다. 계속 지켜봐주십시오.
Giuseppe

코 틀린의 람다는 (자바와는 달리) 항상 {과 후행}을 가지고있다. 그렇다면 솔루션에 포함시키고 계산해야합니까?
Roland Schmitz

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

Base64 버전

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

온라인 테스트가
실패한

크롬에서 작동하지 않습니다
Luis felipe De jesus Munoz

Firefox @Luis felipe De jesus Munoz에서 작동
l4m2

118 바이트 버전은 107 바이트 136 바이트를 측정합니다. mothereff.in/byte-counter
Phil H

1
@PhilH 주어진 코드의 base64를 바이트 목록으로 디코딩하면 (예 : this 사용 ) 실제로 언급 된 118 바이트가 발생 함을 알 수 있습니다.
dzaima

3

스탁스 , 58 57 56 바이트

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

실행 및 디버깅

다음은 동일한 프로그램에 대한 주석 처리되지 않은 표현입니다. stax의 압축 리터럴을 많이 사용합니다. 입력은 0 인덱스입니다. Emigna의 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을 사용하도록 선택, 0 (하트 2 개)부터 51 (클럽 에이스)까지 지원


PPCG에 오신 것을 환영합니다!
Martin Ender

3

껍질 , 52 바이트

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

온라인으로 사용해보십시오!

나는 항상 Husk의 스트링 압축 시스템을 자랑스럽게 생각합니다 : D

설명

프로그램의 대부분은 ( ¨앞에서부터) 분명히 압축 된 문자열입니다. 압축되지 않으면 다음과 같이 바뀝니다.

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"]]

설명해야 할 몇 가지 사항이 있습니다.

  • 카티 전 곱 방식으로 인해 값보다 먼저 카드를 만듭니다. Π 작동 . 다른 방법으로 카드를 만들면 카드 목록은 값으로 정렬됩니다 (예 : 하트 2 개, 다이아몬드 2 개, 스페이드 2 개, 2 개). 클럽, 하트 3 개 ...). 결과적으로 결과를 되돌려 야합니다.

  • 프로그램의 결과는 문자열의 2 차원 매트릭스입니다. 이것은 Husk에서 행렬의 행을 줄 바꿈과 셀을 공백으로 결합하여 만든 단일 문자열로 자동 인쇄합니다. 보다 간단한 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

하스켈 , 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

F #, 174 바이트

Manish Kundu가 지적한 여분의 공백을 제거했습니다. 감사!

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는 없음) 또는 사용자와 작동하는 코드 블록으로 대답하는 것이 더 적합한 지 모르겠다 I / O


1
불필요한 공간 만 제거하여 -4 바이트
Manish Kundu

공백이 완전히 저를 지났습니다. 잘 발견되었습니다! 매우 감사합니다!
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 'and로 시작하고 's'모든 수트 뒤에 모든 순위가 붙은 문자열이 생성 됩니다. 이 문자열은 쉼표에서 별도의 문자열로 분할됩니다. 인덱스를 만들 때 바이트를 저장하기 때문에 양복은 순위보다 앞에옵니다. 그런 다음 대괄호를 사용하여 다음 색인을 사용하여 색인을 생성합니다.

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

이것은 순위이고 첫 번째 요소가 뒤 따릅니다 ' of ' , 양복, 뒤이어's' .

를 갖는 's'(소송의 한 부분으로hearts,diamonds,spades,clubs 대신 별도의 문자열)은 동일한 길이 미만 재미이다.

기본 구분 기호를 분할 하면 strsplit-call에 4 바이트가 절약 되지만 주위의 공백 ' of '은 제거되고 수동으로 추가해야하므로 더 많은 바이트가 필요합니다.


2

V , 154 147 144 142 바이트

DJMcMayhem 덕분에 -7 바이트

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

온라인으로 사용해보십시오!

16 진 덤프 :

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

정렬 바로 가기는 다음과 같습니다. 온라인으로 사용해보십시오! 항상 새로운 사람을
만나서 반가워요

여기 몇 가지 팁이 있습니다 : 1) « == \+2)12dj == 13D
DJMcMayhem

감사! :) 그리고 어떻게 사용 ò합니까? ò13j0Pò대신에 시도했지만 4ñ13j0Pñ종료되지 않았습니다.
oktupol

나는 실제로 그것을 시도했다. 왜 끝나지 않는지 잘 모르겠습니다. 어쩌면 P새 줄을 추가 하여 바닥에 닿지 않았기 때문일 수 있습니다. 또한 0그 부분에 필요한 것이 있습니까? 아마없이 작동하는 것처럼 그것은 나에게 보인다
DJMcMayhem

아, 그건 사실입니다. 그리고 당신 말이 맞아요, 0불필요합니다
oktupol

2

C 번호 , 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을 빼고 I mod 13을 기반으로하는 숫자와 i / 14 + 13을 기반으로하는 수를 출력합니다.

LINQ 또는 다른 것을 사용하여 더 짧게 얻을 수 있는지 궁금해하는 두 번째 코드 골프에서 꽤 잘 작동합니다.


2
i--를 제거하여 200 까지 감소; 대신 첫 번째 배열 인덱스에서 --i를 수행하고 (모듈로 전에 감소하고 다음 나눗셈에서 그대로 유지) 배열에서 "of"를 제거하고 (필요하지 않습니까?) 대괄호를 제거합니다. return 문과 return과 s [... 사이에 하나의 공백 추가 [...
Ciaran_McCarthy

1
문제는 입력을 0으로 색인화하여 입력을 i++완전히 제거 할 수 있도록합니다 . 함수를 람다로 변환하여 178 바이트로 줄 였습니다.
raznagul

2
처음에는 163 바이트에 대한 답변을 찾았습니다 (위 링크 참조). @KevinCruijssen s Java 답변 의 1 대 1 포트 는 여전히 짧기 때문에 게시하지 않기로 결정했습니다 . 어쩌면 나중에 나는 Linq 답변을 얻기 위해 노력합니다. 그러나 나는 그것이 더 짧을 지 의심합니다. Linq가 using-Statement에 대해 18 바이트의 부족으로 시작하기 때문에 특히 그렇습니다. 어쨌든 나에게서 +1.
raznagul

Ciaran_McCarthy 입력에 대한 raznagul 덕분에 지금 202로 낮추었습니다. 추가로 골프를 칠 수있는 다른 것이 있으면 알려주세요
James m

1
여전히 "of"배열에 불필요한 것이 있습니다.
raznagul

2

PowerShell을 , 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'\..*']}

온라인으로 사용해보십시오!

댓글에 AdmBorkBork 덕분에 4 바이트 절약


할 수 있습니다 단항 -split6 바이트를 저장하는 공백에 -split'two three four five six seven eight nine ten jack queen king ace'인라인 사용하여 다른 바이트 대신 바닥의 교체 $_/13-replace'\..*'
AdmBorkBork

@AdmBorkBork 팁 주셔서 감사합니다! -split을 변경하여 6 바이트를 얻는 방법은 무엇입니까? 3 바이트 만 절약 할 수 있습니다. 여전히 괄호가 필요한 것 같아서 ','를 제거하고 나머지를 다시 정렬하고 있습니다.
Nik Weiss

나는 어떻게 6을 생각해 냈는지 확실하지 않습니다. 실제로 3의 저축 일뿐입니다.
AdmBorkBork






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]

@rick hitchcock 덕분에 -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]
Rick Hitchcock

a=함수가 재귀 적이 지 않기 때문에 당신 이 필요하다고 생각하지 않습니다 .
Oliver


1

apt , 91 86 바이트

인덱스가 0입니다.

내가 사용 @Shaggy에 의해 작성 도구를 압축 목록을 생성 할 수 있습니다.

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

온라인으로 사용해보십시오!

설명:

첫 번째 압축 문자열에는로 구분 된 카드 값이 포함됩니다 d. 두 번째 압축 문자열에는으로 구분 된 카드 순위가 포함됩니다 k.

이 문자는 Shaggy의 도구를 사용하여 선택되었습니다.이 도구는 shoco (Japt에서 사용하는 압축)를 사용하여 최적으로 압축 된 문자로 구분 된 문자열을 생성합니다. 이를 통해 우리는 카드 값과 순위 목록을 만들 수 있습니다.

백틱 `을 사용 하여 이러한 문자열을 압축 해제 한 다음q 그 다음에 문자를 분할합니다.

목록이 있으면 카드 값을 통해 매핑 한 다음 입력 색인을 얻습니다. Japt가 인덱스를 래핑한다는 점에 유의해야합니다. 따라서 모듈러스를 13으로 조정할 필요가 없습니다.

각 항목에서 우리는 카드 순위를 반복합니다. 입력을 13으로 나누어 인덱스를 얻습니다.

두 항목이 모두 있으면로 연결 " of "하여 최종 문자열을 생성합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.