Wszyscy wiedzą, że treść stanowi pytanie. Ale dobry tytuł też pomaga i to pierwsza rzecz, którą widzimy. Czas zamienić to pierwsze wrażenie w program i dowiedzieć się, jakie tytuły zyskują więcej głosów.
Niniejszym zostajesz poproszony o napisanie programu lub funkcji, która pobiera tytuł pytania PPCG jako dane wejściowe i zwraca prognozę jego wyniku.
Na przykład możesz otrzymać Counting Grains of Rice
jako dane wejściowe i 59
w tym przypadku próbowałbyś zwrócić coś zbliżonego do wyniku . Zgadywanie na liczbach innych niż całkowite jest w porządku, ale zgadywania na poziomie lub poniżej -20
nie są.
Oto dane do testowania i oceniania:
http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes
Punktacja: Twój program będzie uruchamiany na każde pytanie w historii tej witryny (PPCG), nie licząc pytań zamkniętych. Funkcja ln(score + 20)
zostanie następnie zastosowana do każdej partytury i do każdego odgadnięcia. Błąd średniej kwadratowej między dwoma wynikowymi zestawami wartości jest wynikiem. Niższe jest lepsze.
Na przykład program, który zgadywał 0 za każdym razem, uzyskałby wynik 0,577, a program, który odgadł 11 za każdym razem, uzyskałby wynik 0,362.
Oblicz swój wynik i umieść go w tytule swojej odpowiedzi. Podaj także prognozę swojego programu dotyczącą liczby głosów pozytywnych na to pytanie.
Ograniczenia:
Aby zapobiec nadmiernemu kodowaniu, nie więcej niż 1000 znaków.
Musi działać na całym zestawie danych powyżej w niecałą minutę na rozsądnej maszynie.
Standardowe luki są zamknięte.
Oto tester napisany w języku Python, do użytku i / lub w celu wyjaśnienia niejasności:
import sys
import math
import csv
scores_dict = {}
with open(sys.argv[1], 'r') as csv_file:
score_reader = csv.reader(csv_file)
for score, title in score_reader:
if score == 'Score':
continue
scores_dict[title] = int(score)
def rate_guesses(guesser):
def transform(score):
return math.log(score + 20) if score > -20 else 0
off_by_total = 0
lines_count = 0
for title in scores_dict:
guessed_score = guesser(title)
real_score = scores_dict[title]
off_by_total += (transform(real_score) - transform(guessed_score)) ** 2
return (off_by_total/len(scores_dict)) ** .5
def constant11(title):
return 11
print(rate_guesses(constant11))
[closed]
i [on hold]
, w stosownych przypadkach?