Xác suất khung XKCD


13

XKCD ngày nay là một khung theo phong cách giải đấu thể thao, nơi các thí sinh là những cái tên nổi tiếng, được đặt vào các nhóm có thể gây nhầm lẫn.

Đưa ra xác suất rằng một thí sinh nhất định sẽ chiến thắng toàn bộ giải đấu, dựa trên mỗi thí sinh trong một vòng nhất định có cơ hội chiến thắng như nhau trong vòng đó.

Đầu vào

Tên của một thí sinh.

  • XKCD thích sử dụng tất cả chữ hoa, nhưng bạn có thể sử dụng bất kỳ trường hợp nào có ý nghĩa đối với bạn hoặc làm cho trường hợp đầu vào của bạn không nhạy cảm.
  • Bạn có thể giả sử tất cả các tên đầu vào là hợp lệ.
  • Jeff Gordancó lẽ là một lỗi chính tả Jeff Gordon. Bạn có thể chọn chấp nhận một trong hai hoặc cả hai.
  • Một số tên bao gồm dấu câu, ví dụ H. G. WellsJoseph Gordon-Levitt. Bạn có thể chọn chấp nhận tên có hoặc không có dấu chấm câu (hoặc cả hai). Ở trên không có dấu câu sẽ là H G WellsJoseph Gordon Levitt
  • Tương tự, bạn có thể chọn để chấp nhận hoặc Beyoncéhoặc Beyoncehoặc cả hai
  • Các Mister/Fred Astaire/Rogersdòng là một chút kỳ quặc. Đối với một này, bạn phải chấp nhận tất cả những điều sau đây: Fred Rogers, Mister RogersFred Astaire

Đầu ra

Xác suất thí sinh đã cho chiến thắng toàn bộ giải đấu, dưới dạng hợp lý (ví dụ 1/64)

Ví dụ

  • Louis Armstrong có khả năng sẽ chơi trong 6 vòng, mỗi vòng có hai thí sinh, vì vậy anh có cơ hội chiến thắng 1/64.
  • Alan Rickman có khả năng sẽ chơi trong 7 vòng, lần đầu tiên có 3 thí sinh và phần còn lại có 2 thí sinh, vì vậy anh có cơ hội chiến thắng 1/192.

Để tiết kiệm cho bạn công sức gõ tất cả các tên từ hình ảnh, giải thíchXKCD đã được lập bảng . Tôi cũng đã đổ chúng vào pastebin này .

Lưu ý rằng xác suất chiến thắng trong giải thíchXKCD là sai - chúng lớn gấp đôi so với lẽ ra vì có lẽ họ đang quên vòng cuối cùng. Cảm ơn bạn đã chỉ ra điều này @Geobits.


vì vậy trước tiên chúng ta phải chuyển đổi hình ảnh thành văn bản và sau đó là các nhóm xác suất mã
hóa

2
@Optimizer giải thích xkcd có thể giúp bạn điều đó
Martin Ender

@ MartinBüttner Đó là dope
Trình tối ưu hóa

@Optimizer không cần chuyển đổi hình ảnh :)
Chấn thương kỹ thuật số

4
Explxkcd là một wiki; Tại sao phải sửa nó bằng một ghi chú trong thông số kỹ thuật khi bạn có thể sửa nó cho mọi người? : P
undergroundmonorail

Câu trả lời:


6

CJam, 161 byte

1'/l_"FRE"#\_'É#)\2b626%536%"òazíF­.?§·»ùßóÿ÷ýÿÿ»×ï_ÿÿ¿ß÷ä¿ûïÿÏÅÿ¿ÿÿ~ÿþÿýó½ïÿþþ/ïþÿ®þü¾ùÿ®÷/"256b2b2*<1-,"ãÍÕý*ÔÞ)ð^sV? Ìöî²\ÅlÕáS{Á"260b5b=5,Z6t=2+1\?4?32*

Đây là một chương trình đầy đủ mong đợi đầu vào chữ hoa, với dấu chấm câu và dấu chính xác như được hiển thị trong pastebin.

Hãy thử trực tuyến trong trình thông dịch CJam .

Làm thế nào nó hoạt động

1'/      e# Push a 1 and a slash.
l        e# Read a line of input from STDIN.
_"FRE"#  e# Push 0 if the input starts with "FRE" and a truthy value otherwise.
\_'É#)   e# Push 1 if the input doesn't contain "É" and a falsy value otherwise.

         e# Now we hash the input:
\2b      e#     Apply base 2 conversion to turn the input into an integer.
626%536% e#     Take that integer modulo 626, then modulo 536.

"òazíF­.?§·»ùßóÿ÷ýÿÿ»×ï_ÿÿ¿ß÷ä¿ûïÿÏÅÿ¿ÿÿ~ÿþÿýó½ïÿþþ/ïþÿ®þü¾ùÿ®÷/"256b2b2*

         e# Convert the string from base 256 to base 2 and repeat it.
         e# The resulting array, [1 1 1 1 0 0 1 0 0 ...], contains a 0 at index X
         e# if and only if there is a possible input with hash X.

<        e# Keep the binary values before the index of the input hash.
<1-,     e# Count the number of zeroes.

"ãÍÕý*ÔÞ)ð^sV?  Ìöî²\ÅlÕáS{Á"260b5b

         e# Convert the string from base 260 to base 5.
         e# The resulting array, [2 2 2 2 2 0 4 4 0 0 ...], contains a diffrent
         e# integer for every different probability. The input with the lowest hash
         e# corresponds to the first index, the one with the highest to the last.

=        e# Retrieve the integer corresponding to the input.
5,Z6t=   e# Retrieve the corresponding element from [0 1 2 6 4].
2+       e# Add two.
1\?      e# Select the result from above or 1 for BEYONCÉ.
4?       e# Select the result from above or 4 for and FRED.
32*      e# Multiply by 32.

Tôi đã lấy xác suất từ ​​explxkcd (nhân với 2) và điền vào các khoảng trống. Hy vọng, mọi thứ đều chính xác. Sửa bất kỳ xác suất nào sẽ không có tác động đến số byte.
Dennis
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.