Ірландський оснащення: Варіанти правил


14

Вступ

Нещодавно я та пара моїх друзів вирішили пограти у кілька карт, і одна з них запропонувала гру «Ірландський оснащення», яка була натхненником для цього виклику. Однак пізніше я дізнався, що в грі є маса різних правил, з якими можна грати, деякі з яких перераховані тут . Наразі правила, які є в цьому виклику, наразі не вказані на цій сторінці, звідси і назва "Варіантні правила"

Змагання

Враховуючи масив з 3 карт, виведіть значення truthy або falsey залежно від того, чи роблять вони дійсні оснащення в грі ірландського оснащення.

Вхідні дані

Вхід буде масивом з 3 чисел, розміром від 1-13 включно, 1 - туз, 11 - джек, 12 - королева і 13 - король. Введення може бути в будь-якому порядку зверху, посередині, знизу.

Правила

Чотири різних критерії, якщо картки роблять ірландський оснащення:

  • Верхня та середня картки однакові
  • Верхня та середня картки мають різницю в одиницю
  • Верхня та нижня карти однакові
  • Картки у верхній і нижній частині мають різницю в одиницю

Якщо будь-який із цих критеріїв виконаний, ви повинні вивести значення "truthy". Окрім цього, для двох критеріїв, які вимагають, щоб картки мали різницю в одиниці, він "обертається", що означає, що туз і король вважаються різницею в один, і навпаки.

Випробування

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?
Кошлатий

Відповіді:


4

Python 3 , 38 байт

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

Спробуйте в Інтернеті!

Повертає не порожній набір (truthy), якщо дійсний, порожній набір (falsey), якщо ні. Здійснює введення порядку вгорі-посереднизу, але може бути переставлено на той самий розмір коду.


4

Perl 6 , 16 байт

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

Спробуйте в Інтернеті!

Анонімне будь-яке лямбда, яке приймає вхід як top, middle, bottomі повертає Розв'язок, що оцінює значення True або False


Занадто поганий пробіл потрібен раніше <, це був ідеальний шанс отримати усміхнення серця.
Grimmy

3

05AB1E , 7 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 1і 1 0 1є масками відповідно для середньої / верхньої та нижньої / верхньої карт
  • (12||@-/)@# Ми фільтруємо вхід за допомогою цих масок, приймаємо значення abs отриманих різниць, потім решту, коли ділимо на 12 (для випадку асо-короля)
  • 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 байт

Збережено 1 байт завдяки @Grimy

Вводиться як " ([bottom, middle])(top).

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

Спробуйте в Інтернеті!


%144міг бути%72
Гріммі

@Grimy Дякую! FWIW, %13також працюватиме.
Арнольд

2

Вугілля деревне , 12 байт

›²⌊﹪↔⁻E²NN¹²

Спробуйте в Інтернеті! Порт відповіді @ Grimy. Вводить дані як три окремі значення нижній, середній, верхній та вихідні, використовуючи бульовий формат Charcoal за замовчуванням у форматі -true, нічого не відповідає 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

Pyth , 12 11 байт

Приймає введення як [bottom, top, middle]або [middle, top, bottom](обидва роботи). Виходи [](Falsy в Pyth), якщо немає дійсного оснащення, не порожній масив в іншому випадку.

f>2%.aT12.+

Спробуйте в Інтернеті!

Якщо потрібне послідовне значення truthy / falesy, додайте .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 з іншим підходом







Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.