私の担当者はStack-Exchange Formにいますか?


16

前提:

メダルカウント(金、銀、および青銅を個別にカウント)を10進数に分解し、いくつかの注意を払って任意の順序で結合することで表せる場合、評判はStack-Exchange Formにあります。

分解しながら、それぞれ

  • 金メダルの桁は3桁の価値があります。
  • シルバーは2桁の価値があります。
  • ブロンズは1桁です。
  • さらに、SEにはメダルタイプがない場合、メダルタイプが表示されないため、タイプのメダル数が0の場合、が得られません[0]

例:

  • [1 Gold, 2 Silvers, 3 Bronzes]に分解され[1,1,1,2,2,3]ます。321112および213121は、これらのメダルのSE形式番号の2つの例です。
  • [20 Golds, 0 Silvers, 20 Bronzes]に分解され[2,2,2,0,0,0,2,0]ます。20002022はSE形式の番号です。
  • [11 Golds, 0 Silvers, 0 Bronzes]に分解され[1,1,1,1,1,1]ます。111111は、このための唯一のSE形式の番号です。

SE番号を考慮する場合、先行する0はありません。たとえば、上記の2番目の例で00002222 -> 2222は、のSE形式の番号とは見なされません[20,0,20]

入出力:

入力は、リスト/タプル/配列/すべてが[reputation, gold_medals, silver_medals, bronze_medals]負でない整数です。これは想定される順序ですが、変更できます。回答した場合は、メモしてください。

出力は、trueとfalseの2つの一貫した値です。

ルール:

  • 入力は常に有効です
  • 常に1人以上の担当者がいます
  • メダルはまったく持てません。メダルは常にfalseを返します。
  • メダル数は現実には関係ありません。数百個の金を持ち、青銅なしでも構いません。
  • これはので、バイト単位の最短回答が勝ちです。

テストケース:

#[Rep, Gold, Silver, Bronze] -> Output
[4, 0, 0, 4]       -> True
[1447, 0, 4, 17]   -> True
[74414, 4, 0, 17]  -> True
[4444, 4, 0, 4]    -> True
[4455, 0, 54, 0]   -> True
[5355, 5, 0, 3]    -> True
[53535, 5, 3, 0]   -> True
[4444, 0, 0, 4444] -> True
[444, 4, 0, 0]     -> True
[1234, 0, 0, 1234] -> True
[1234, 0, 0, 4321] -> True

[4444, 1, 0, 1]      -> False
[5555, 5, 0, 55]     -> False
[1234, 1, 23, 4]     -> False
[1, 0, 0, 0]         -> False
[1001001, 0, 10, 10] -> False

では、挑戦の文脈で評判は正確に何をしますか?
OrangeCherries

3
@OrangeCherries機械的には、何もありません。執筆時点で1447担当者と4つの銀、17のブロンズを持っていたので、それは挑戦を刺激しました。
ヴェスカー

1
注文以外に入力は柔軟ですか?たとえば、入力リスト[bronze, silver, gold]と分離された2番目の入力を取得できますreputationか?
ケビンクルーッセン

1
@KevinCruijssenええ、それは結構です。許可されない唯一のことは、各番号を構成する文字/数字のリストのリストとして入力を取得することです。
ヴェスカー

出力に真実/偽の値は許可されていますか、それとも2つの一貫した値でなければなりませんか?
ニックケネディ

回答:


11

05AB1E16 14 13 11 10 バイト

