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

Выигрыш:

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


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и приращение .


8
; -; Я опаздываю на 4 секунды
акролит

Это не работает, когда сумма делится на 4.
молоко

Дает неправильный ответ за [4].
orlp

Исправления. Видимо, спецификация изменилась, когда я спал.
PurkkaKoodari

5

Мозг-Flak 112 байт

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

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

объяснение

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


Как мне запустить это попробовать онлайн? Он выводит мне только 1 для любой схемы ввода, которую я пробовал.
orlp

1
Дает неправильный ответ за [4].
orlp

@orlp Исправлено. Я ввел неправильный код, попробуйте онлайн.
Специальный охотник за


3

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

Σ¼≈u

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

Объяснение:

Σ¼≈u
Σ     sum
 ¼    divide by 4
  ≈   floor
   u  add 1

1
Разве эти символы Юникода не имеют 2 байта каждый?
user23127

1
@ user23127 Если это было закодировано в UTF-8, да. На самом деле (и его предшественник серьезно) использовать CP437.
Мего



2

BASH (sed + bc) 19

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

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





1

CJam, 7 байтов

{:+4/)}

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

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





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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.