Ailen Snap: Quy tắc biến thể


13

Giới thiệu

Gần đây, tôi và một vài người bạn của tôi đã quyết định chơi một số thẻ và một trong số họ đề xuất trò chơi 'Irish Snap', đó là nguồn cảm hứng cho thử thách này. Tuy nhiên, sau đó tôi mới biết rằng trò chơi có rất nhiều quy tắc khác nhau mà bạn có thể chơi cùng, một số trong đó được liệt kê ở đây . Các quy tắc trong thử thách này hiện không được liệt kê trên trang đó, do đó, tên, 'Quy tắc biến thể'

Các thách thức

Đưa ra một mảng gồm 3 thẻ, xuất ra giá trị trung thực hoặc giá trị chim ưng tùy thuộc vào việc chúng có tạo ra một snap hợp lệ trong trò chơi snap Ailen hay không.

Đầu vào

Đầu vào sẽ là một dãy gồm 3 số, bao gồm 1-13, bao gồm 1 đại diện cho ace, 11 đại diện cho một jack, 12 đại diện cho một nữ hoàng và 13 đại diện cho một vị vua. Đầu vào có thể theo thứ tự trên, giữa, dưới.

Quy tắc

4 tiêu chí khác nhau để nếu thẻ tạo ra tiếng Ailen là:

  • Thẻ trên và giữa giống nhau
  • Thẻ trên và giữa có sự khác biệt của một
  • Thẻ trên và dưới giống nhau
  • Thẻ trên và dưới có sự khác biệt của một

Nếu bất kỳ tiêu chí nào trong số này được đáp ứng, bạn phải đưa ra một giá trị trung thực. Cũng như vậy, đối với hai tiêu chí yêu cầu các lá bài phải có sự khác biệt của một, nó 'bao bọc xung quanh', nghĩa là một con át chủ bài và một vị vua được coi là có sự khác biệt của một và ngược lại.

Các trường hợp thử nghiệm

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
Chúng ta có thể lấy các thẻ một cách riêng biệt? Hoặc lấy đầu vào là top, [middle, bottom]?
Jo King

chắc chắn, bạn có thể làm cả hai. đã thay đổi câu hỏi để phản ánh điều đó
EdgyNerd

Chúng ta có thể đảo ngược đầu ra, tức là trả về Sai cho các snaps hợp lệ và ngược lại không? Làm thế nào về một trường hợp thử nghiệm trong đó cả giữa và dưới là hợp lệ?
Jo King

Vâng, bạn có thể đảo ngược đầu ra. Ngoài ra, đã thêm trường hợp thử nghiệm đó
EdgyNerd

Các giá trị đầu ra phải nhất quán hoặc, ví dụ, chúng ta có thể đầu ra 0cho falsevà bất kỳ số nguyên nào khác cho truehoặc, thậm chí, bất kỳ số nguyên âm nào cho falsehoặc bất kỳ số nguyên dương truenào không?
Xù xì

Câu trả lời:


4

Python 3 , 38 byte

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

Hãy thử trực tuyến!

Trả về một tập hợp không trống (trung thực) nếu hợp lệ, tập rỗng (falsey) nếu không. Đưa đầu vào theo thứ tự từ trên xuống giữa, nhưng có thể được sắp xếp lại cho cùng kích thước mã.


4

Perl 6 , 16 byte

3>(*-(*|*)+1)%13

Hãy thử trực tuyến!

Ẩn danh bất cứ thứ gì lambda lấy đầu vào là top, middle, bottomvà trả về một Giao diện ước tính là Đúng hoặc Sai


Khoảng trắng quá tệ là bắt buộc trước đây <, đây là cơ hội hoàn hảo để có một trái tim cười.
Grimmy

3

05AB1E , 7 6 byte

α12%ß!

Hãy thử trực tuyến!

Có đầu vào như [middle, bottom], top.

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

Chỉ có 1 là sự thật trong 05AB1E. 0! và 1! đều là 1, trong khi không có số nào khác có giai thừa là 1.


2

J , 12 byte

1 e.2>12||@-

Hãy thử trực tuyến!

Lấy dưới cùng giữa trái arg, trên cùng phải arg.

câu trả lời ban đầu lấy đầu vào là một danh sách

J , 24 byte

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

Hãy thử trực tuyến!

  • #:@3 5Các số 3 và 5 trong nhị phân là 0 1 11 0 1là mặt nạ cho các thẻ giữa / trên và dưới / trên tương ứng
  • (12||@-/)@# Chúng tôi lọc đầu vào với các mặt nạ đó, lấy giá trị abs của chênh lệch kết quả, sau đó phần còn lại khi chia cho 12 (đối với trường hợp ace-king)
  • 1 e.2> là một trong hai số kết quả nhỏ hơn 2, tức là 0 hoặc 1?

2

JavaScript (ES6), 29 byte

Đưa đầu vào là ([bottom, middle])(top).

Đầu ra được đảo ngược.

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

Hãy thử trực tuyến!


JavaScript (ES6),  37  30 byte

Đã lưu 1 byte nhờ @Grimy

Đưa đầu vào là ([bottom, middle])(top).

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

Hãy thử trực tuyến!


%144có thể%72
Grimmy

@Grimy Cảm ơn! FWIW, %13cũng sẽ làm việc.
Arnauld

2

Than , 12 byte

›²⌊﹪↔⁻E²NN¹²

Hãy thử trực tuyến! Câu trả lời của cảng @ Grimy. Đưa đầu vào thành ba giá trị riêng biệt dưới cùng, giữa, trên cùng và đầu ra bằng định dạng Boolean mặc định của Char than là -đúng, không có gì sai. Giải trình:

 ²              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 -ap , 31 byte

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

Hãy thử trực tuyến!

Đầu vào:

bottom middle
top

Trên thực tế, thứ tự giữa và dưới không quan trọng.

Đầu ra:

0cho sai; 1sự thật


1

Bình thường , 12 11 byte

Đưa đầu vào là [bottom, top, middle]hoặc [middle, top, bottom](cả hai đều hoạt động). Đầu ra [](Falsy in Pyth) nếu không có snap hợp lệ, nếu không thì một mảng không trống.

f>2%.aT12.+

Hãy thử trực tuyến!

Nếu cần một giá trị trung thực / sai lệch nhất quán, hãy thêm .Avào phía trước cho +2 byte. Sau đó, đầu ra sẽ Truehoặc False.

Giải trình

  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?

Chỉnh sửa: -1 với cách tiếp cận khác







0

[R], 23 byte

lấy đầu vào là a = c (dưới cùng, trên cùng, giữa):

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.