Là đại diện của tôi trong Stack-Exchange Form?


16

Tiền đề:

Danh tiếng của bạn là trong Biểu mẫu trao đổi ngăn xếp nếu có thể được thể hiện bằng cách phân tách số huy chương của bạn (vàng, bạc và đồng được tính riêng) thành 10 chữ số cơ bản của chúng và nối chúng theo bất kỳ thứ tự nào, với một vài cảnh báo.

Trong khi phân hủy, mỗi

  • Chữ số huy chương vàng có giá trị ba chữ số.
  • Bạc có giá trị hai chữ số.
  • Đồng là một chữ số.
  • Ngoài ra, vì SE không hiển thị loại huy chương nếu bạn không có bất kỳ loại nào, nên số 0 huy chương cho một loại sẽ không mang lại a [0].

Thí dụ:

  • [1 Gold, 2 Silvers, 3 Bronzes]sẽ phân hủy thành [1,1,1,2,2,3]. 321112 và 213121 là hai ví dụ về số dạng SE cho các huy chương này.
  • [20 Golds, 0 Silvers, 20 Bronzes]sẽ phân hủy thành [2,2,2,0,0,0,2,0]. 20002022 là số dạng SE.
  • [11 Golds, 0 Silvers, 0 Bronzes]sẽ phân hủy thành [1,1,1,1,1,1]. 111111 là số dạng SE duy nhất cho việc này.

Sẽ không có số 0 đứng đầu khi xem xét số SE. Ví dụ, trong ví dụ thứ 2 ở trên, 00002222 -> 2222sẽ không được coi là số dạng SE cho [20,0,20].

Đầu ra đầu vào:

Đầu vào là một danh sách / bộ / mảng / bất cứ thứ gì trong số [reputation, gold_medals, silver_medals, bronze_medals]đó đều là các số nguyên không âm. Đây là thứ tự giả định nhưng có thể được thay đổi. Chỉ cần ghi chú trong câu trả lời của bạn nếu bạn làm.

Đầu ra là bất kỳ hai giá trị nhất quán cho đúng và sai.

Quy tắc:

  • Đầu vào sẽ luôn hợp lệ
  • Bạn sẽ luôn có ít nhất 1 Đại diện
  • Bạn có thể không có huy chương nào cả, điều này sẽ luôn luôn trả về sai.
  • Số lượng huy chương không có liên quan đến thực tế. Có vài trăm vàng và không có đồng tiền là tốt.
  • Đây là để câu trả lời ngắn nhất trong byte thắng.

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

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

Vì vậy, chính xác danh tiếng làm gì trong bối cảnh của thách thức?
OrangeCherries

3
@OrangeCherries Cơ học, không có gì. Nó truyền cảm hứng cho thử thách bởi vì tôi có 1447 đại diện và 4 người thợ bạc, 17 đồng tiền tại thời điểm viết bài.
Veskah

1
Là đầu vào linh hoạt bên cạnh thứ tự? Vì vậy, ví dụ tôi có thể lấy một danh sách [bronze, silver, gold]đầu vào và đầu vào thứ hai riêng biệt reputationkhông?
Kevin Cruijssen

1
@KevinCruijssen Vâng, điều đó tốt. Điều duy nhất tôi muốn nói là không được phép là lấy đầu vào làm danh sách các danh sách các ký tự / chữ số tạo nên mỗi số.
Veskah

Có bất kỳ giá trị trung thực / giả mạo nào được phép cho đầu ra hay nó phải là hai giá trị nhất quán?
Nick Kennedy

Câu trả lời:


11

05AB1E , 16 14 13 11 10 byte

∞×0KJ‚€{íË

Lấy đầu vào huy chương theo thứ tự [bronze, silver, gold]làm đầu vào đầu tiên và reputationlàm đầu vào thứ hai.

-1 byte nhờ @Grimy .

Hãy thử trực tuyến hoặc xác minh tất cả các trường hợp thử nghiệm .

Giải trình:

           # 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-> cho -1.
Grimmy

1
@Grimy Đôi khi thật hữu ích khi danh sách bị cắt ngắn đến mức nhỏ nhất. :) Cảm ơn!
Kevin Cruijssen

Đây là 19 byte trong utf-8, không phải 10 byte.
Nói dối Ryan

@LieRyan Bạn đã đúng, thực sự là 19 byte trong UTF-8. 05AB1E sử dụng (ví dụ: Jelly và Char than) một bảng mã tùy chỉnh , trong đó cứ 256 ký tự mà nó biết được mã hóa thành 1 byte mỗi ký tự. Các byte trong phiên bản 10 byte này ở dạng thập lục phân là \x19\xd7\x30\x4b\x4a\x82\x80\x7b\xec\xcb: Có thể chạy các byte thập lục phân này bằng --osabiecờ, nhưng tôi không chắc làm thế nào để làm như vậy trong phiên bản Elixir 05AB1E phải hoàn toàn trung thực (nhưng tôi sẽ hỏi một số những người khác để xác minh và lấy lại cho bạn với câu trả lời).
Kevin Cruijssen

