---
title: Hechizo
description: Mejora tus coding skills y tu capacidad para resolver problemas de codificación con las soluciones de katas compartidas por los craftspeople de Codurance.
---

[Katas ](https://www.codurance.com/es/katas)

# [Hechizo](https://www.codurance.com/es/katas/hechizo)

 Escrito por [Giulio Perrone](https://www.codurance.com/es/katas/author/giulio-perrone) | 17-abr-2023 9:18:38

## Historia:

Durance ha encontrado un libro de magia en una de sus aventuras y ha decidido aprender a encantar sus armas. Debido a la naturaleza inestable de la magia, no está seguro de qué tipo de cosas mágicas sucederán, ¡incluso podría deshacer hechizos anteriores! (Esto ocurre cada 1/10 veces). Intentemos ayudarle.

## Descripción

Crea una aplicación que le permita a Durance encantar su arma.

Para esta versión de la kata, sólo se permite un encanto a la vez. Podemos volver a lanzar un hechizo existente, pero hay una probabilidad de 1/10 de que perdamos todos los hechizos actuales del arma.

Ejemplo:

Daga del Nooblet  
5 - 10 daño de ataque  
1.2 velocidad de ataque

Después de hechizarlo, Durance lanzó el encantamiento 'Fuego'.

Daga Infernal del Nooblet  
5 - 10 daño de ataque  
1.2 velocidad de ataque  
+5 daño del fuego

Al no estar satisfecho, la hechizo de nuevo y esta vez consiguió el encantamiento 'Agilidad'.

Daga Rápida del Nooblet  
5 - 10 daño de ataque  
1.2 velocidad de ataque  
+5 agilidad

Durance se empezó a sentir muy seguro de sí mismo, pensando que podría conseguir algo mejor, y lo intentó de nuevo. Lamentablemente, ¡deshizo sus hechizos!

Daga del Nooblet  
5 - 10 daño de ataque  
1.2 velocidad de ataque

## Reglas

- Sólo un hechizo debe estar "activo" a la vez.
- Para la versión simple, los atributos del hechizo no deben afectar las estadísticas base del arma. Estas se consideran como estadísticas adicionales.
- Las armas hechizadas llevan el prefijo del encantamiento.
- La selección de hechizos debe ser aleatoria.
- No podemos lanzar un hechizo que ya tenemos. Los hechizos siempre deben ser diferentes.
- 1/10 probabilidad de perder el hechizo.

## Ejemplos

Un hechizo le confiere diferentes atributos a un arma. Para esta kata, podemos elegir entre los siguientes:

`{`  
`  "ice": {`  
`    "prefix": "Icy",`  
`    "attribute": "+5 ice damage"`  
`  },`  
`  "fire": {`  
`    "prefix": "Inferno",`  
`    "attribute": "+5 fire damage"`  
`  },`  
`  "lifesteal": {`  
`    "prefix": "Vampire",`  
`    "attribute": "+5 lifesteal"`  
`  },`  
`  "agility": {`  
`    "prefix": "Quick",`  
`    "attribute": "+5 agility"`  
`  },`  
`  "strength": {`  
`    "prefix": "Angry",`  
`    "attribute": "+5 strength"`  
`  }`  
`}`

## Punto de partida (opcional)

## `HDurance{` `    Weapon weapon;` `    MagicBook magicBook;` `    public void enchant(){` `      // Implement here...` `    }` `    public String describeWeapon(){` `      // Implement here...`        `}` `  }` `  public interface Weapon{` `    String stats();` `  }`

## Versión difícil

Ahora Durance puede llevar consigo más armas y cada una de ellas puede tener hasta 3 hechizos únicos. En esta versión, Durance también se preocupa por infligir el mayor daño posible, por lo que el DPS (daño por segundo) también deberá mostrarse.

### DPS

Teniendo en cuenta el atributo de agilidad, lo convertimos en un aumento de la velocidad de ataque igual a: `attack speed + agility points / 10`

El DPS se calcula así: `((Min Weapon Damage + Max Weapon Damage) / 2) / Weapon Speed`

### Reglas

- Se aplicarán las normas anteriores
- En caso de perder una secuencia de hechizos, sólo se eliminará el último encantamiento.

[Ver post completo](https://www.codurance.com/es/katas/hechizo)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Giulio Perrone"
  },
  "dateModified" : "2023-04-17T09:22:27.778Z",
  "datePublished" : "2023-04-17T09:18:38Z",
  "headline" : "Hechizo",
  "image" : {
    "@type" : "ImageObject",
    "height" : 630,
    "url" : "https://3042464.fs1.hubspotusercontent-na1.net/hubfs/3042464/Katalyst/Thumbnails/Katalyst_Thumbnail_Enchanting.jpg",
    "width" : 1200
  },
  "mainEntityOfPage" : "https://www.codurance.com/es/katas/hechizo",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Katas"
  }
}
```