Pokemon GO Evolution Калькулятор стоимости

11

Надоело постоянно интересоваться, сколько еще покемонов нужно поймать, чтобы получить эти высокоуровневые эволюции? Чудо больше нет! Теперь вы напишите полную программу или функцию, чтобы рассчитать ее для вас!

Соревнование:

В качестве входных данных ваша программа получит список затрат в конфетах, чтобы развить Покемона до следующего уровня. (Этот список может быть разделен любым разделителем по вашему выбору или в качестве аргументов функции). Ваша программа затем вернет или напечатает количество покемонов, которое должно быть поймано, включая того, который будет эволюционирован, чтобы пройти через все указанные уровни.

Как вы рассчитываете это? Вот так:
1. Сложите все расходы на конфеты: 12 + 50 = 62
2. Вычтите 3 конфеты из общего количества, это от одного покемона, которого вы сохраняете для развития: 62 - 3 = 59
3. Разделите это число на 4 (3 для ловли, 1 для передачи Профессор), всегда принимая ceil()за результат:ceil(59/4) = 15
4. Наконец, добавьте 1 к этому итогу, чтобы получить общее количество покемонов, которых вы должны поймать, 16!

Пример Input -> Output:

[4] -> 2
[50] -> 13
[12, 50] -> 16
[25, 100] -> 32
[19, 35, 5, 200] -> 65

Выигрыш:

Приложение уже заняло большую часть места на вашем телефоне, поэтому ваша программа должна быть максимально короткой. Полная программа или функция с наименьшим количеством байтов будет принята через две недели! (с любыми связями, улаженными самой ранней представленной записью!)

Nikolai97
источник
3
Как рассчитывается выход?
Утренняя монахиня
8
В будущем, пожалуйста, используйте Песочницу, чтобы решить проблемы в ваших задачах и получить отзывы о них перед публикацией.
El'endia Starman
7
Если вы хотите получить чуть менее бессмысленное обоснование для короткой длины кода, вы можете пойти так: «поскольку приложение почти полностью разрядило вашу батарею, вы хотите, чтобы ваш код был настолько коротким, насколько это возможно, чтобы вы могли напечатать его до того, как батарея разрядится».
Мего
2
Не должно ли быть формула floor(Sum(L)/4)+1? Нынешняя формула не работает для сумм, кратных 4. Например [400], вернуло бы 100, тогда как в действительности это должно быть 101, чтобы дополнительный развивался.
Эминья
6
Я надеюсь, что кто-то отправит ответ в Go
Кодос Джонсон

Ответы:

9

Желе, 5 4 байта

S:4‘

Попробуйте онлайн!

Sгм, целочисленное деление :на 4и приращение .

PurkkaKoodari
источник
8
; -; Я опаздываю на 4 секунды
акролит
Это не работает, когда сумма делится на 4.
молоко
Дает неправильный ответ за [4].
orlp
Исправления. Видимо, спецификация изменилась, когда я спал.
PurkkaKoodari
5

Мозг-Flak 112 байт

([]<([()])>){{}({}{})([][()])}{}{({}[()])<>(({}[()()()]<({}())>)){{}(<({}()()()()<({}[()])>)>)}{}<>}{}<>{}({}())

Попробуйте онлайн!

объяснение

Он суммирует стек, вычитает один, делит на четыре и добавляет один.

Специальный охотник за гарфами
источник
Как мне запустить это попробовать онлайн? Он выводит мне только 1 для любой схемы ввода, которую я пробовал.
orlp
1
Дает неправильный ответ за [4].
orlp
@orlp Исправлено. Я ввел неправильный код, попробуйте онлайн.
Специальный охотник за
3

C # REPL, 15 байтов

n=>n.Sum()/4+1;

Приводит к Func<IEnumerable<int>, int>.

молоко
источник
3

На самом деле, 4 байта

Σ¼≈u

Попробуйте онлайн!

Объяснение:

Σ¼≈u
Σ     sum
 ¼    divide by 4
  ≈   floor
   u  add 1
Mego
источник
1
Разве эти символы Юникода не имеют 2 байта каждый?
user23127
1
@ user23127 Если это было закодировано в UTF-8, да. На самом деле (и его предшественник серьезно) использовать CP437.
Мего
2

Python 2, 21 байт

lambda a:~-sum(a)/4+1

Идео это!

Формула: ((sum(a)-1)//4)+1где //есть floor-div.

Дрянная Монахиня
источник
Дает неправильный ответ за [4].
orlp
2

BASH (sed + bc) 19

sed 's~)~+4)/4~'|bc

Ввод представляет собой +отдельный список на стандартный ввод,
например:
echo '(19+35+5+200)'| sed 's~)~+4)/4~'|bc

Райли
источник
1

Haskell, 17 байт

(+1).(`div`4).sum
Диоген Мота
источник
1

CJam, 7 байтов

{:+4/)}

Попробуй это здесь!

Определяет безымянный блок, который ожидает ввод в стек и оставляет результат там.
:+суммирует список, 4/делит результат на 4 и )увеличивает его.

Denker
источник
1

Сетчатка , 18 17 байт

Количество байтов предполагает кодировку ISO 8859-1.

$
¶4
.+|¶
$*
1111

Ввод разделен переводом строки.

Попробуйте онлайн!

Мартин Эндер
источник
@ orlp yay для изменения правил. исправлено.
Мартин Эндер
1

JavaScript, 29 байт

x=>x.reduce((a,b)=>a+b)/4+1|0
Huntro
источник
1

SILOS 100 99 103 символов + 22 для ввода образца

Код с проводкой тестирования.

set 512 52
set 513 10
GOSUB e
GOTO f
funce
a = 0
i = 511
lblE
i + 1
b = get i
a + b
if b E
a / 4
a + 1
return
lblf
printInt a

введите в виде набора команд набора для изменения точек кучи, начиная с точки 512.
Попробуйте онлайн!

Рохан Джунджхунвала
источник
Тот факт, что Pokemon Go не имеет более 8 уровней эволюции (на самом деле он равен 3), не означает, что вам не нужно обрабатывать большие тестовые примеры.
Мего
@Mego спецификация явно ссылается на pokemon go, и поэтому мы можем предположить, что все входные данные будут корректными. Я бы опубликовал намного лучшую версию, которая действительно обрабатывает разделенный вводом строки, завершенным нулевым стражем, но TIO в настоящее время не работает
Rohan Jhunjhunwala
@ Позвольте мне уточнить с ОП. Если это неверно, я могу изменить его, чтобы он работал для еще больших тестов
Rohan Jhunjhunwala
Это на самом деле стандартная лазейка - вы принимаете правила, которых нет в конкурсе.
Мего
Модификация @Mego стоит три байта, теперь она должна работать до 1000 эволюций.
Рохан Джунджхунвала
0

Python 2, 40 байт

import math
lambda s:math.ceil(sum(s)/4)
акролит
источник
Это не работает, потому что sum(s)является целым числом и /в Python 2 будет целочисленным делением, когда оба аргумента являются целыми числами.
Дрянная Монахиня
@ LeakyNun что ты имеешь в виду? у меня это работает
акролит
Дает неправильный ответ для [4] .
orlp