Обчисліть репутацію обміну стека


13

Фон:

Я часто виявляю, що під час перегляду сайту Stackexchange я починаю цікавитись, як люди отримують таку репутацію, яку вони мають. Я знаю, що я завжди можу розраховувати на кодегольф SE для вирішення своїх проблем, тому ось це:

Створіть програму, яка прийме додатне ціле число, що представляє репутацію людини. Ми будемо ігнорувати приємності та говорити, що це єдині способи отримати / втратити представник на SE (повний стіл тут ):

  • Кожен обліковий запис починається з 1 представника і не може опускатися нижче цього
  • Ваше питання анульовано = +5
  • Ваша відповідь аномована = +10
  • Ваше запитання занижене = -2
  • Ваша відповідь знижена = -2
  • Ви скажете відповідь = -1
  • Ваша відповідь прийнята = +15
  • Ви приймаєте відповідь = +2

Ваша програма повинна з'ясувати, скільки цих дій відбулося в обліковому записі цього користувача, щоб дістатись до їх представника. Він повинен з'ясувати найкоротшу кількість дій, щоб дійти до цього рівня представника. Приклади:

Вхід: 11 Вихід: 1 відповідь

Вхід: 93 Вихід: 6 відповідей приймає, 1 відповідь прийнято

У цих прикладах, коли я кажу «запитання про виклик», це означає, що квестон людини піднявся. Коли я кажу «відповідь зворотно», це означає, що вони прихильнили чужу відповідь.

Правила:

, тому виграє найкоротший код, який може це зробити.


8
Існує нескінченна кількість способів отримати будь-яку репутацію. Тільки впровадження «відповіді на підвищення» та «відповіді з прихильністю» достатньо, щоб завжди знаходити спосіб, тому немає жодного поштовху для використання будь-якого ширшого підмножини змін балів. Це те, що ви задумали?
алгоритм

@algorithmshark відредаговано. Ви повинні знайти найменшу кількість дій, які вас там
влаштують

"" "Я часто виявляю, що під час перегляду сайту Stackexchange я починаю замислюватися, як люди отримують таку репутацію, яку вони мають." "" Проти "" "Ви повинні знайти найменшу кількість дій, які вас влаштують туди" "". 2-а цитата не обов'язково є правильною відповіддю на першу цитату.

1
@algorithmshark Загалом я згоден з вашими коментарями. Однак 6 відповідей приймає + 1 відповідь прийнято - 6 * 15 + 2 = 92, а не 93! Я не бачу способу зробити це в 7 діях, але я можу це зробити в 8: 6 відповідь приймає, одне запитання було внесено, одне запитання: 6 * 15 + 5-2 = 93. Докторе, якщо є кілька можливостей для "найменшої кількості дій", чи потрібно їх знайти, або лише одну?
Річка Рівня Св.

1
@steveverrill ви почнете з 1 представника
TheDoctor

Відповіді:


3

Гольфскрипт, 162 144 байти

{{}if}:?;~.)15/:^15*-:~3>1~8>' answer ':A' question 'if'upvote'++?^^A'accept'+:C+^1>{'s'+}??~5%:,4<,1>&1C'ed'++?,2%!1A'downvote'++,4<{'d'+}??]n*

Як це працює

Загальна ідея точно така ж, як у моїй відповіді Баша .

{{}if}:?;         # Create an `if' statement with an empty `else' block.
                  #
~.)15/:^          # Interpret the input string, subtract 1 from its only element (the
                  # reputation score), divide by 15 and save the result in `^'. This gives
                  # the number of accepted answers.
                  #
15*-:~            # Multiply the number of accepted answer by 15 and subtract the product
                  # from the reputation score. Save the result in `~'.
                  #
3>                # If the result is greater than 3:
                  #
  1               # Push 1 on the stack.
                  #
  ~8>             # If the result is greater than 8:
                  #
    ' answer ':A  # Push `answer' on the stack. Either way, save the string in `A'.
                  #
    ' question '  # Otherwise, push `question' on the stack.
                  #
  if              #
                  #
  'upvote'++      # Push `upvote' on the stack and concatenate the three strings.
                  #
?                 #
                  #