∞×0KJ‚€{íË

メダルの入力[bronze, silver, gold]を最初の入力とreputation2番目の入力として順番に受け取ります。

@Grimyのおかげで-1バイト。

オンラインそれを試してみたり、すべてのテストケースを確認してください

説明:

           # Push an infinite positive list: [1,2,3,...]
 ×          # Repeat the values in the (implicit) input-list that many times as string
            # (since the input-list contains just 3 values, the rest of the infinite
            #  list is ignored)
  0K        # Remove all 0s (so all "0", "00" and "000")
    J       # Join the strings in the list together
           # Pair this string with the (implicit) second input
      €{í   # Sort the digits in both strings in descending order
         Ë  # And check if both are now equal
            # (after which the result is output implicitly as result)

1
3L-> -1の場合
グリムミー

1
@Grimyリストが最小のものに切り捨てられると便利な場合があります。:)ありがとう!
ケビンクルーッセン

これはutf-8では10バイトではなく19バイトです。
ライライアン

@LieRyan確かに、UTF-8では19バイトです。05AB1Eは、(たとえばJellyとCharcoalのみ)カスタムコードページを使用します。このコードページでは、認識している256文字ごとに1バイトずつエンコードされます。この10バイトバージョンの16進数のバイトは\x19\xd7\x30\x4b\x4a\x82\x80\x7b\xec\xcb次のとおり--osabieです。フラグを使用してこれらの16バイトを実行することは可能ですが、05AB1E Elixirバージョンでこれを行う方法が完全に正直であるかどうかはわかりません(ただし、他の人が確認して答えを返します)。
ケビンクルーッセン

@LieRyan 05AB1E(レガシー)Pythonバージョンでは、このように実行できます(もちろん、別の課題の別のプログラムです)が、16進バイトがどのように実行されるかについてのアイデアを提供する必要があります。
ケビンクルーイッセン

7

JavaScript(ES6)、 92  74バイト

入力をとして受け取ります(['gold','silver','bronze'])('rep')。ブール値を返します。

b=>r=>[...b.map((n,i)=>n.repeat(+n&&3-i)).join``].sort()+''==[...r].sort()

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


JavaScript(ES6)、74バイト

入力をとして受け取ります(gold, silver, bronze, 'rep')。ブール値を返します。

(g,s,b,r)=>(F=s=>[...s].sort()+0)(r)==F([g,g,g,s,s,b].filter(x=>x).join``)

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


7

MATL28バイト 20バイト 16バイト 13バイト

falseの場合は0、trueの場合は1を返します。これは間違いなくダウンすることができます。

[1,3,2,1]Y"t2:7)XzVXzY@Ums0>

レピュテーションスコアを個別に取得でき、順序が[ブロンズ、シルバー、ゴールド]の場合、16バイトまで、レピュテーション
ルイスメンドーのおかげで13バイトまで

3:Y"XzVXzY@Um

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




5

Japt14 13 12バイト

íp fn ¬á øUg

入力を受け取ります [rep, bronze, silver, gold]

試すかすべてのテストケースを確認してください

Sample input: U = [1447, 17, 4, 0]
íp            Repeats each value of U by it's index amount e.g. ["","17","44","000"]
  fn          Remove all falsy values when converted to a number e.g. ["17","44"]
    ¬         Concatenate e.g. "1744"
     á        All permutations e.g. ["1744","1744","1474","1447","1474","1447","7144","7144","7414","7441","7414","7441","4174","4147","4714","4741","4417","4471","4174","4147","4714","4741","4417","4471"]
      øUg     Does it contain the first item of the input? 

いくつかの異なる角度からこれを数回刺しましたが、13を超えることもできません。
シャギー

@Shaggy は、最初の値を取り除くÅため、不要であることが判明しましたfn。削除Åすると12バイトになります
無知の具体化

これは、utf-8では12バイトではなく16バイトです。
ライライアン

@LieRyan一部のゴルフ言語は独自のエンコーディングを使用しています。JaptはISO-8859-1`を使用します
無知の

@EmbodimentofIgnorance、ああ、goddamnit、なぜ私はそれを見つけなかったのですか?!Japtのオープンバウンティのためにその月に休みを取ったので、私は本当に練習をしていると感じています。
シャギー

4

Retina 0.8.2、45バイト

,0
,
,(\d*),(\d*),
¶$1$1$1$2$2
%O`.
^(.+)¶\1$

オンラインでお試しください!リンクにはテストスイートが含まれます。説明:

,0
,

ゼロのスコアを削除します。

,(\d*),(\d*),
¶$1$1$1$2$2

金と銀のスコアを展開し、セパレーターを改行に変換します。

%O`.

レピュテーションと拡張スコアを個別に並べ替えます。

^(.+)¶\1$

ソートされた数字を比較します。



4

ラケット、149 107 98バイト

(λ(r b s g[h(λ x(sort(string->list(apply ~a(remq*'(0)x)))char<?))])(equal?(h r)(h b s s g g g)))

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

ラケットで初めてゴルフをするので、まだ改善を探しています...

説明(元のより長いバージョンですが、同じ考え):

(λ(r b                              ; take rep and badges as arguments
     [g(λ(x)                        ; helper function g which takes a string
         (sort                      ; and returns the sorted
           (string->list x)         ; list of characters
           char<?))])               ; (sort by ascii code)
  (equal?                           ; compare...
    (g(~a r))                       ; g called on the rep converted to string
    (g                              ; and g called on...
      (string-join                  ; the concatenation of
        (map ~a                     ; the stringified elements of
             (append*               ; the flattened list given by
               (filter              ; the elements of the following list where
                 (λ(x)(>(car x)0))  ; the badge count is nonzero:
                 (map make-list     ; repeat the badge counts
                      '(1 2 3)b)))) ; 1, 2, and 3 times respectively
        ""))))

2

、24バイト

1F⁴F↨NχFι⊞υκFχ¿⁻№υι№θIι⎚

オンラインでお試しください!リンクは、コードの詳細バージョンです。担当者、ブロンズ、シルバー、ゴールドの順に入力し、1担当者が有効な場合は出力します。説明:

1

担当者が有効であると仮定します。

F⁴F↨NχFι⊞υκ

4つの入力値をループします。各値の各桁プッシュii値の0インデックス付きのインデックスであるが。0空の配列に変換するため、ここでは数値ベースの変換が使用されます。

Fχ¿⁻№υι№θIι⎚

配列内の各桁のカウントが、最初の入力のカウントと一致することを確認してください。異なる場合は、キャンバスをクリアします。


これはutf-8では24バイトではなく60バイトです。
ライライアン

@LieRyan UTF-8バイトだとは言いませんでした。
ニール

2

ゼリー、18バイト

DẋṠƊ€ẋ"3RU¤FṢ⁼⁴DṢ¤

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

これは少し悪いです


これは18バイトではなく、utf-8では37バイトです。
ライライアン

@LieRyan Jelly(および他の多くのゴルフ言語)は、256個の1バイトコードすべてが言語で使用される文字の1つに対応するように、独自のコードページを使用します。
ハイパーニュートリノ


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