05AB1E, 28 27 25 24 23 bytes
2TŸ.•-Ÿ•S«.•ôì•âJ„jjS«u
-1 byte thanks to @Emigna removing the S
after "HSDC"
, because â
does this implicitly.
Explanation:
2TŸ # Push list in the range [2,10]: [2,3,4,5,6,7,8,9,10]
.•-Ÿ• # Push compressed string "ajqk"
S # Convert it to a list of characters: ["a","j","q","k"]
« # Merge the two lists together: [2,3,4,5,6,7,8,9,10,"a","j","q","k"]
.•ôì• # Push compressed string "cdhs"
â # Cartesian product of each (pair each character of both lists):
# [[2,"a"],[2,"d"],[2,"h"],...,["k","d"],["k","h"],["k","s"]]
J # Join each pair together to a single string:
# ["2a","2d","2h",...,"kd","kh","ks"]
„jjS # Push string "jj", and convert it to a list of characters: ["j","j"]
« # Merge both lists together:
# ["2a","2d","2h",...,"kd","kh","ks","j","j"]
u # Convert everything to uppercase:
# ["2A","2D","2H",...,"KD","KH","KS","J","J"]
# (and output the result implicitly)
See this 05AB1E tip of mine (section How to compress strings not part of the dictionary?) to understand why .•-Ÿ•
is "ajqk"
and .•ôì•
is "cdhs"
.