^                 # If the number of accepted answers is positive:
                  #
  ^A'accept'+:C+  # Push the number, concatenated with the string ` answer accept', on the
                  # stack. Either way, the string in `C'.
                  #
  ^1>             # If the number of accepted answers is greater than 1:
                  #
    {'s'+}        # Cocatenate the previous string with `s', for proper pluralization.
                  #
  ?               #
                  #
?                 #
                  #
~5%:,             # Calculate the reputation score modulus 5. Save the result in `,'.
                  #
4<,1>&            # If the result is less than 4 and greater than 1:
                  #
  1C'ed'++        # Push the string `1 answer accepted' on the stack.
                  #
?                 #
                  #
,2%!              # If the result is odd:
                  #
  1A'downvote'++  # Push the string `1 answer downvote' on the stack.
                  #
  ,4<             # If the result is less than 4:
                  #
    {'d'+}        # Concatente the previous string with `d'.
                  #
  ?               #
                  #
?                 #
                  #
]n*               # Join the array formed by all strings on the stack, separating the
                  # strings by newlines. This is the output.

9

Bash, 247 202 192 байт

n=$1 bash <(sed 's/E/)echo /;s/C/ Aaccept/;s/A/answer /
s/.*)/((&)\&\&/'<<<'a=(n+1)/15,a-1)s=s;q=question
aE$aC$s
r=n%5,r-4)d=d&&
r>1E1Ced
1-r%2E1 Adownvote$d
n-=15*a,n>8)q=A
n>3E1 $q upvote')

Як це працює

Після того, як команда sed виконає цю роботу, виконується наступний скрипт bash:

((a=(n+1)/15,a-1))&&s=s;q=question
((a))&&echo $a answer accept$s
((r=n%5,r-4))&&d=d&&
((r>1))&&echo 1 answer accepted
((1-r%2))&&echo 1 answer downvote$d
((n-=15*a,n>8))&&q=answer 
((n>3))&&echo 1 $q upvote

Щоб отримати оптимальне рішення (мінімальна кількість подій для отримання nрепутації), достатньо обчислити кількість прийнятих відповідей ( a), необхідних для досягнення репутації нижче 16 (1 відповідь приймаю) та обробляти залишки таким чином:

1  (no rep change)
2  answer accepted, answer downvoted
3  answer accepted
4  question upvote, answer downvote
5  question upvote, answer downvoted
6  question upvote
7  question upvote, answer accepted, answer downvoted
8  question upvote, answer accepted
9  answer upvote, answer downvote
10 answer upvote, answer downvoted
11 answer upvote
12 answer upvote, answer accepted, answer downvoted
13 answer upvote, answer accepted  
14 answer accept, answer downvote
15 answer accept, answer downvoted

2
Дякуємо за пояснення, не просто так боротися -2і -1проти них.
AL

6

Perl, 500 263 256 208 байт

Сценарій rep.pl:

$_=1+pop;sub P($){print$=,@_,$/}$;=" answer ";$:="$;downvote";($==$_/15)&&P"$;accept"."s"x($=>1);$_%=15;$==1;P"$;upvote",$_-=10if$_>9;P" question upvote",$_-=5if$_>4;P"$;accepted"if$_>2;P$:."d"if$_%2;P$:if!$_

Використання

Вхід очікується як натуральне ціле, подане як аргумент до сценарію. Різні дії виводяться у вигляді рядків.

Тести

perl rep.pl 11
1 answer upvote

perl rep.pl 93
6 answer accepts
1 answer accepted

perl rep.pl 1

perl rep.pl 4
1 question upvote
1 answer downvote

perl rep.pl 12
1 answer upvote
1 answer accepted
1 answer downvoted

perl rep.pl 19
1 answer accept
1 question upvote
1 answer downvote

perl rep.pl 34
2 answer accepts
1 question upvote
1 answer downvote

perl rep.pl 127
8 answer accepts
1 question upvote
1 answer accepted
1 answer downvoted

perl rep.pl 661266
44084 answer accepts
1 question upvote

Безумовно

$_ = pop() + 1; # read the reputation as argument,
                # remove the actionless start reputation
                # and add a bias of two to calculate
                # the answer accepts in one division.

# Actions
# -------
# answer accepts:      Your answer is accepted    = +15
# answer upvotes:       Your answer is upvoted     = +10
# question upvotes:     Your question is upvoted   = +5
# answers accepted:     You accept an answer       = +2
# answers downvoted:    You downvote an answer     = -1
# answer downvotes:     Your answer is downvoted   = -2
# (questions downvoted: Your question is downvoted = -2) not used

