Tło:
Często zdarza mi się, że przeglądając stronę Stackexchange, zaczynam się zastanawiać, jak ludzie zdobywają reputację. Wiem, że zawsze mogę liczyć na codegolf SE w rozwiązaniu moich problemów, więc oto:
Utwórz program, który zaakceptuje dodatnią liczbę całkowitą reprezentującą reputację osoby. Zignorujemy nagrody i stwierdzimy, że są to jedyne sposoby na zdobycie / utratę przedstawiciela w SE (pełna tabela tutaj ):
- Każde konto zaczyna się od 1 powtórzenia i nie może zejść poniżej tego
- Twoje pytanie jest ocenione = +5
- Twoja odpowiedź jest pozytywna = +10
- Twoje pytanie jest odrzucone = -2
- Twoja odpowiedź jest przegłosowana = -2
- Głosujesz za odpowiedzią = -1
- Twoja odpowiedź została zaakceptowana = +15
- Akceptujesz odpowiedź = +2
Twój program musi dowiedzieć się, ile z tych działań miało miejsce na koncie tego użytkownika, aby uzyskać dostęp do jego przedstawiciela. Musi ustalić najkrótszą liczbę akcji, aby dostać się do tego poziomu powtórzeń. Przykłady:
Wejście: 11 Wyjście: 1 odpowiedź pozytywna
Dane wejściowe: 93 Dane wyjściowe: zaakceptowano 6 odpowiedzi, zaakceptowano 1 odpowiedź
W tych przykładach, kiedy mówię „pytanie głosujące”, oznacza to, że queston tej osoby został pozytywnie oceniony. Kiedy mówię „odpowiedź negatywnie oceniona”, oznacza to, że ocenili cudzą odpowiedź.
Zasady:
code-golf , więc wygrywa najkrótszy kod, który może to zrobić.
Odpowiedzi:
Golfscript,
162144 bajtyJak to działa
Ogólna idea jest dokładnie taka sama jak w mojej odpowiedzi na Bash .
źródło
Bash,
247202192 bajtówJak to działa
Po wykonaniu polecenia przez sed zostanie wykonany następujący skrypt bash:
Aby uzyskać optymalne rozwiązanie (minimalna liczba zdarzeń w celu uzyskania
n
reputacji), wystarczy obliczyć liczbę zaakceptowanych odpowiedzi (a
) niezbędnych do uzyskania reputacji poniżej 16 (1 odpowiedź zaakceptować) i postępować z resztą w następujący sposób:źródło
-2
i-1
przegłosować.Perl,
500263256208 bajtówScenariusz
rep.pl
:Stosowanie
Dane wejściowe są oczekiwane jako dodatnia liczba całkowita podana jako argument skryptu. Różne akcje są wyprowadzane jako linie.
Testy
Nie golfił
Starsza wersja
Edycje
S
nie jest już potrzebna.E
nie jest już potrzebna.źródło
R,
454421Dzięki Dennisowi za odpowiedź, która bardzo mi pomogła.
Wersja bez golfa
źródło
JavaScript -
270237227206192 znakówDokładnie tyle znaków, ile Bash (tak!) I pokonuje Pythona i Perla :) To obniża reputację do
14
po którym zajmuje kolejne niezbędne akcje, całkowicie w stylu pętli.EDYCJA 1: Przekształcono
\n
s na,
s i przekonwertowałem jedenif
blok na trójskładnikowy, i lepszą podłogę o krótkich nazwach.EDYCJA 2: Wielkie podziękowania dla Alconji, która pomogła mi zmniejszyć 11 znaków. Następnie wprowadziłem kilka poprawek, aby zmniejszyć o 2 znaki więcej.
Starsza wersja:
Test:
WEJŚCIE:
42
WYJŚCIE:
WEJŚCIE:
1337
WYJŚCIE:
Nieskluczony kod:
źródło
function name(args){}
staje się,name=(args)=>{}
a tym samym oszczędza wiele bajtów.q
raz, więc możesz ją wstawić. Możesz także upuścićc
zmienną i zrobićr%=15
zamiastr-=c*15
. Powinieneś sprowadzić cię do 195 znaków (r=prompt()-1,a="1answer ",v="vote,";s=(r/15|0)+"answer accept,",r%=15;if(r>9)s+=a+"+"+v,r-=10;if(r>2)s+="1question +"+v,r-=5;r>0?s+=a+"accepted,":0;if(r<-1)s+=a+"-"+v;r&1?s+=a+"-voted":0;alert(s)
).Game Maker Language, 276
źródło
C # - 391
Trochę długo i nie przetestowałem tego dokładnie (dużo). :)
Bez golfa - NOWOŚĆ
Bez gry w golfa - STARY (409)
Test:
źródło
Python -
213207Przeklinajcie długie nazwy funkcji!
Przykład: (zignoruj końcowy znak nowej linii)
źródło
EOF
. Czy możesz wskazać mi kompilator, który działa (i który powinienem zachować na przyszłość)?C ++, 276 (316 w / obejmuje)
Kompiluje z GCC, z ostrzeżeniami. Przykład:
Możesz go przenieść na język, który nie wymaga deklaracji typu i opublikować go jako swój własny.
źródło
JavaScript -
273256235Połączone obliczenia i produkcja, i grał w golfa w sumie do 287.
Edycja: wyjęto niektóre zmienne na kilka krótszych.
Usunięto podejście Math.Floor dla | 0.
Przeniesiono trochę inicjalizacji do parametru prompt (), usunięto kilka nawiasów, ostrzeżono o dołączeniu końcowego łańcucha.
źródło
prompt
tej wartości i nie możesz na stałe zakodować tej wartości.Python3, 188B
Zastosowanie:
python3 score.py <ret> 11 <ret>
gdzie ten skrypt jest zapisywany jako score.py.Przykładowe dane wyjściowe:
źródło