@LieRyan Trong phiên bản Python 05AB1E (di sản), nó có thể được thực hiện như thế này (tất nhiên là một chương trình khác cho một thách thức khác), nhưng nó sẽ cho bạn ý tưởng về cách các byte thập lục phân được chạy.
Kevin Cruijssen

7

JavaScript (ES6),  92  74 byte

Đưa đầu vào là (['gold','silver','bronze'])('rep'). Trả về giá trị Boolean.

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

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


JavaScript (ES6), 74 byte

Đưa đầu vào là (gold, silver, bronze, 'rep'). Trả về giá trị Boolean.

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

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


7

MATL , 28 byte 20 byte 16 byte 13 byte

Trả về 0 cho sai và 1 cho đúng. Điều này chắc chắn có thể được đánh golf xuống.

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

Giảm xuống 16 byte nếu điểm danh tiếng có thể được lấy riêng và thứ tự là [đồng, bạc, vàng], danh tiếng
Giảm xuống còn 13 byte nhờ Luis Mendo

3:Y"XzVXzY@Um

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




5

Japt , 14 13 12 byte

íp fn ¬á øUg

Đưa đầu vào là [rep, bronze, silver, gold]

Dùng thử hoặc Xác minh tất cả các trường hợp thử nghiệm

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? 

Tôi đã thực hiện một vài cú đâm vào đây từ một vài góc độ khác nhau nhưng cũng không thể làm tốt hơn 13.
Xù xì

@Shaggy Hóa ra Åkhông cần thiết, vì fnsẽ thoát khỏi giá trị đầu tiên. Loại bỏ Ålàm cho nó 12 byte
Hiện thân của sự thiếu hiểu biết

Đây là 16 byte trong utf-8, không phải 12 byte.
Nói dối Ryan

@LieRyan Một số ngôn ngữ chơi gôn sử dụng bảng mã riêng; Japt sử dụng ISO-8859-1`
Hiện thân của sự thiếu hiểu biết

@EmbodimentofIgnorance, Ah, chết tiệt, tại sao tôi không phát hiện ra điều đó?! Tôi thực sự cảm thấy không tập luyện được kể từ khi tôi nghỉ tháng đó vì tiền thưởng mở cho Japt.
Shaggy

4

Võng mạc 0.8.2 , 45 byte

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

Hãy thử trực tuyến! Liên kết bao gồm bộ kiểm tra. Giải trình:

,0
,

Xóa điểm không.

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

Mở rộng điểm số vàng và bạc, và chuyển đổi dấu phân cách thành dòng mới.

%O`.

Sắp xếp danh tiếng và điểm số mở rộng riêng biệt.

^(.+)¶\1$

So sánh các chữ số được sắp xếp.



4

Vợt, 149 107 98 byte

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

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

Lần đầu tiên chơi golf trong Vợt, vì vậy vẫn đang tìm kiếm sự cải thiện ...

Giải thích (của phiên bản dài hơn ban đầu, nhưng cùng một ý tưởng):

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

Than , 24 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đưa đầu vào theo thứ tự đại diện, đồng, bạc, vàng và đầu ra 1nếu đại diện hợp lệ. Giải trình:

1

Giả sử đại diện là hợp lệ.

F⁴F↨NχFι⊞υκ

Lặp lại bốn giá trị đầu vào. Đẩy từng chữ số của mỗi ilần giá trị trong đó ichỉ số 0 được lập chỉ mục của giá trị. Chuyển đổi cơ sở số được sử dụng ở đây vì nó chuyển đổi 0thành một mảng trống.

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

Kiểm tra số lượng của từng chữ số trong mảng khớp với đầu vào đầu tiên. Nếu có khác nhau, xóa khung vẽ.


Đây là 60 byte trong utf-8, không phải 24 byte.
Nói dối Ryan

@LieRyan Tôi không nói rằng chúng là UTF-8 byte.
Neil

2

Thạch , 18 byte

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

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

điều này hơi xấu


Đây là 37 byte trong utf-8, không phải 18 byte.
Nói dối Ryan

@LieRyan Jelly (và nhiều ngôn ngữ chơi gôn khác) sử dụng trang mã riêng của họ sao cho tất cả 256 mã 1 byte tương ứng với một trong các ký tự được sử dụng bởi ngôn ngữ này.
HyperNeutrino


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.