Як ми всі знаємо, мета буде переповнена з скаргами по приводу забивши код-гольф між мовами (так, кожне слово є окремою ланкою, і це може бути тільки верхівка айсберга).
Маючи стільки ревнощів до тих, хто насправді намагався шукати документацію Pyth, я подумав, що було б непогано мати трохи більше конструктивного виклику, що відповідає веб-сайту, який спеціалізується на проблемах з кодом.
Виклик досить простий. В якості введення ми маємо ім’я мови та кількість байтів . Ви можете приймати їх як вхідні функції stdin
або метод введення мов за замовчуванням.
Як вихід , у нас є скореговане число байтів , тобто ваш рахунок із застосованим гандикапом. Відповідно, вихід повинен бути результатом функції stdout
або методом виводу за замовчуванням для ваших мов. Вихід буде округлений до цілих чисел, тому що ми любимо краватки.
Використовуючи найпотворніший, зламаний разом запиту ( посилання - НЕ соромтеся , щоб очистити його вгору), я зумів створити набір даних (ZIP з .xslx, ODS і CSV) , який містить знімок всіх відповідей на код-гольф питання . Ви можете використовувати цей файл (і припустити, що він доступний вашій програмі, наприклад, він знаходиться в одній папці) або перетворити цей файл в інший звичайний формат ( .xls
, .mat
і .sav
т. Д. - але він може містити лише вихідні дані!). Назва має залишатися QueryResults.ext
з ext
розширенням за вибором.
Тепер про специфіку. Для кожної мови є параметри котла B
та Verbosity V
. Разом їх можна використовувати для створення лінійної моделі мови. Нехай n
буде фактична кількість байтів і c
буде скорегована оцінка. Використовуючи просту модель n=Vc+B
, ми отримуємо для виправленої оцінки:
n-B
c = ---
V
Досить просто, правда? Тепер для визначення V
і B
. Як ви могли очікувати, ми збираємось зробити лінійну регресію або, точніше, лінійну регресію, зважену на найменші квадрати. Я не збираюся пояснювати деталі цього питання - якщо ви не впевнені, як це зробити, Вікіпедія - ваш друг , або якщо вам пощастило, документація вашої мови.
Дані будуть наступними. Кожна точка даних буде числом байтів n
і середньою кількістю запитань c
. Для обліку голосів бали будуть зважені, за їх кількістю голосів плюс один (для врахування 0 голосів), назвемо це v
. Відповіді з негативними голосами слід відкинути. Простіше кажучи, відповідь з 1 голосом повинна рахувати так само, як дві відповіді з 0 голосами.
Потім ці дані встановлюються у вищезгадану модель n=Vc+B
за допомогою зваженої лінійної регресії.
Наприклад , з урахуванням даних для даної мови
n1=20, c1=8.2, v1=1
n2=25, c2=10.3, v2=2
n3=15, c3=5.7, v3=5
Тепер ми складаємо відповідні матриці та вектори A
, y
і W
з нашими параметрами у векторі
[1 c1] [n1] [1 0 0] x=[B]
A=[1 c2] y=[n2] W=[0 2 0], [V]
[1 c3] [n3] [0 0 5]
ми вирішуємо матричне рівняння (із '
позначенням транспозиції)
A'WAx=A'Wy
для x
(і, отже, ми отримуємо наш B
і V
параметр).
Ваш результат буде результатом вашої програми, якщо вкажете свою власну назву мови та кількість рахунків. Так так, цього разу навіть користувачі Java та C ++ можуть виграти!
ПОПЕРЕДЖЕННЯ: Запит генерує набір даних з безліччю недійсних рядків через те, що люди використовують "круте" форматування заголовків і люди, що позначають свої проблеми з кодовим завданням як код-гольф . Забезпечене мною завантаження видалило більшість людей, що втратили огляд. НЕ використовуйте CSV, наданий із запитом.
Щасливого кодування!
C++ <s>6 bytes</s>
. Крім того, я ніколи не робив жодного T-SQL до сьогоднішнього дня, і я вже вражений собою, що мені вдалося витягнути рахунок.