Loading...
DHristoskov avatar DHristoskov 211 Точки

[Homework] Advanced C# - Arrays, Lists, Stacks, Queues

Видях че някои колеги вече са решили задачите от домашното по C# Advanced ето и моите решения:

1.Sort Array of Numbers

2.Sort Array of Numbers Using Selection Sort

3.Categorize Numbers

4.Sequences of Equal Strings

5.Longest Increasing Sequence

Решението на задача 6 се съдържа в решението на задача 7, а моето решение е много сходно с това което са постнали, KatyaMarincheva, EBojilova има и друг вариант на GalyaGeorgieva така че няма смисъл и аз да ги поствам.Линк към техните решениея.

8.Work in progress. - Ще я кача когато я довърша.

9.Stuck Nmbers

10.Pythagorean Numbers - тук малко сам съм си създал затруднения, но решението работи.

П.С Не ме съдете за именуването на променливите това ми е най-болния проблем.

Тагове:
13
C# Advanced 11/05/2015 18:40:52
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Това е моят вариант за 8-ма задача.

ТУК

1. Използвах два назъбени масива.
int[][] first = new int[n][];
int[][] second = new int[n][];

2. Измервам дали:
масив1[0].lenght+масив2[0].lenght == масив1[1].lenght+масив2[1].lenght ==... масив1[n].lenght+масив2[n].lenght  и ако са равни то двете парчета пасват.

3. Имам и брояч за дължината на всички парчета от двата масива /ще ми трябва, ако лего-то не пасва и трябва да извадя краен резултат на бр. елементи/

4. С bool check си отбелязвам дали парчетата пасват/при проверката в т.2/:
- ако не пасват извеждам на конзолата брояча от т.3;
- ако пасват правя reversed на масив2/second/, "сглобявам" ги и ги отпечатвам на конзолата.

Има коментари в кода.
Дано съм била полезна и ако има грешки "свиркайте" :)

 

5
05/05/2015 11:24:08
dmaslev avatar dmaslev 25 Точки

Нулевите тестове минават, но имаш няколко грешки. Можеш да си тестваш задачата тук.

Първата ти грешка е, че не четеш внимателно условието (There might be leading and/or trailing whitespace(s)).

Втората ти грешка е при принтирането на матрица, в случаите когато "блокчетата" съвпадат. В момента програмата работи само за n=2. Тоест винаги принтираш само 2 реда от матрицата. Ако n=4 програмата ти принтира първите 2 реда и спира. Трябва да си промениш цялата логика на създаване и принтиране на матрицата. Няма да ти развалям удоволствието и да ти кажа как става. Оставям те сама да помислиш как да я оправиш.

1
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Поработих върху забележките и поправих кода (чистя whitespace и вече работи с повече от 2 реда), но въпреки това ми дава 75 / 100 точки, ще съм ти благодарна, ако ми подскажеш от къде се губят точки.

ТУК

0
dmaslev avatar dmaslev 25 Точки

Проблемът ти е в махането на празните символи. Методът Trim маха празни символи само в края и в началото. Тоест ако имаш вход (    3     4   ), след като използваш trim резултатът е  (3     4). Накракратко след това парсваш 3 в масива, пропускаш един празен символ, който се използва за сплит и при опит да парснеш следвашия символ(който в случая е празен) към int програмата гърми. Пробвай вместо trim да използваш StringSplitOptions.RemoveEmptyEntries. 

3
Shrako avatar Shrako 1 Точки

Колега, първото което ми направи впечатление е, че променяш формата на output-а от този, който е даден в примерите, което при домашните не е от значение, но на някой изпит judge системата ще писне ако ти стане навик.

0
DHristoskov avatar DHristoskov 211 Точки

Предполагам имаш предвид задача 9, не съм пълнил масива елемент по елемент, защото в примерите беше дадено като ред и аз си го направих като string разделен с space, знам че не е правилно. Задачата работи, но ще я коригирам, за да бъде както е по условие.

Благодаря и успях!

0
Shrako avatar Shrako 1 Точки

Имах предвид че например на 3та, на която ти вадиш в пъти по-ясен и адекватен output, judge би я счел за грешна, тъй като очаква output във формат [...] -> min max avg, а при теб е
Type
...
min
max
avg.
Казвам го, защото смятам че е добре да свикнеш с начина, по който работи оценителната система на изпитите, от гледната точка на човек който 30 минути се чудеше защо ми гърми задачата поради един добавен интервал :D

0
05/05/2015 13:04:28
peterborisov avatar peterborisov 123 Точки

Името на  "Problem 9.* Pythagorean Numbers" е збъркано.Задачата е 10-та по ред:)

 

0
pataroka avatar pataroka 319 Точки

Абе... аз ли съм много проз и не разбирам условието на 4-та задача или изхода даден в примерите не отговаря на подаденото условие - "all sequences of equal elements (comparison should be case-insensitive)".

Това:

SoftUni

softUni

softuni

не трябва ли да е на един ред?

0
Filkolev avatar Filkolev 4482 Точки

case-sensitive, грешка е, беше поправена по някое време. Явно работиш с по-старото условие, ако го свалиш наново ще е оправено.

0
dani_a1 avatar dani_a1 39 Точки

На мен в условието ми пише "comparison should be case-sensitive". Може би са забелязали грешката и са ъпдейтнали файла с домашното.

