我小时候学到的第一个魔术牌魔术是:
这个技巧显然是有点缺乏光泽的性质,现在-天,但它是一个很好的挑战。编写一个程序,在没有输入的情况下,用随机选择的一张卡片输出一副随机的牌牌。然而,当输入是一副牌,其中一张卡反转,你必须输出倒置卡(以正确的顺序)。
纸牌甲板
一副牌被定义为:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]卡片的定义是它的号码,然后是它的套装的第一个字母。卡的反面正好相反,它的第一个字母后面跟着一个数字。
支取卡
例如,如果我们随机选择的倒置卡是4 of Clubs (4C),那么我们最终会得到(很明显,没有洗牌):
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]洗牌
然后,在洗牌之后:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]这是一个给定空输入的有效输出。
甲板输入
但是,相反,当我们的程序接收到上面的输出作为输入时,它应该输出4C。也就是说,对于以下方面的投入:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]你反复遍历,直到你找到倒转的卡片,并将它返回,倒转回到正常状态。在这里我们可以找到C4,知道C不是一个数字,并将它返回为4C,这是正确的。
SHCD或shcd作为套装,但要保持一致:SHCD),则还必须使用TJQKA。shcd),则还必须使用tjqka。发布于 2018-02-20 22:18:24
发布于 2018-02-21 00:10:36
9ḊṾ€;“AJKQT”p“CDHS”ḟ⁸ẊU-¦Ẋ一种接受字符列表的一元链接(0张卡片的存根或一张倒转的52张卡片的整张表),并返回字符列表列表(1张倒转卡的存根,或者一张随机卡倒转的整张牌)。
在网上试试! (使输入和输出表示匹配的页脚--作为一个完整的程序Jelly为输出将参数和字符组合在一起)
9ḊṾ€;“AJKQT”p“CDHS”ḟ⁸ẊU-¦Ẋ - Link: list of lists of characters, Z
9Ḋ - nine dequeued = [2,3,4,5,6,7,8,9]
Ṿ€ - unevaluate €ach = ['2','3','4','5','6','7','8','9']
“AJKQT” - literal list of characters = ['A','J','K','Q','T']
; - concatenate = ['2','3','4','5','6','7','8','9','A','J','K','Q','T']
“CDHS” - literal list of characters = ['C','D','H','S']
p - Cartesian product = [['2','C'],['2','D'],...,['T','S']]
- a full deck of forward cards
⁸ - chain's left argument, Z
ḟ - filter discard
- leaving either that deck or the 1 reversed card in the input
Ẋ - shuffle
¦ - sparse application...
- - ...to index: -1 (which doesn't exist when the length is only 1)
U - ...do: upend (reverses the penultimate card of the deck)
Ẋ - shufflehttps://codegolf.stackexchange.com/questions/156303
复制相似问题