Temsilcim Stack-Exchange Formunda mı?


16

Öncül:

Saygınlığınız, madalya sayımlarınızın (altın, gümüş ve bronz ayrı olarak sayılır) temel 10 basamaklarına ayrılması ve birkaç uyarı ile herhangi bir sırada birleştirilmesiyle temsil edilebiliyorsa Yığın Değişimi Formundadır.

Ayrışırken, her biri

  • Altın madalya rakamı üç basamaklıdır.
  • Gümüş iki basamak değerindedir.
  • Bronz bir rakamdır.
  • Eğer herhangi bir yoksa GD bir madalya türü göstermez beri Ayrıca, bir tür için 0 madalya sayısı edecek değil bir verim [0].

Misal:

  • [1 Gold, 2 Silvers, 3 Bronzes]ayrışacak [1,1,1,2,2,3]. 321112 ve 213121, bu madalyalar için SE form numarasının iki örneğidir.
  • [20 Golds, 0 Silvers, 20 Bronzes]ayrışacak [2,2,2,0,0,0,2,0]. 20002022 bir SE-form numarasıdır.
  • [11 Golds, 0 Silvers, 0 Bronzes]ayrışacak [1,1,1,1,1,1]. 111111 bunun için tek SE-form numarasıdır.

Bir SE numarası göz önüne alındığında önde gelen 0'lar olmayacaktır. Örneğin, yukarıdaki 2. örnekte, 00002222 -> 2222SE-form numarası olarak kabul edilmez [20,0,20].

Giriş çıkış:

Girdi, [reputation, gold_medals, silver_medals, bronze_medals]tümü negatif olmayan tamsayılar olan bir liste / grup / dizi /' dir. Bu varsayılan bir emirdir ancak değiştirilebilir. Sadece cevabınıza bir not yazın.

Çıktı doğru ve yanlış için herhangi iki tutarlı değerdir.

Kurallar:

  • Giriş her zaman geçerli olacak
  • Her zaman en az 1 temsilciniz olacak
  • Hiç madalyaya sahip olamazsınız, o zaman her zaman yanlış dönmelidir.
  • Madalya sayımlarının gerçekliğe bir etkisi yoktur. Birkaç yüz altın ve bronz olmaması iyidir.
  • Bu bayt kazanır çok kısa cevaptır.

Test Durumları:

#[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

Peki itibar meydan okuma bağlamında tam olarak ne yapar?
OrangeCherries

3
@OrangeCherries Mekanik olarak, hiçbir şey. Yazma sırasında 1447 rep ve 4 silvers, 17 bronz aldım.
Veskah

1
Giriş siparişin yanı sıra esnek mi? Örneğin, bir girdi listesi [bronze, silver, gold]ve ayrı bir ikinci girdi alabilir reputationmiyim?
Kevin Cruijssen

1
@KevinCruijssen Evet, sorun değil. İzin vermediğim tek şey, her sayıyı oluşturan karakter / rakam listelerinin bir listesi olarak girdi almaktır.
Veskah

Çıktı için herhangi bir doğruluk / falsy değerine izin veriliyor mu veya iki tutarlı olması gerekiyor mu?
Nick Kennedy

Yanıtlar:


11

05AB1E , 16 14 13 11 10 bayt

∞×0KJ‚€{íË

Madalya girişini sırayla [bronze, silver, gold]ilk giriş ve reputationikinci giriş olarak alır.

@Grimy sayesinde -1 bayt .

Çevrimiçi deneyin veya tüm test senaryolarını doğrulayın .

Açıklama:

           # 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-> için -1.
Grimmy

1
@Grimy Bazen listelerin en küçük listeye kısaltılması yararlı olur. :) Teşekkürler!
Kevin Cruijssen

Bu 10 bayt değil, utf-8'de 19 bayttır.
Yalan Ryan

@LieRyan Doğru, UTF-8'de gerçekten 19 bayt var. 05AB1E, bildiği her 256 karakterin her biri 1 bayt olarak kodlandığı özel bir kod sayfası kullanır (örneğin Jelly ve Charcoal) . Onaltılık biçimde bu 10 baytlık sürümdeki baytlar şunlardır \x19\xd7\x30\x4b\x4a\x82\x80\x7b\xec\xcb: Bu onaltılık baytları --osabiebayrakla çalıştırmak mümkün olmalı , ancak 05AB1E Elixir sürümünde tamamen dürüst olmak için nasıl yapılacağından emin değilim (ancak bazılarına soracağım) diğerleri doğrulamak ve cevap ile size geri almak).
Kevin Cruijssen

