Loading...
murkata86 avatar murkata86 10 Точки

[C#] Inferno Infinity

Здравейте,

Имам известни проблеми с тази задача и по - точно с тестовере в Judge. От всичките ми минава само първия и не разбирам защо не минават и останалите. И един въпрос относно END. В условието пише "Upon receiving the END command print the weapons in order of their appearance in the format provided below."

Ако няма Print на всеки Weapon, трябва ли да ги принтя, понеже, ако ги изпринтя нищо не минава в Judge. Има го и момента, че изчислявам stats за всеки Weapon, докато го създавам - имам клас за всяко оръжие - Common Axe, Rare Axe, Common Knife, Epic Knife, etc

 

.https://onedrive.live.com/embed?cid=0215B22FCDC531A6&resid=215B22FCDC531A6%21493&authkey=AIdlyxRdKy1NGNI

 

Поздрави,

Иван

Тагове:
0
C# OOP Basics
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Измислих един тест и ето резултата като го пуснах по твоето и моето решение. Надявам се, че ще ти помогне да си намериш грешката като го дебъгнеш :)))

IN:

Create;Rare Sword;Harmony
Add;Harmony;0;Chipped Emerald
Add;Harmony;2;Flawless Ruby
Print;Harmony
END

OUT: (твоето решение)

Harmony: 1773-3087 Damage, +19 Strength, +17 Agility, +25 Vitality
Harmony: 1773-3087 Damage, +19 Strength, +17 Agility, +25 Vitality

OUT: (моето решение)

Harmony: 67-143 Damage, +19 Strength, +17 Agility, +25 Vitality


MIN DAMAGE:
4(DefaultMinDamage) * 3(Rarity) + 19(Strength) x 2 (StreghtToMinDamageConst) + 17(Agility) x 1 (AgilityToMinDamage)

MAX DAMAGE:
6(DefaultMaxDamage) * 3(Rarity) + 19(Strength) x 3 (StreghtToMaxDamageConst) + 17(Agility) x 4 (AgilityToMaxDamage)

4
murkata86 avatar murkata86 10 Точки

След като получа новия MinDamage от Strength-а, го умножавам по Rarity (12 (minDamage) + (2 strength * 2) = 16 * Rare = 48 :)

 

Разбрах от къде ми идва грешката :)

Мерси за помощта!

Поздрави,

Иван

1
stefankos avatar stefankos 1 Точки

Здрасти Мурка.

Видях една хурка и искам да  я споделя с теб :)

(това в кръга на шегата не се обиждай :) )

В Main ти инциализираш инвенторито си но си го експознал на всички.

Този код е напълно валиден!

 IInventory inventory = new Inventory();
 inventory.Weapons.Clear();

 

Видях че в интерфейса  си оставил само get; , но това продължава да ти дава пълен достъп до списъка ти.

 

Поздрави

Стефан

0
01/08/2016 13:47:18
murkata86 avatar murkata86 10 Точки

Между другото имах и такъв коментар на изпита, че листа ми остава експоузнат и все се каня да питам за това и все забравям...

Как всъщност се прави това?

0
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Един вариант е да го направиш IReadOnlyList<T>:

​public IReadOnlyList<IWeapon> Weapons => this.weapons;

Друг вариант е да копираш листа в нов такъв:

public IList<IWeapon> Weapons => new List<IWeapon>(this.weapons);

0
stefankos avatar stefankos 1 Точки

Това първото е много яко но ми казаха че може да се кастне и полсе стигаш до същата ситуация:

public IReadOnlyList<IWeapon> Weapons => this.weapons;

  var test = (List<Weapon>)weapons.Weapons;
            test.Clear();

Второто с копирането би работило , но в ситуация с огромна база данни копирането би заело много памет и performance.

В тази конкретна задача аз съм си направил списъка private и съм експознал само методите/командите , които са ми дали в условието .

Честно казано и аз се чудя за по добър метод да се скрие базата данни.

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.