爱尔兰快照:变体规则


14

介绍

最近,我和我的几个朋友决定玩几张纸牌,其中之一推荐了游戏“爱尔兰快拍”,这就是挑战的灵感来源。但是,我后来了解到,游戏具有许多不同的规则供您使用,此处列出了其中的一些规则 。当前未在该页面上列出面临该挑战的规则,因此名称为“变体规则”

挑战

给定由3张牌组成的数组,请根据在爱尔兰快速抽奖游戏中是否进行有效快速抽奖来输出真值或虚假值。

输入值

输入将是3个数字的数组,范围从1-13(含1-13),其中1代表王牌,11代表杰克,12代表皇后,13代表国王。输入可以是上,中,下的任何顺序。

规则

卡牌是否能使爱尔兰人抢购的4个不同标准是:

  • 顶卡和中间卡相同
  • 顶部和中间的牌相差一
  • 顶部和底部卡片相同
  • 顶部和底部的卡相差一

如果满足任何这些条件,则必须输出真实值。除此之外,对于两个要求纸牌相差一的标准,它会“环绕”,这意味着王牌和国王被认为相差一,反之亦然。

测试用例

Input (Bottom, Middle, Top) -> Output
1 13 7 -> False
1 4 13 -> True
9 3 6 -> False
8 9 7 -> True
2 6 5 -> True
12 5 11 -> True
10 4 8 -> False
12 13 7 -> False
9 7 10 -> True
7 3 1 -> False
4 2 3 -> True

2
我们可以分开拿卡吗?或将输入作为top, [middle, bottom]
乔·金

当然,您可以两者都做。改变了问题以反映这一点
EdgyNerd

我们可以反转输出,即为有效捕捉返回False,反之亦然吗?中间和底部都有效的测试用例怎么样?
乔·金

是的,您可以反转输出。此外,还添加了该测试案例
EdgyNerd,

输出值必须一致吗?例如,我们可以输出和的任何其他整数,或者甚至输出0的任何负整数或的任何正整数?falsetruefalsetrue
毛茸茸的

Answers:


4

Python 3,38个字节

lambda x,y,z:{x-y,x-z}&{0,1,12,-1,-12}

在线尝试!

如果有效,则返回一个非空集(真),否则返回一个空集(假)。从上至下按顺序输入,但可以为相同的代码大小重新排列。



3

05AB1E7 6字节

α12%ß!

在线尝试!

将输入作为[middle, bottom], top

α        # absolute difference
 12%     # mod 12
    ß    # minimum
     !   # factorial

05AB1E中只有1是真实的。0!和1!都为1,而没有其他数字的阶乘为1。


2

J,12个字节

1 e.2>12||@-

在线尝试!

以底部中间为左arg,顶部为右arg。

以输入为一的原始答案

J,24字节

1 e.2>#:@3 5(12||@-/)@#]

在线尝试!

  • #:@3 5二进制数字3和5分别是0 1 11 0 1,分别是中间/顶部和底部/顶部卡的掩码
  • (12||@-/)@# 我们使用这些掩码过滤输入,取所得差的abs值,然后将除以12的余数(对于ace-king情况)
  • 1 e.2> 结果数之一是否小于2,即0或1?

2

JavaScript(ES6),29个字节

将输入作为([bottom, middle])(top)

输出反相。

a=>c=>a.every(n=>(n-c)/2%6|0)

在线尝试!


JavaScript(ES6), 37个  30字节

@Grimy节省了1个字节

将输入作为([bottom, middle])(top)

a=>c=>a.some(n=>(n-=c)*n%72<2)

在线尝试!


%144可能是%72
Grimmy

@肮脏的谢谢!FWIW,%13也可以。
阿纳尔德

2

木炭,12字节

›²⌊﹪↔⁻E²NN¹²

在线尝试!@Grimy的答案的端口。使用Charcoal的默认布尔值格式,将输入作为底部,中间,顶部和输出三个单独的值,-true为true,nothing为false。说明:

 ²              Literal 2
›               Is greater than
  ⌊             Minimum of
    ↔            Absolute value of (vectorised)
      E²N       First two numeric inputs as a list ([bottom, middle])
     ⁻          Minus (vectorised)
         N      Third input (top)
   ﹪            Modulo (vectorised)
          ¹²    Literal 12

1

Perl 5,31 -ap个字节

$t=<>}{$\|=abs($t-$_)%12<2for@F

在线尝试!

输入:

bottom middle
top

实际上,中间和底部的顺序无关紧要。

输出:

01为真


1

Pyth12 11字节

将输入作为[bottom, top, middle][middle, top, bottom](两者均起作用)。[]如果没有有效的捕捉,则输出(在Pyth中为Falsy),否则为非空数组。

f>2%.aT12.+

在线尝试!

如果需要一个一致的真实/虚假值,则.A在前面加上+2个字节。然后输出将为TrueFalse

说明

  f             # Filter on lambda T:
   >2           # 2 > 
      .aT       #     abs(T)
     %   12     #            % 12
           .+   # the list of deltas (difference between consecutive elements)

.A (if required)# Any truthy values in the above list?

编辑:-1用不同的方法







0

[R],23个字节

将输入作为a = c(底部,顶部,中间):

any(abs(diff(a))%%12<2)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.