05AB1E (eski) Python versiyonunda @LieRyan bu yapılabilir böyle (tabii başka meydan okuma için farklı bir program), ama size onaltılık bayt çalıştırılır nasıl fikir vermelidir.
Kevin Cruijssen

7

JavaScript (ES6),  92  74 bayt

Girişi alır (['gold','silver','bronze'])('rep'). Bir Boolean değeri döndürür.

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

Çevrimiçi deneyin!


JavaScript (ES6), 74 bayt

Girişi alır (gold, silver, bronze, 'rep'). Bir Boolean değeri döndürür.

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

Çevrimiçi deneyin!


7

MATL , 28 bayt 20 bayt 16 bayt 13 bayt

False için 0 ve true için 1 döndürür. Bu kesinlikle golf edilebilir.

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

İtibar puanı ayrı ayrı alınabiliyorsa ve sipariş [bronz, gümüş, altın], itibar
ise 16 bayta kadar Luis Mendo sayesinde 13 bayta kadar

3:Y"XzVXzY@Um

Çevrimiçi deneyin!




5

Japt , 14 13 12 bayt

íp fn ¬á øUg

Girdiyi şu şekilde alır [rep, bronze, silver, gold]

Deneyin veya tüm test senaryolarını doğrulayın

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? 

Birkaç farklı açıdan birkaç bıçak aldım ama 13'ten daha iyisini yapamam.
Shaggy

@Shaggy İlk değerden kurtulacağından Ågereksizdi fn. Kaldırma Å12 bayt yapar
Cehaletin Somutlaştırılması

Bu, 12 bayt değil, utf-8'de 16 bayttır.
Yalan Ryan

@LieRyan Bazı golf dilleri kendi kodlamalarını kullanır; Japt ISO-8859-1` kullanır
Cehalet şekillenme

@EmbodimentofIgnorance, Ah, lanet olsun, neden onu fark etmedim ?! Japt için açık ödülümü almak için o ayı çıkardığımdan beri gerçekten uygulama dışında hissediyorum.
Shaggy

4

Retina 0.8.2 , 45 bayt

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

Çevrimiçi deneyin! Bağlantı test paketini içerir. Açıklama:

,0
,

Sıfır puanı silin.

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

Altın ve gümüş skorlarını genişletin ve ayırıcıyı yeni bir satıra dönüştürün.

%O`.

İtibar ve genişletilmiş puanları ayrı ayrı sıralayın.

^(.+)¶\1$

Sıralanan basamakları karşılaştırın.



4

Raket, 149 107 98 bayt

(λ(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)))

Çevrimiçi deneyin!

Racket'te ilk kez golf oynamaya devam ediyoruz, bu yüzden hala iyileştirmeler arıyor ...

Açıklama (orijinal daha uzun sürüm, ancak aynı fikir):

(λ(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

Kömür , 24 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Rep, bronz, gümüş, altın sırayla girdi alır 1ve rep geçerliyse çıkar. Açıklama:

1

Temsilcinin geçerli olduğunu varsayın.

F⁴F↨NχFι⊞υκ

Dört giriş değerinin üzerinden geçin. Her değer isüresinin her basamağını, değerin i0 dizinli dizini olan yere itin . Sayısal temel dönüşüm burada 0boş bir diziye dönüştüğü için kullanılır .

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

Dizideki her basamağın sayısını ilk girişteki sayıyla eşleştirin. Varsa, tuvali temizleyin.


Bu 24 bayt değil, utf-8'de 60 bayttır.
Yalan Ryan

@LieRyan UTF-8 bayt olduklarını söylemedim.
Neil

2

Jöle , 18 bayt

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

Çevrimiçi deneyin!

bu biraz kötü


Bu utf-8'de 37 bayt, 18 bayt değil.
Yalan Ryan

@LieRyan Jelly (ve diğer birçok golf dili), 256 baytlık kodların tümü, dil tarafından kullanılan karakterlerden birine karşılık gelecek şekilde kendi kod sayfalarını kullanır.
HyperNeutrino


1

Perl 5 -lF , 62 bayt

map{@r=sort/./g,@r if($_=<>x$_)>0}1..3;@F=sort@F;say"@r"eq"@F"

Çevrimiçi deneyin!

Aşağıdaki gibi ayrı satırlarda girdi alır

reputation
bronze
silver
gold
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.