Можливості дужок XKCD


13

Сьогоднішній XKCD - це фігура спортивного турніру, де учасники мають відомі імена, розбиті на групи, можливо, заплутаних імен.

Надайте ймовірність, що даний учасник виграє весь турнір, виходячи з кожного учасника в даному раунді з рівними шансами виграти цей раунд.

Вхідні дані

Ім'я учасника конкурсу.

  • XKCD любить використовувати всі великі регістри, але ви можете використовувати будь-який регістр, який має для вас сенс, або зробити ваш вхідний регістр нечутливим.
  • Ви можете вважати, що всі імена вводу є дійсними.
  • Jeff Gordanце, мабуть, неправильне написання Jeff Gordon. Ви можете прийняти те чи інше.
  • Деякі назви включають розділові знаки, наприклад, H. G. Wellsта Joseph Gordon-Levitt. Ви можете прийняти імена з пунктуацією або без неї (або обома). Сказане без пунктуації було б H G WellsіJoseph Gordon Levitt
  • Крім того , ви можете прийняти або Beyoncéабо Beyonceабо обидва
  • Mister/Fred Astaire/RogersЛінія є трохи дивним. Для цього, ви повинні прийняти всі з наступних умов : Fred Rogers, Mister RogersіFred Astaire

Вихідні дані

Ймовірність того, що даний учасник виграє весь турнір, в раціональній формі (наприклад 1/64)

Приклади

  • Луї Армстронг потенційно зіграє в 6 раундів, кожен з яких має два учасники, тож у нього є 1/64 шансів на перемогу.
  • Алан Рікман потенційно зіграє в 7 раундах, перший з 3-ма учасниками, а решта з 2-ма учасниками, тож у нього шанси на перемогу в 1/192.

Щоб заощадити зусилля на введенні всіх імен із зображення, уXXCD вже є їх таблицями . Я також скинув їх на цю пастину .

Зверніть увагу, що ймовірність виграшу в обясняющем XKCD помилкова - вони вдвічі більші, ніж повинні бути, оскільки вони, ймовірно, забувають про фінальний раунд. Дякуємо, що вказали на це @Geobits.


тому ми повинні спершу перетворити зображення у текст, а потім у відра ймовірностей жорсткого коду .. ughh
Оптимізатор

2
@Optimizer objasxkcd може допомогти вам у цьому
Мартін Ендер

@ MartinBüttner That dope
Optimizer

@Optimizer не потрібна конверсія зображень :)
Digital Trauma

4
objasxkcd - це вікі; навіщо це фіксувати приміткою у специфікації, коли ви могли виправити це для всіх? : P
підземниймонорельс

Відповіді:


6

CJam, 161 байт

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

Це повна програма, яка очікує великого введення, з пунктуацією та наголосами точно так, як показано на пастібі.

Спробуйте його в Інтернеті в інтерпретаторі CJam .

Як це працює

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.

Я взяв ймовірності з обясниxkcd (помножений на 2) і заповнив прогалини. Сподіваємось, все правильно. Виправлення будь-якої ймовірності не повинно впливати на кількість байтів.
Денніс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.