Калькулятор витрат на еволюцію Pokemon GO


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
Kodos Johnson

Відповіді:



9

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

S:4‘

Спробуйте в Інтернеті!

Sгм, ціле ділення :на 4і збільшення .


8
; -; Мені запізнюється на 4 секунди
акроліт

Це не працює, коли сума ділиться на 4.
молоко

Дає неправильну відповідь за [4].
orlp

Виправлення. Мабуть, специфіка змінилася, коли я спав.
PurkkaKoodari

5

Мозок-Flak 112 байт

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

Спробуйте в Інтернеті!

Пояснення

Він підсумовує стек, віднімає один, ділиться на чотири і додає один.


Як запустити це, спробувати його в Інтернеті? Він видає мені лише 1 для будь-якої схеми введення, яку я пробував.
orlp

1
Дає неправильну відповідь за [4].
orlp

@orlp Виправлено. Я поставив неправильний код, спробуйте його в Інтернеті
Ad Hoc Hunter Hunter


3

Власне, 4 байти

Σ¼≈u

Спробуйте в Інтернеті!

Пояснення:

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

1
Хіба ці символи unicode не мають 2 байти?
user23127

1
@ user23127 Якщо це було закодовано в UTF-8, так. Власне (і його попередник серйозно) використовують CP437.
Мего



2

БАШ (sed + bc) 19

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

Введення - це +окремий список на stdin
Напр .:
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 специфікація чітко посилається на покемон, і, таким чином, ми можемо припустити, що всі дані будуть введеними. Я б опублікував набагато кращу версію, яка дійсно обробляє відокремлений вхідний рядок, що закінчується нульовою дозорною, але TIO наразі обмежений
Rohan Jhunjhunwala

@Mego дозвольте мені уточнити з ОП. Якщо це невірно, я можу змінити його, щоб він працював для ще більших тестів
Rohan Jhunjhunwala

Це насправді стандартна лазівка - ви припускаєте, що правила, які відсутні в виклику.
Мего

@Mego модифіковано за три байти, тепер воно повинно працювати до 1000 еволюцій.
Rohan Jhunjhunwala

0

Python 2, 40 байт

import math
lambda s:math.ceil(sum(s)/4)

Це не працює, оскільки sum(s)це ціле число, і /в Python 2 було б ціле ділення, коли обидва аргументи є цілими числами.
Leaky Nun

@LeakyNun, що ти маєш на увазі? це працює для мене
acrolith

Дає неправильну відповідь за [4].
orlp
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.