Loading...
t.316 avatar t.316 137 Точки

[Exam Problems] C# Basics - Problem{5} - Game of Bits

Здравейте, колеги!

Не мога да разбера какъв е проблема с решението ми на задача Game of Bits. Дава ми 25 точки. Ще съм много благодарен, ако някой може да ми каже какво точно не е наред.

Ето го и кода: http://pastebin.com/pXpzfcVW

Условието може да намерите тук: https://judge.softuni.bg/Contests/Practice/Index/78#4

 

Тагове:
1
Programming Basics 05/07/2015 14:10:19
KatyaMarincheva avatar KatyaMarincheva 572 Точки
Best Answer

Здравей Тодоре,

решението ти има успешна начална посока, има само още няколко подробности, които можеш да вземеш предвид за да получиш пълните 100 точки от judge:

  • The minimum number of commands is 1.

И тъй като последната команда винаги е Game Over!, значи ако получиш само една команда - тя ще бъде точно Game Over!, т.е. проверката за Game Over! трябва да стoй най-отгоре в while loop-a, преди всичко друго.

number = ReverseString(number); е добре да го приложиш само два пъти: преди и след while loop-a, защото

  • The maximum number of commands will be 30., т.е. за всичките евентуално 30 конади ни трябва стринга да стои все reversed, и само след като приключим с командите можеш да го обърнеш за да го превърнеш в число.

Последният детайл е, че Convert.ToUInt64(number, 2); не работи с празен стринг, ако входа е едноцифрено число или на определен етап е сведен до едноцифрено число, и последната команда е Even - финалният стринг остава празен, защото едноцифрените числа нямат четни позиции. Затова можеш да предвидиш една проверка:

uint print = number.Length == 0 ? 0 : Convert.ToUInt32(number, 2);

С тези допълнения решението ти дава 100 точки в judge.

1
t.316 avatar t.316 137 Точки

Здравей, Катя!

Направих промените, които ми каза. Ето го код: http://pastebin.com/cTJPpFrY

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

1
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Тодоре,

В решението ти вече всичко си е точно и си дава 100 точки - имаше малък проблем само който идваше от разместването, след което не са променени имената на променливите:

на 29-ти ред казваш: newNumber = string.Empty;

а на 33-ти и 35-ти ред търсиш индекси из празния стринг: for (int i = 0; i < newNumber.Length; i++), if (newNumber[i] == '1')

просто на 33-ти и 35-ти ред трябва вече да работиш с number, а не с newNumber, защото number ти е крайното число - но това не е логическа грешка а само разсеяност, която била признак на гениалност :) Означава че си програмист :)

 

0
t.316 avatar t.316 137 Точки

Здравей, Катя!

Така вече работи идеално.

Много ти благодаря за помоща и за милите думи!

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