# Function P prints the number of actions in $= and
# the action type, given in the argument.
# The function is prototyped "($)" to omit the
# parentheses in the usage.
sub P ($) {
    print $=, @_, $/ # $/ is the line end "\n"
}
# abbreviations,
# special variable names to save a space if a letter follows
$; = " answer ";
$: = "$;downvote";

# Calculation and printing the result
# -----------------------------------
($= = $_ / 15) && # integer division because of the special variable $=
P "$;accept" .
  "s" x ($= > 1); # short for: ($= == 1 ? "" : "s")
$_ %= 15;
$= = 1;           # now the action count is always 1 if the action is used
P "$;upvote",         $_ -= 10 if $_ > 9;
P " question upvote", $_ -=  5 if $_ > 4;
P "$;accepted"                 if $_ > 2;
P $: . "d"                     if $_ % 2;
P $:                           if ! $_

Старіша версія

$_ = pop() + 1; # read the reputation as argument
                # subtract start reputation (1)
                # add bias (2)

# Actions
# -------
# $= answer accepts:      Your answer is accepted    = +15
# $b answer upvotes:      Your answer is upvoted     = +10
# $c question upvotes:    Your question is upvoted   = +5
# $d answers accepted:    You accept an answer       = +2
# $e answers downvoted:   You downvote an answer     = -1
# $f answer downvotes:    Your answer is downvoted   = -2
# -- questions downvoted: Your question is downvoted = -2

# Calculaton of answer accepts by a simple division that is
# possible because of the bias.
$= = $_ / 15; # integer division because of the special variable $=
$_ %= 15;

# The older version of the calculation can be simplified further, see below.
# Also the older version did not use the bias.
#
# function E optimizes the construct "$_ == <num>" to "E <num>"
# sub E {
#     $_ == pop
# }
#
# $d = $e = 1 if E 1;       #  1 =     +2 -1
# $d++ if E 2;              #  2 =     +2
#
# $c = $f = 1 if E 3;       #  3 =  +5 -2
# $c = $e = 1 if E 4;       #  4 =  +5 -1
# $c++ if E 5;              #  5 =  +5
# $c = $d = $e = 1 if E 6;  #  6 =  +5 +2 -1
# $c = $d = 1 if E 7;       #  7 =  +5 +2
#
# $b = $f = 1 if E 8;       #  8 = +10 -2
# $b = $e = 1 if E 9;       #  9 = +10 -1
# $b++ if E 10;             # 10 = +10
# $b = $d = $e = 1 if E 11; # 11 = +10 +2 -1
# $b = $d = 1 if E 12;      # 12 = +10 +2
#
# $=++, $f++ if E 13;       # 13 = +15 -2
# $=++, $e++ if E 14;       # 14 = +15 -1

$b++, $_ -= 10 if $_ > 9;
$c++, $_ -=  5 if $_ > 4;

# Now $_ is either 0 (-2), 1 (-1), 2 (0), 3 (1), or 4 (2).
# The number in parentheses is the remaining reputation change.

# The following four lines can be further optimized. 
# $f++        if ! $_;    # "! $_" is short for "$_ == 0"
# $e++        if $_ == 1;
# $d = $e = 1 if $_ == 3;
# $d++        if $_ == 4;

# Optimized version of the previous four lines:

$f++ if ! $_;
$e++ if $_ % 2;
$d++ if $_ > 2;

# function P optimizes the printing and takes the arguments for "print";
# the first argument is the action count and the printing is suppressed,
# if this action type is not needed.
sub P {
    print @_, $/ if $_[0]
    # $/ is "\n"
}

# some abbreviations to save some bytes
$; = " answer ";
$D = "$;downvote";

# output the actions

P $=, "$;accept", ($= == 1 ? "" : "s");
P $b, "$;upvote";
P $c, " question upvote";
P $d, "$;accepted";
P $e, $D, "d";
P $f, $D

Правки

  • Справа 4 виправлена.
  • Це також спрощує розрахунок, який зараз робиться без циклу.
  • Видалено недоступну множину "s", функція Sбільше не потрібна.
  • Розрахунок оптимізований, функція Eбільше не потрібна.
  • Зміщення 2 додано для оптимізованого обчислення.
  • Більше перепишіть, щоб видалити більшість змінних, деякі інші хитрощі, щоб зберегти деякі байти.

