아일랜드어 스냅 : 변형 규칙


14

소개

최근 나와 나와 친구 몇 명이 카드를 몇 장 플레이하기로 결정했으며 그 중 한 명은이 도전에 대한 영감 인 게임 '아일랜드 스냅'을 제안했습니다. 그러나 나중에 게임에는 다양한 규칙이 있으며 그 중 일부는 여기에 나열되어 있습니다 . 이 챌린지에있는 규칙은 현재 해당 페이지에 표시되지 않으므로 이름은 'Variant Rules'

도전

3 장의 카드가 주어지면 아일랜드어 스냅 게임에서 유효한 스냅인지에 따라 진실 또는 거짓 값을 출력하십시오.

입력

입력은 1에서 13까지의 3 개의 숫자 배열이며, 1은 에이스, 11은 잭, 12는 퀸, 13은 킹을 나타냅니다. 입력은 상단, 중간, 하단 순서로 가능합니다.

규칙

카드가 아일랜드어 스냅을 만드는 경우에 대한 4 가지 기준은 다음과 같습니다.

  • 상단과 중간 카드는 동일합니다
  • 상단과 중간 카드는 하나의 차이가 있습니다
  • 상단과 하단 카드는 동일합니다
  • 상단과 하단 카드는 하나의 차이가 있습니다

이러한 기준 중 하나라도 충족되면 정확한 값을 출력해야합니다. 이뿐 만 아니라, 카드가 1의 차이를 갖도록 요구하는 두 가지 기준에 대해, 그것은 '포장'되어 에이스와 킹이 하나의 차이를 갖는 것으로 간주되며 그 반대도 마찬가지입니다.

테스트 사례

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대한 출력 false및 다른 정수 true또는 심지어 음의 정수 false또는 양의 정수 true?
Shaggy

답변:


4

파이썬 3 , 38 바이트

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

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

비어 있으면 비어 있지 않은 세트 (거짓)를, 비어 있으면 세트 (거짓)를 반환합니다. 맨 아래부터 순서대로 입력을 받지만 동일한 코드 크기로 다시 정렬 할 수 있습니다.



3

05AB1E , 7 6 바이트

α12%ß!

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

로 입력을 [middle, bottom], top받습니다.

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

05AB1E에서는 1 만 정직합니다. 0! 그리고 1! 다른 숫자는 1의 계승이 없습니다.


2

J , 12 바이트

1 e.2>12||@-

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

하단 중앙을 왼쪽 인수로, 상단을 오른쪽 인수로 가져갑니다.

하나의 목록으로 입력을받는 원래 답변

J , 24 바이트

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

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

  • #:@3 5숫자 3 진 5는 0 1 11 0 1중간 / 상단과 하단의 마스크 / 상단 카드는 각각있는
  • (12||@-/)@# 우리는 그 마스크로 입력을 필터링하고 결과 차이의 절대 값을 취한 다음 나머지를 12로 나눌 때 (에이스 킹의 경우)
  • 1 e.2> 결과 숫자 중 2보다 작은, 즉 0 또는 1입니까?

2

자바 스크립트 (ES6), 29 바이트

로 입력을 ([bottom, middle])(top)받습니다.

출력이 반전됩니다.

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

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


자바 스크립트 (ES6),  37  30 바이트

@Grimy 덕분에 1 바이트 절약

로 입력을 ([bottom, middle])(top)받습니다.

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

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


%144가능%72
Grimmy

트윗 담아 가기 FWIW %13도 작동합니다.
Arnauld

2

, 12 바이트

›²⌊﹪↔⁻E²NN¹²

온라인으로 사용해보십시오! @Grimy의 답변 포트. Charcoal의 기본 부울 형식 -을 true로, false를 위해 아무것도 사용하지 않고 입력을 3 개의 개별 값 bottom, middle, top 및 outputs 로 가져옵니다. 설명:

 ²              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

Pyth , 12 11 바이트

[bottom, top, middle]또는 [middle, top, bottom](둘 다 작업) 으로 입력을 받습니다. []유효한 스냅이없는 경우 출력 (Pyth의 거짓), 그렇지 않으면 비어 있지 않은 배열.

f>2%.aT12.+

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

일관된 진실 / 거짓 값이 필요한 경우 .A+2 바이트 앞에 추가하십시오 . 그런 다음 출력은 True또는 False입니다.

설명

  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)

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