Pokemon GO Evolution Calculadora de costos


11

¿Cansado de preguntarte siempre cuántos Pokémon más necesitas atrapar para obtener esas evoluciones de alto nivel? ¡Extrañar más! ¡Ahora escribirá un programa o función completa para calcularlo por usted!

El reto:

Como entrada, su programa recibirá una lista de los costos en dulces para evolucionar a un Pokémon al siguiente nivel. (Esta lista puede estar separada por cualquier delimitador de su elección, o como argumentos de función). Luego, tu programa devolverá o imprimirá la cantidad de Pokémon que debes atrapar, incluido el que se desarrollará, para evolucionar a través de todos los niveles dados.

¿Cómo se calcula esto? Así:
1. Suma todos los costos de dulces: 12 + 50 = 62
2. Resta 3 dulces del total, esto es del único Pokémon que conservas para evolucionar: 62 - 3 = 59
3. Divide este número entre 4 (3 para atrapar, 1 para dárselo al Profesor), siempre tomando el ceil()resultado: ceil(59/4) = 15
4. Finalmente, suma 1 a este total para obtener el número total de Pokémon que debes atrapar, ¡16!

Ejemplo Input -> Output:

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

Victorioso:

La aplicación ya ha ocupado la mayor parte del espacio en su teléfono, por lo que su programa debe ser lo más breve posible. ¡Se aceptará el programa completo o la función con el recuento de bytes más pequeño en dos semanas! (¡con cualquier vínculo resuelto por la entrada presentada más temprano!)


3
¿Cómo se calcula la salida?
Leaky Nun

8
En el futuro, utilice el Sandbox para resolver problemas en sus desafíos y obtener comentarios sobre ellos antes de publicar.
El'endia Starman el

77
Si desea una razón un poco menos absurda para la longitud del código corto, podría optar por "porque la aplicación casi ha agotado la batería, desea que el código sea lo más corto posible, para que pueda escribirlo antes de que se agote la batería".
Mego

2
¿No debería ser la fórmula floor(Sum(L)/4)+1? La fórmula actual no funciona para sumas divisibles por 4. Por ejemplo [400], devolvería 100, cuando en realidad debe ser 101 para que evolucione el extra.
Emigna

66
Espero que alguien publique una respuesta en Go
Kodos Johnson

Respuestas:




5

Brain-Flak 112 bytes

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

¡Pruébelo en línea!

Explicación

Suma la pila, resta uno, divide entre cuatro y agrega uno.


¿Cómo ejecuto esto en probarlo en línea? Solo genera 1 para mí para cualquier esquema de entrada que haya probado.
orlp

1
Da una respuesta incorrecta para [4].
orlp

@orlp fijo. Puse el código incorrecto en probarlo en línea.
Ad Hoc Garf Hunter

3

C # REPL, 15 bytes

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

Lanza a Func<IEnumerable<int>, int>.


3

En realidad, 4 bytes

Σ¼≈u

Pruébalo en línea!

Explicación:

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

1
¿No son estos caracteres unicode de 2 bytes cada uno?
usuario23127

1
@ user23127 Si esto se codificó en UTF-8, sí. En realidad (y su predecesor en serio) usa CP437.
Mego



2

BASH (sed + bc) 19

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

La entrada es una +lista separada en stdin
Eg:
echo '(19+35+5+200)'| sed 's~)~+4)/4~'|bc





1

CJam, 7 bytes

{:+4/)}

Pruébalo aquí!

Define un bloque sin nombre que espera la entrada en la pila y deja el resultado allí.
:+suma la lista, 4/divide el resultado entre 4 e )incrementa eso.




1

JavaScript, 29 bytes

x=>x.reduce((a,b)=>a+b)/4+1|0

1

SILOS 100 99 103 caracteres + 22 para entrada de muestra

Código con arnés de prueba.

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

ingrese como una serie de comandos establecidos para modificar los puntos del montón comenzando en el punto 512. ¡
Pruébelo en línea!


El hecho de que Pokemon Go no tenga más de 8 niveles de evolución (en realidad tiene un máximo de 3), no significa que no se requiera que manejes casos de prueba más grandes.
Mego

@Mego la especificación claramente hace referencia a pokemon go, y por lo tanto podemos suponer que todas las entradas serán entradas válidas. Hubiera publicado una versión mucho mejor que de hecho maneja la entrada separada de nueva línea terminada con un centinela cero, pero el TIO actualmente está bloqueado
Rohan Jhunjhunwala

@Mego déjame aclarar con el OP. Si esto no es válido, puedo modificarlo para que funcione para casos de prueba aún más grandes
Rohan Jhunjhunwala

Esto es en realidad una escapatoria estándar : está asumiendo que las reglas no están presentes en el desafío.
Mego

@Mego modificado por un costo de tres bytes, ahora debería funcionar hasta miles de evoluciones.
Rohan Jhunjhunwala

0

Python 2, 40 bytes

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

Esto no funciona porque sum(s)es un número entero y /en Python 2 sería una división entera cuando ambos argumentos son enteros.
Leaky Nun

@LeakyNun, ¿qué quieres decir? funciona para mí
acrolith

Da una respuesta incorrecta para [4].
orlp
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.