Фон:
Я часто нахожу, что, просматривая сайт Stackexchange, я начинаю удивляться, как люди получают столько репутации, сколько они имеют. Я знаю, что всегда могу рассчитывать на Codegolf SE для решения своих проблем, поэтому вот оно:
Создайте программу, которая будет принимать положительное целое число, которое представляет репутацию человека. Мы проигнорируем награды и скажем, что это единственный способ получить / потерять представителя на SE (полная таблица здесь ):
- Каждая учетная запись начинается с 1 повторения и не может быть ниже
- Ваш вопрос проголосовал = +5
- Ваш ответ проголосовал = +10
- Ваш вопрос отклонен = -2
- Ваш ответ не оценен = -2
- Вы отрицаете ответ = -1
- Ваш ответ принят = +15
- Вы принимаете ответ = +2
Ваша программа должна выяснить, сколько из этих действий произошло с учетной записью этого пользователя, чтобы получить репутацию, которую они имеют. Он должен выяснить самое короткое количество действий, чтобы добраться до этого уровня повторений. Примеры:
Вход: 11 Результат: 1 ответ upvote
Входные данные: 93 Выходные данные: 6 ответов приняты, 1 ответ принят
В этих примерах, когда я говорю «вопрос с ответом», это означает, что за вопрос этого человека проголосовали. Когда я говорю «ответить отрицательно», это означает, что они отвергли чужой ответ.
Правила:
Code-Golf , поэтому самый короткий код, который может сделать это, выигрывает.
Ответы:
Golfscript,
162144 байтаКак это устроено
Общая идея точно такая же, как в моем ответе Bash .
источник
Баш,
247202192 байтаКак это устроено
После того, как команда sed выполнит свою работу, выполняется следующий скрипт bash:
Чтобы получить оптимальное решение (минимальное количество событий для получения
n
репутации), достаточно рассчитать количество принятых ответов (a
), необходимое для достижения репутации ниже 16 (1 ответ принят ), и обработать остаток следующим образом:источник
-2
и-1
downvotes.Perl
500263256208 байтСценарий
rep.pl
:использование
Входные данные ожидаются как положительное целое число, заданное в качестве аргумента сценария. Различные действия выводятся в виде строк.
тесты
Ungolfed
Старая версия
Правки
S
больше не нужна.E
больше не нужна.источник
R
454421Спасибо Деннису за ответ, который мне очень помог.
Неуправляемая версия
источник
JavaScript -
270237227206192 символовРовно столько же символов, сколько Bash (да!), И бьет Python и Perl :) Это снижает репутацию до
14
не произойдет, после чего потребуются другие необходимые действия, полностью в стиле loop.РЕДАКТИРОВАТЬ 1: Преобразовано
\n
с в,
s и преобразовать одинif
блок в троичный, и лучше пол с короткими именами.РЕДАКТИРОВАТЬ 2: Большое спасибо Alconja, который помог мне сократить 11 символов. После чего я сделал еще несколько исправлений, чтобы сократить еще 2 символа.
Старая версия:
Тестовое задание:
ВХОД:
42
ВЫХОД:
ВХОД:
1337
ВЫХОД:
Код Ungolfed:
источник
function name(args){}
становитсяname=(args)=>{}
и, таким образом, сохраняет много байтов.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)
).Game Maker Language, 276
источник
C # - 391
Немного долго, и я не проверял это полностью (много). :)
Без гольфа - NEW
Без гольфа - СТАРЫЙ (409)
Тестовое задание:
источник
Питон -
213207Проклинаю вас длинными именами функций!
Пример: (игнорировать завершающий перевод строки)
источник
EOF
. Можете ли вы указать мне на компилятор, который работает (и который я должен сохранить для дальнейшего использования)?С ++, 276 (316 Вт / включает)
Компилируется с GCC, с предупреждениями. Пример:
Не стесняйтесь перенести это на язык, который не требует объявлений типов, и опубликовать его как свой собственный.
источник
JavaScript -
273256235Совокупный расчет и выход, и гольф дальше в общей сложности 287.
Редактировать: вынул некоторые переменные на несколько короче.
Удален Math.Floor для | 0 подхода.
Перенес некоторую инициализацию в параметр prompt (), убрал несколько скобок, предупреждение с добавлением последней строки.
источник
prompt
, и не сможете жестко закодировать значение.Python3, 188B
Использование:
python3 score.py <ret> 11 <ret>
где этот скрипт сохраняется как Score.py.Пример вывода:
источник