відповідно до цього, Джон Скіт має 44084 відповіді приймає & 1 відповідь на виклик
TheDoctor

6
@TheDoctor: Відповідно до питання, це мінімальна кількість дій, щоб отримати репутацію 661266.
Heiko Oberdiek,

4

R, 454 421

r=as.integer(commandArgs(T)[1])-1;p=function(...){paste(...,sep='')};a='answer ';b='accept';e='ed';f='d';v='vote';d=p('down',v);u=p('up',v);q='question ';z=c();t=r%/%15;if(t>0){z=c(p(t,' ',a,b));r=r%%15;};if(r%in%(8:12))z=c(z,p(a,u));if(r%in%(3:7))z=c(z,p(q,u));if(r%in%c(1,2,6,7,11,12))z=c(z,p(a,b,e));if(r%in%(13:14))z=c(z,p(a,b));if(r%in%c(3,8,13))z=c(z,p(a,d));if(r%in%c(1,4,6,9,11,14))z=c(z,p(a,d,f));cat(z,sep=', ')

Дякую Деннісу за його відповідь, який мені дуже допоміг.

Безгольова версія

# read input
r = as.integer(commandArgs(T)[1]) - 1

# shortcut to join strings (... will pass the parameter to paste() *as is*)
p = function(...) {paste(..., sep = '')}

# strings
a = 'answer '; b = 'accept'; e = 'ed'; f = 'd'
v = 'vote'; d = p('down',v); u = p('up',v)
q = 'question '

z = c()

# +15
t = r %/% 15;
if (t > 0) {
    z = c(p(t,' ',a,b))
    r = r %% 15
}

if (r %in% (8:12))              z = c(z,p(a,u));    # answer upvote
if (r %in% (3:7))               z = c(z,p(q,u));    # question upvote
if (r %in% c(1,2,6,7,11,12))    z = c(z,p(a,b,e));  # answer accepted
if (r %in% (13:14))             z = c(z,p(a,b));    # answer accept
if (r %in% c(3,8,13))           z = c(z,p(a,d));    # answer downvote
if (r %in% c(1,4,6,9,11,14))    z = c(z,p(a,d,f));  # answer downvoted

# print operations
cat(z,sep = ', ')

4

JavaScript - 270 237 227 206 192 символів

p=prompt,r=p()-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;r<-1?s+=a+"-"+v:0;p(r&1?s+=a+"-voted":s)

Рівно стільки символів, як Bash (так!), І б'є Python та Perl :) Це знижує репутацію до тих пір, 14після чого вона виконує інші необхідні дії, повністю циклічного стилю.

EDIT 1: Перетворення \ns в ,s та перетворення одного ifблоку на потрійне, а також краще підлоги з короткими назвами.

EDIT 2: Велика подяка Alconja, який допоміг мені скоротити 11 символів. Після цього я вніс ще кілька виправлень, щоб скоротити ще 2 символи.


Старіша версія:

r=prompt()-1,a="1answer ",q="1question ",v="vote,";s=(c=r/15|0)+"answer accept,",r-=c*15;if(r>9)s+=a+"+"+v,r-=10;if(r>2)s+=q+"+"+v,r-=5;r>0?s+=a+"accepted,":0;if(r<-1)s+=a+"-"+v;r&1?s+=a+"-voted":0;alert(s)

Тест:

ВХОД: 42
ВИХІД:

2answer accept,1answer +vote,1answer accepted,1answer -voted

/*I sincerely hope the output is clear and easy to make out*/

ВХОД: 1337
ВИХІД:

89answer accept,1answer accepted,1answer -voted

Код без вогню:

// different version from the golfed code
rep = prompt() - 1
string = ""

function $(z, c, k){
  while(rep > 0 && rep >= z - 2) c += 1 , rep -= z;

  if(c) string += c + k + "\n"
}

a=" answer ", q=" question "

$(15, 0, a + "accept")
$(10, 0, a + "upvote")
$(5, 0, q + "upvote")
$(2, 0, a + "accepted")

function _(z, c, str){
  while(rep <= z) c += 1, rep -= z

  if(c) string += c + str + "\n";
}

_(-2, 0, a + "downvote");
_(-1, 0, a + "downvoted");

alert(string);

Чому перший перший Firefox?
TheDoctor

