アイリッシュスナップ:バリアントルール


13

前書き

最近、私と数人の友人がいくつかのカードをプレイすることに決め、そのうちの1人がこのチャレンジのインスピレーションとなったゲーム「アイリッシュスナップ」を提案しました。ただし、このゲームには、プレイできるさまざまなルールがあり、そのうちのいくつかがここにリストされていることが後でわかり ました。このチャレンジにあるルールは現在そのページにリストされていないため、「Variant Rules」という名前が付けられています

チャレンジ

3枚のカードの配列が与えられたら、アイリッシュスナップのゲームで有効なスナップを行うかどうかに応じて、真偽値または偽値を出力します。

入力

入力は1から13までの3つの数字の配列で、1はエース、11はジャック、12はクイーン、13はキングを表します。入力は、上、中、下の任意の順序にすることができます。

ルール

カードがアイルランドのスナップを作る場合の4つの異なる基準は次のとおりです。

  • トップとミドルカードは同じです
  • トップとミドルカードには1つの違いがあります
  • 上部と下部のカードは同じです
  • 上部と下部のカードには1つの違いがあります

これらの基準のいずれかが満たされている場合、真実の値を出力する必要があります。これに加えて、カードに1つの違いがあることを必要とする2つの基準については、「ラップアラウンド」します。つまり、エースとキングは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
シャギー

回答:





2

J、12バイト

1 e.2>12||@-

オンラインでお試しください!

下中央を左引数、上中央を右引数とする。

入力を1つのリストとしてとる元の回答

J、24バイト

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

オンラインでお試しください!

  • #:@3 5バイナリの数字3,5は、0 1 11 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バイト

@Grimyのおかげで1バイト節約

入力をとして受け取ります([bottom, middle])(top)

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

オンラインでお試しください!


%144可能性があります%72
グリムミー

@Grimyありがとう!FWIW %13も機能します。
アーナルド

2

、12バイト

›²⌊﹪↔⁻E²NN¹²

オンラインでお試しください!@Grimyの回答のポート。入力を3つの個別の値であるbottom、middle、top、および-trueのCharcoalのデフォルトのブール形式を使用して出力し、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

パイス12 11バイト

[bottom, top, middle]または[middle, top, bottom](両方の作業)として入力を受け取ります。出力[]有効なスナップがない場合は(PythではFalsy)、そうでない場合は空でない配列。

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(bottom、top、middle)として受け取ります:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.