Loading...

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

Spaskich avatar Spaskich 36 Точки

Homework: Multidimensional Arrays, Sets, Dictionaries

Здравейте, колеги!
Предлагам да направим една обща тема (малко в последния момент) за второто домашно от курса по Advanced C#.

В този пост ще сложа линкове към сорса на задачите, които съм решил до момента и ще го ъпдейтвам, а в коментарите отдолу можем да обсъждаме начините на решаване и да изберем най-оптималния (който ще за заместя в този пост). 

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

 

___

Задача 1 - Fill the Matrix

Задача 2 - Мaximal Sum

Задача 3 - Matrix shuffling

Задача 4 - Sequence in Matrix

Задача 5 - Collect the Coins

Задача 6 - Count Symbols

Задача 7 - Phonebook

Задача 8 - Night Life

5
C# Advanced 21/09/2015 18:40:40
sholeto avatar sholeto 93 Точки

Не знам за оптимални работи, има доста да се развивам преди да започна да правя оптимални неща. За сега се старая кода да е по-разбираем, но не винаги се получава. :D

Problem 1a. Fill The Matrix - Помислих, че ще е интересно ако се вижда как се попълва матрицата и така го направих, понеже не отне доста време отгоре.

Problem 1b. Fill The Matrix

Problem 2. Maximal Sum - Това преди лекцията ми се беше сторило изключително трудно, но имаше подобен пример по време на лекцията и се оказа, че не е трудно.

Problem 3. Matrix Shuffling

Problem 4. Sequence In a Matrix - Това ми се струва най-трудната задача. Трябва да си призная, доста ме затрудни и използвах готов код. Може би когато ми остане време ще се върна назад да я разгледам пак, понеже ми хрумнаха няколко идеи докато решавах другите.

Problem 5. Collect The Coins

Problem 6. Count Symbols - Определено не са подредени по трудност.

Problem 7. Phonebook

Problem 8. Night Life

Problem 9. * Terrorists Win!

Problem 10. * Plus-Remove - Тук алгоритъма е същия, като проблем 2.

Problem 11. * String Matrix Rotation

Problem 12. * To the Stars! - Mass Effect ми е една от любимите поредици. :)

Problem 13. * Activity Tracker - Същия принцип като проблем 8.

 

Отворен съм към всякакви критики и преложения. Стига накой да му се занимава да се рови в чужд код. :D

3
21/09/2015 15:12:08
Spaskich avatar Spaskich 36 Точки

Ще добавя твоите решения на задачите, които съм решил по сходен/същия начин. ;)

1
cap7ainjack avatar cap7ainjack 20 Точки

Здрасти!

Относно задача 3, мисля че по условие трябва да връща "Invalid Ouput" и когато въведения стринг не започва със "swap"  както или ако е по-малко от 5 стринга(+ swap-a). Поне аз така го разбрах, а не мога да го направя този exeption като гледам и при теб не е така. 

Идеи ?

1
22/09/2015 09:04:10
sholeto avatar sholeto 93 Точки

Мда, прав си cap7ainjack. Тук съм недочел условието, което ми се случва често. 

Варианта, който ми хрумва, е да се сложи проверка в try блока, примерно: if (command[0] == "swap" && command.Length == 5) чак тогава да изпълнят методите, които са там. И после примерно else { throw new Exception();} понеже да си използвам пак ексепшъна за грешен input. :)

Утре ще го оправя и ъпдейтна.

1
21/09/2015 23:52:11
kidroca avatar kidroca 117 Точки

Тук са моите решения на всички задачи, направил съм ги цветни - матриците се оцветяват където има смисъл.

https://github.com/kidroca/Advanced-CSharp-2015-Multidimentional

Долу са задачите които ми бяха по - интересни, със 4та много се заиграх - знам как да я направя много лесно, за 20 - 30 мин. но това решени съм го писал на 2 пъти по 2 - 3 часа.

Задача 2 - Maximal Sum - работи на само с 3х3, а със площадка от какъвто размер и бъде зададено 

Задача 4 - Sequence in Matrix - Overkill направих я да работи с със generic матрица - не само със стрингове , а със всички данни които имплементират IConvertible (заради стринговете). Това всъшност беше лесното. Откритата последователност се оцветява. Методът който проверява последователността приема като параметри освен матрицата - списък от методи/делегати които да изпълни и от там вече се влиза в Матрицата (ама във филма)

Задача10 - Plus Remove - Използвам List<bool[]> къдто запомям индексите котито съдържат части от фигурата Plus и на края всичко което е true го изрязвам от резултата

Задача 11 - String Matrix Rotation - Tъй като градусите се подават във вида "Roatae(90)" понеже са единственото число във стринга си ги извадих със ей този обикновен regex:

var rxPattern = new Regex(@"\d+");

int degreesOfRotation = int.Parse(
    rxPattern.Match(
        Console.ReadLine()).Value);

После със ей този израз разбирам колко пъти(1, 2 или 3) е необходимо да завъртя матрицата на 90 градуса 

int numberOfRotations = (degreesOfRotation / 90) % 4;

И за моя изненада тестовете минават, (мислех си че ще гърмят за време защото първо преобразуам входа във char[,]) после я въртя но всъшност съм далеч от горната граница.

0
23/09/2015 22:41:14
kidroca avatar kidroca 117 Точки

Готино решение на Terrorists Win!

0
Isibel avatar Isibel 41 Точки

Благодаря, първо я реших с регекс, но стана някак засукана и реших, че без тях ще ми е по-добре. String.IndexOf и StringBuilder са напълно достатъчни.

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