1
@TheDoctor Він використовує функцію JS, яка наразі доступна лише у Firefox - function name(args){}стає name=(args)=>{}і тим самим економить багато байт.
Gaurang Tandon

@TheDoctor Я оновив свою програму для перехресного перегляду, і вона тепер набагато коротша, ніж раніше!
Gaurang Tandon

Ваша поточна версія використовується лише qодин раз, тому ви можете вбудувати її. Крім того, ви можете скинути cзмінну і зробити r%=15замість цього r-=c*15. Потрібно звести до 195 символів ( 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)).
Alconja

@Alconja Wow! Дуже дякую! Нарешті я дуже близький до Баша! Ще раз дякую!
Gaurang Tandon

1

Мова виробника ігор, 276

p=real(keyboard_string())-1j="#"s=""z=" answer"w=" accept"x=" upvoted"+j;y=w+"ed"v=" question"u=" downvoted"if m=floor(p/15)s+=(m+z+y)+j;r=p-m*15if m=floor(r/10)s+=(m+z+x)r-=m*10if m=floor(r/5)s+=(m+v+x)r-=m*5n=floor(r/2)r-=n*2if m=r{n++;s+=(m+u+z)+j}s+=(n+y+z)show_message(s)

1

C # - 391

Трохи довго, і я не перевіряв цього ретельно (багато). :)