0
pataroka avatar pataroka 319 Точки

Благодаря!

0
Innos avatar Innos 419 Точки

Здравей,

намерих къде е проблема оригиналната редица съдържа "4" 2 пъти, не си сложила Distinct и то образува събсет с 2те четворки затова. Също така тавана за намиране на събсети е много нисък, зададен е като (int)Math.Pow(2, numbers.Length) - 1; и надолу в цикъла итерираш до i < combinations ефективно правейки тавана (int)Math.Pow(2, numbers.Length) - 2 така ще пропуснеш последния събсет, който включва всички числа от редицата.

1
06/05/2015 16:49:12
EBojilova avatar EBojilova 330 Точки

Здравей,

Благодаря много, забравила съм Distinct(). При рекурсията го сложих, а тука забравих. Бая време търсих проблема в комбинациите :)

Прав си и за маската, наистина пропускам 1 комбинация.

 Ако си присъствена форма, съм на лекцията в момента и можем да се запознаем :)

1
06/05/2015 23:51:51
Innos avatar Innos 419 Точки

Разбира се, след лекцията ме потърси отпред до лектора, с тази ярко жълта фанелка най-вероятно бая се набивам на очи.

1
06/05/2015 20:21:42
knoteva avatar knoteva 1081 Точки

Здравейте,

Имам два въпроса относно 9 задача(Stuck Numbers). 

1. Мога ли да я оптимизирам, така че да не ми гърмят последните тестове за време?

2. Защо като използвам масив, а не списък не ми зачита единия отговор за правилен на 5 тест?

diffchecker

решение със списък

решение с масив

0
Kamigawa avatar Kamigawa 750 Точки

На пети тест има едно разстояние накаря - не го помня наизуст, но е нещо от сорта на ʼ2 3 4 5 ʼ , вместо ʼ2 3 4 5ʼ - проверявах снощи понеже ми стана интересно - проблема сe решава с .trim на входните данни преди split. Относно гърменето за време - мислех да пробвам със стринг билдър, но не остана време - просто тестовете са такива, че се иска повече ресурс за да се вместят във времето нещата(който ресурс се дава на системата по време на изпити, т.е. ако беше по време на изпита - тестовете щяха да минат).

1
06/05/2015 17:09:13
Filkolev avatar Filkolev 4482 Точки

Това с лимита време е по-скоро от самата задача. Ще увеличим позволеното време.

Решението с масив ти гърми защото там не си тримнала преди да слитнеш.

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

1
09/05/2015 18:44:33
knoteva avatar knoteva 1081 Точки

Благодаря за отговора. Като сложиж Trim() стана.

0
pataroka avatar pataroka 319 Точки

Айде и аз да се разпиша с малко решения. 01.Advanced-CSharp-Arrays-Lists-Stacks-Queues-Homework

LegoBlocks съм го решавал на Java изпита за 100 точки. Като го напраих на C# бая време мина докат ги добутам до 100, ма кой да се сети че регексите тука бачкат по друг начин :))

3
milen_sh avatar milen_sh 0 Точки

На първа задача "Sort ArrayOfNumbers", не трябва ли да се въведат няколко числа в конзолата и тя да ги сортира. Аз пробвах това решение, но след първото въведено число ми изписва: Press any key to continue.

0
Filkolev avatar Filkolev 4482 Точки

Трябва числата да се въведат на един ред, а не едно след друго на нови редове.

0
i.alidzhikov avatar i.alidzhikov 63 Точки

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

 

Problem 1. Sort Array Of Numbers

Problem 2. Sort Array Of Numbers Using Selection Sort

Problem 3. Categorize Numbers

Problem 4. Sequence Of Equal Strings

Problem 5. Longest Increasing Sequence

Problem 6. Subset Sum

Problem 7. *Lego Blocks

Problem 8. *Stuck Numbers

Problem 9. *Pythagorean Numbers

 

4
DHristoskov avatar DHristoskov 211 Точки

Със сигурност ще бъдат полезни, дори и на следващата група C# Advanced.

1
EBojilova avatar EBojilova 330 Точки

На мен ми помогна за 09. Stuck Numbers.  Все излизах от времето.

Даже ми дойде идеята изобщо да не превръщам в int. Само със стрингове работя и намалих доста времето :)

Няма нужа да се превръщат в числа, не се извършват никакви математически действия.

1
07/05/2015 15:04:05
pataroka avatar pataroka 319 Точки

@EBojilova 

Свиквай с подобни "уловки". И също така, когато имаш често преобразуване на променливи, може понякога да надвишиш лимита на времето в джъджа. В тази връзка е добре да се знае каква е разликата между Cast, Parse и Convert Отговорът на Marc Gravell.

1
Templars avatar Templars 2 Точки

Мисля че имаш грешка в 4-та задача не ти минава проверката дали са равни стринговете , при мен така се получи :

if (output[i]!=output[i+1])

1
i.alidzhikov avatar i.alidzhikov 63 Точки

Благодаря ти за обратната връзка. Сега виждам, че има разминаване между условието на задача, където пише, че сравнението трябва да е case-insensitive, и дадените примери, където сравнението всъщност е case-sensitive. 

StringComparison.InvariantCulture вместо StringComparison.InvariantCultureIgnoreCase и проблемът е решен. : )

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