Loading...
GoShow avatar GoShow 595 Точки

Интересна и не много лесна задача Warhead

Задачата в интерес на истината днес ме заби. За хората, които започват от 0 ще е доста сложна предполагам, както се оказа и за мен, въпреки,че съм малко по- напред.Тя е от изпит по C#1 миналата година в Телерик.

http://bgcoder.com/Contests/Practice/Index/106#4 - това е линка към нея, мисля че трябва да имате регистрация в bgcoder, за да я отворите. И така аз забих с моето решение на 43 / 100 и безброй изгърмявания откъм време (time limit).

http://dotnetfiddle.net/X3atis - ето и решението ми(на този етап). Ще съм безкрайно благодарен на предложения за оптимизация и всякакви други.

p.s. не исках да отварям авторското решение и тестовете.

 

Тагове:
1
Programming Basics
ZloboMiR avatar ZloboMiR 50 Точки

Сигурно няма да е много адекватен въпрос, но как да си отчитаме времето във Студиото? Само с две DateTime.Now в началото и края на кода? Дали за времето не те бави това, че не ползваш изучавания от нас Parse метод при четене / писане? Може би е по-бърз при работа с конзолата. По идея задачата много прилича на миночистача.
П. С. За линка в БГ кодер върши работа и студентският номер от профила ни тук във форума.

0
beBoss avatar beBoss 507 Точки

 

Ето пример:

 

 

using System; 
using System.Diagnostics;

class Blabla
{
  static void Main()
  {
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();

    //Program code

    stopWatch.Stop();
    Console.WriteLine("\r\nRuntime: {0} - in Milliseconds ", stopWatch.Elapsed);
  }
}
4
GoShow avatar GoShow 595 Точки

Какво имаш предвид с : "не ползваш изучавания от нас Parse метод при четене / писане"?

0
a_rusenov avatar a_rusenov 1103 Точки

Прекалено много if конструкции ползваш, откъдето ти идва и тайм лимита. Плюс това си създаваш много излишни обхождания като не използваш else.

-Поизчисти го като вкараш switch конструкция за операциите

-Можеш да махнеш този лист с outputs, без значение е за БГкодера в каква последователност ги изкарваш (освен ако на теб не ти пречи)

-При извършване на операция в/у кондензатор, затривай околните единици и самия център след това на 0 (може да му хрумне отново там да провери)

Ето го и моето решение: http://pastebin.com/eVBG2UNX

Използвал съм методи и е добре четимо според мен.

1
GoShow avatar GoShow 595 Точки

Мерси, ще опитам, относно затриването на единците, опитах  и резултата беше същия, затова с върнах към този вариант. А за лист-а ,не знаех , все пак в условието изрично е казано на кой ред какъв да бъде отговора.

0
a_rusenov avatar a_rusenov 1103 Точки

Имах предвид, че можеш да изкарваш output по всяко време, дори ако след това има още input. Иначе последователността на output-а трябва да се запази задължително. Това е така, защото БГкодер изкарва резултата в txt документ и оттам сравнява.

1
GoShow avatar GoShow 595 Точки

Благодаря!

0
g.stoyanov avatar g.stoyanov 776 Точки

Решение

 

Можеш да го погледнеш, опитах се да го напиша максимално четимо и подредено с някои изключения разбира се :).

Ако има въпроси питай.

 

И да допълня за всички който решават задачата да обърнат внимание на следното нещо:

Има два проблема в тестовете спрямо условието на задачата:

 

1. На един тест се подава left вместо red :). Ако ги нямаш тестовете не знам как ще се сетиш да оправиш този проблем понеже няма такова инфо в условието.

 

2. Малко спорно е дали е описано добре в условието но това:

 

000|000

011|100

010|100

011|100

000|000

000|000

 

се води червен кондензатор. В условието намерих само това:

For a location of a figure, we take the location of the center cell that is empty.

 

1
GoShow avatar GoShow 595 Точки

Много мерси, днес съм на лекция от 6, но след това ще го погледна!Иначе мисля, че обхващам въпросния червен кондензатор и не съм гледал тестовете просто реших да се запъна и да я направя сам.Още веднъж благодаря!

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