class R{void Main(string[] a){var r=int.Parse(a[0])-1;var a=new[]{15,10,5,2};var o=new List<string>();Func<int,string>y=z=>{var w="";if(z==15)w=" answer accepted";if(z==10)w=" answer upvotes";if(z==5)w=" question upvotes";if(z==2)w=" answer accepts";return w;};foreach(var x in a)if(r/x>0){o.Add(r/x+y(x));r-=(r/x)*x;}if(r==1)o.Add("1 question downvotes");Console.Write(string.Join(", ",o));

Без гольфу - НОВЕ

class R
{
    void Main(string[] a)
    {
        var r = int.Parse("122")-1; // subtracts 1 from total rep
        var a = new[] {15,10,5,2};
        var o = new List<string>();

        Func<int,string> y = 
            z => 
                {
                    var w="";
                    if(z==15) w=" answer accepted";
                    if(z==10) w=" answer upvotes";
                    if(z==5) w=" question upvotes";
                    if(z==2) w=" answer accepts";
                    return w;
                };

        foreach(var x in a) {
            if (r/x>0) {
                o.Add(r/x+y(x));
                r-=(r/x)*x;
            }
        }

        if(r==1)
            o.Add("1 question downvotes");

        Console.Write(string.Join(", ",o));
    }
}

Без гольфу - СТАРИЙ (409)

class R
{
    void Main(string[] a)
    {
        var r = int.Parse(a[0])-1; // subtracts 1 from total rep
        var v = new[] {" question"," answer"," downvotes"," upvotes"," accepts"," accepted"};
        var o = new List<string>();

        // Starts from 15, then checks all the lower values.
        if (r/15>0) {
            o.Add(r/15+v[1]+v[5]);
            r-=(r/15)*15; // automatic rounding down due to int
        }
        if(r/10>0) {
            o.Add(r/10+v[1]+v[3]);
            r-=(r/10)*10;
        }
        if(r/5>0) {
            o.Add(r/5+v[0]+v[3]);
            r-=(r/5)*5;
        }
        if(r/2>0) {
            o.Add(r/2+v[1]+v[4]);
            r-=(r/2)*2;
        }
        if(r==1) {
            o.Add("1"+v[0]+v[2]);
        }
        Console.Write(string.Join(", ",o));
    }
}

Тест:

> prog.exe 120

7 answer accepted, 1 answer upvotes, 2 answer accepts 

1

Пітон - 213 207

p,k=__import__('itertools').combinations_with_replacement,int(input())
t,m,u=[5,10,-2,-1,15,2],[],iter(range(0,k))
while not m:m=list(filter(lambda v:k-1==sum(v),p(t,next(u))))
print(''.join(map(chr,m[0])))

Проклинайте довгі назви функцій!

Приклад: (ігноруйте останній новий рядок)

$ echo "93" | python per.py | hexdump -C
00000000  0f 0f 0f 0f 0f 0f 02 0a                           |........|

$ echo "11" | python per.py | hexdump -C
00000000  0a 0a                                             |..|

Як ви відображаєте кількість голосів на запитання та відповіді тощо? Ваш код не містить цих рядків (див. Інші відповіді), тому я боюся, що результат не відповідає правилам.
AL

Вихід також гольф, тому що до цього не було потреби. Він не розглядає окреслені питання / відповіді окремо, оскільки обидва дають -2 бали, отриманий список, який друкується, є найкоротшою послідовністю для досягнення балу.
LemonBoy

Так, правила не вникають у деталі щодо цього питання. Але ви можете помітити, що в інших відповідях вихідний сигнал є стандартним, а відображення X відповідь приймає , Y відповідає відповіді тощо. Але це не проблема, оскільки у вас немає найкоротшого коду.
AL

@LemonBoy Я спробував це на трьох перекладачах, і це не працює. Всі кажуть EOF. Чи можете ви, будь ласка, вказати мені на компілятор, який працює (і який я повинен зберігати для подальшого використання)?
Гауранг Тандон

1
@GaurangTandon зітхаючи, ви намагаєтеся запустити код Python за допомогою інтерпретатора coffeescript
LemonBoy

1

C ++, 276 (316 Вт / включно)

#include <stdio.h>
#include <stdlib.h>
p(int&q,int*d){int r;char*s[]={"downvoted","accepted","question","answer","upvoted"};
if(r=(q&&q>=*d)){q-=(*d?*d:2);printf("%s %s\n",s[*(++d)],s[*(++d)]);}return r;}main(
int n,char**v){int q=atoi(v[1]);int d[]={-1,3,0,0,3,1,5,4,2,10,4,3,15,1,3};n=15;while
(p(q,d+n-3)||(n-=3));}

Компілюється з GCC, з попередженнями. Приклад:

$ ./a.out 0
$ ./a.out 1
accepted answer
downvoted answer
$ ./a.out 2
accepted answer
$ ./a.out 5
question upvoted
$ ./a.out 10
answer upvoted
$ ./a.out 15
answer accepted
$ ./a.out 16
answer accepted
accepted answer
downvoted answer
$ ./a.out 17
answer accepted
accepted answer

Сміливо переносьте це на мову, яка не потребує декларацій типу та розміщуйте її як свою.


1

JavaScript - 273 256 235

p=prompt(s=j="\n")-1;z=" answer",w=" accept",x=" upvoted"+j,y=w+"ed",v=" question",u=" downvoted";if(m=p/15|0)s+=m+z+y+j;r=p-m*15;if(m=r/10|0)s+=m+z+x;r-=m*10;if(m=r/5|0)s+=m+v+x;r-=m*5;n=r/2|0;if(m=r-=n*2)n++,s+=m+u+z+j;alert(s+n+y+z)

Комбінований розрахунок і вихід, а також гольф далі до загальної кількості 287.

Редагувати: виймав деякі змінні на кілька коротших.

Видалено Math.Floor для | 0 підходу.

Перемістив деяку ініціалізацію в параметр prompt (), видалив кілька дужок, попередив додавання остаточного рядка.


Ласкаво просимо на codegolf.SE! Інструкція говорить: "Створіть програму, яка прийме додатне ціле число" ->, тому вам потрібно буде використовувати prompt, і не можете жорстко кодувати значення.
Гауранг Тадон

Не хвилюйтесь, додав підказку (), яка стикає його до 161.
Метт

Слідом за розумнішим підказкою @) GaurangTandon () - 1 та попередженням підходу, щоб знизити це далі. Зменшилося і деяке збереження жорсткого коду.
Метт

1

Python3, 188B

n=input()+1
a=n//15
n%=15
A='answer '
print("%d %saccepted\n%d %supvoted\n%d question upvoted\n%d accept %s\n%d downvote %s\n%d %sdownvoted"%(a,A,n//10,A,n%10//5,n%5>2,A,n%5%2,A,n%5==0,A))

Використання: python3 score.py <ret> 11 <ret>де цей сценарій зберігається як score.py.

Вибірка зразка:

$ python score.py
5543
369 answer accepted
0 answer upvoted
1 question upvoted
1 accept answer 
0 downvote answer 
0 answer downvoted

прийнято = прийняти + d, downvoted = downvote + d, оновлене повторюється.
Білл Вудгер

Так, але ці заміни загалом не рятують жодних символів - спробуйте і подивіться
alexander-brett
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.