Софтуерно Инженерство
Loading...
+ Нов въпрос
nakov avatar nakov SoftUni Team Trainer 5456 Точки

[Exam] C# Basics - 22 август, 26 август 2014 - решения, впечатления, резултати

Колеги, качил съм ви на сайта на C# Basics курса условията на задачите, авторските решения и тестовете от двата приемни изпита за СофтУни (22 август и 26 август 2014): https://softuni.bg/trainings/coursesinstances/details/1048.

Можете да се упражнявате в judge системата:

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

11
Основи на програмирането 27/08/2014 22:43:41
martyz avatar martyz 7 Точки

Кога мога да се явя на поправителен?

2
IvanVasil avatar IvanVasil 1 Точки

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

0
akaynarov avatar akaynarov 13 Точки

Колега решителността Ви ме впечатлява. Още не си се наспал, а очакваш новото предизвикателство. Поздравления! 

3
Reverie avatar Reverie 16 Точки

That first comment…

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

9
martyz avatar martyz 7 Точки

Съгласен съм. Само прочитането и вникването в задачата отнема 3 пъти колкото решаването на 1ва задача.

0
27/08/2014 00:29:35
IvanVasil avatar IvanVasil 1 Точки

+1, загубих 1 час в препрочитане на условието на 2ра, и в крайна сметка пак не вденах за какво става на въпрос.

1
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Четейки коментарите ви реших да видя условието на 2-ра задача. Щом го видях веднага се сетих за нашата 5-та задача с битовете от 25-ти Юли сутринта. След като тогава се мъчих на нашата задача да разбера условието поне 45мин. разбрах, че има ли такива примери със стрелки то трябва да се търси логика във всички възможни посоки - по диагонал, на ред, по колони.. :) Явно това ми помогна и за 5 мин. разбрах логиката на вашата 2-ра задача.

Най-важното, за да разберете примера от условието, е да го четете по колони. Направите ли го, след наколко минутки ще откриете логиката. Ако погледнем само 1-вата колона за index 0 ще видим, че започваме от index 0 = 1-ца. Гледа се стойността на този index и след като тя е 1-ца отиваме на следващия  в дясно index 1 със стойност 2-ка. След като има стойност 2-ка значи следващия index е втория в дясно от текущия, т.е. от index 1 отиваме на индекс 3, който има стойност 5-ца. Понеже този index е последния трябва започнем броенето от 1-вия index startIndex[3]->0->1->2->3->0, т.е. отиваме на index 0 със стойност 1-ца. За последния jump отиваме 1 index в дясно, т.е. от index 0 отиваме на index 1 със стойност 2. Понеже трябва да се сумират числата на всеки посетен index ни трябва int sum = 0, към който да добавяме стойността на всеки посетен индекс, както и друга променлива maxSum.

sum = 0 + startIndex(value = 1) => 1

Jump1:

startIndex[0] с value = 1    =>  stardIndex[0] -> 1 (value = 2)                               sum = 1 + 2 => 3

Jump2:

startIndex[1] с value = 2    =>  stardIndex[1] -> 2 -> 3 (value = 5)                        sum = 3 + 5 => 8

Jump3:

startIndex[3] с value = 5    =>  stardIndex[3] -> 0 -> 1 -> 2 -> 3 -> 0 (value = 1)  sum = 8 + 1 => 9

Jump4:

startIndex[0] с value = 1    =>   stardIndex[0] -> 1 (value = 2)                               sum = 9 + 2 => 11

 

 

 

1
27/08/2014 02:43:55
a_banderov avatar a_banderov 19 Точки

Първа задача с отнемането на 30 точки заради един long.....

1
IvanVasil avatar IvanVasil 1 Точки

И аз бях със 70 точки отначало и се чудех къде ми е проблемът, но като пробвах после да въведа 100 като число разбрах ,че int-а ми е малко късичък.

0
boyanov avatar boyanov 65 Точки

Днес за един лонг 30 точки, утре за един лонг си уволнен :)

4
andrey.blagoev avatar andrey.blagoev 62 Точки

Аз съм доволен от задачите на 22-ри, можеше и по-трудни задачи да се паднат :D

2
RosenKrumov avatar RosenKrumov 203 Точки

И аз съм доволен, приятни бяха задачите в петък. С изключение на 1-ва, при която мислих час и половина къде ми гърмят първи и четвърти тест и така и не можах да го измисля ...

1
tdsamardzhiev avatar tdsamardzhiev 77 Точки

Направо си бяха лесни, според мен. На някои от предните изпити имаше доста коварни клопки.

1
andrey.blagoev avatar andrey.blagoev 62 Точки

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

1
27/08/2014 11:57:16
lnxslackware avatar lnxslackware 18 Точки

Ето така протече при мен днешният изпит:

Беше доста интересен изпит. Май най-много време отделих на първа задача, пиша, пиша, пиша по нея пращам в judge системата - 30т., пускам си на ръка нулевите тестове - ми нещо не излиза, ама така е като си свикнал с матриците "X" да ти е реда, пък "Y" колоната(няма кой да се загледа в табличката толкова :D) докарах ги до 70т. и си викам "Давай нататък, поле ще му умуваш". Не срещнах особено затруднение с втора задача - запали си от първия път. Следва 3-та задача "Stars" - никога не са ми били силата такъв тип задачи. Викам си, колкото и цикли да изцикля сигурно няма да прехвърля максималното време за изпълнение на кода. Е сигурно няма решение с повече цикли от моето, но пък заработи при първия събмит. Захващам се с 4-та задача - Winning Numbers. Пиша си вземането на данни, поседях и поомувах 5-10 минути на това какво да тръгна да генерирам, дойде време за почивката и както казвам аз "друго си е да излезнеш на чист въздух... и да запалиш една цигара". Връщам се да умувам над задачата, викам тук става грозно, ама от друга страна judge системата няма да я сбърка колко точно грозно е :D. Първия събмит - 90 т. Отново най-добрата стратегия е ако не видиш бъга за 5-10 минути да продължаваш нататък. 5-та задача, кой пък има време да се разправя с побитови операции - стрингосването винаги е било по-лесно - матрица с чарове('0' и '1') и обхождането на матрицата е в пъти по-лесно(особено с няколко хардкоднати позиции). Първи събмит - 100т. Време става да се връщам на предните задачи. На 4-та задача се оказа, че по грешка съм си сетнал флага за това дали има намерено решение с дефолтна стойност true(silly me). 1-ва задача отново ми отне доста време докато се усетя да тествам примера, с който беше нарисувана таблицата - еми връщаше ми отрицателно число, сложих му един ulong, макар че и с long щеше да си работи като хората.

Ето и самите "умни" решения, които се получиха накрая:

Цък

1
27/08/2014 00:46:57
Yulia avatar Yulia 1343 Точки

Хаха, и аз си поиграх със задачките днес. На втората определено условието беше хелл - отне ми и на мен дооста време да разбера какво се иска точно. Ядоса ме малко, но я преборих :D

Та, решения: започвам и аз хронологично: Докато ми беше що-годе свежа главата, почнах от 5. X-Bits (цък). Беше доста лесна - реших я с една матрица, в която направо се търсят комбинациите """като""" substring-ове (с лек "хак" - конкатинирах числата - не ми се занимаваше да ровя в гугъл за по-специалните методи). Съвсем съм забравила синтаксиса в C#.

Затова пък следващите задачи минах да си ги пиша на JavaScript. 4. Winning Numbers (цък) също се оказа лесна за мен - мисля, че това е стандартно решение за нея.

После доста се забавих на 2. Jumping Sums (цък), но и нея я написах на JavaScript. Без дебъгване, мноого яко xD Отново масив. Не знам как бих могла изобщо да реша всичките задачи без масиви. Само, че не го направих на числа при четенето и ии после навсякъде добавях Number(numbers[i]), например за сумиранията.

Океей, продължих с 1. Tic-Tac-Power (цък). Първо се опитах да измисля някаква формула - нещо ме глогождеше, че тази задача може да се реши някак доста просто. Но не ме бива в математиката, затова подходих по трудния начин. Как? Отново с матрица... :D Решнието е доста по-сложно от авторското, но е най-вече заради постоянната мисъл за това кодът да бъде преизползваем и скалируем. Мисъл, която неволно се вкоренява след известно време програмиране, дори и по време на изпит. Просто едно вътрешно чувство не ми позволява да хард-кодна if(y == 2). Да, в задачата са дадени само 3х3 полета, но какво ако са 100х100 ? Формула също би сработила, но би било абсурдно да се пишат 100 if-else-а. И решението с матрица ще работи в този случай, като само трябва да се променят броячите (ако ги бях извадила и като константа, щеше да бъде просто красота). Та изкарах 90/100 с така написаното решение на JavaScript - грешен беше последния тест, затова бях сигурна, че проблема е в препълването на... var :D Ми какво да се прави... продължих нататък.

3. Star ми беше сууупер досадна. И вече се бях изморила от другите задачи. Не ми беше интересна и почнах да ровя из старите си решения на задачките за рисуване. Затова я писах и на C#. От една копирах триъгълничето за върха на звездата. От друга - друго. Даже някак напаснаха формулите по необясним начин. Идея си нямам как изобщо се компилира това нещо - е, промених някои имена на променливите за да заспи :D То и Visual Studio-то крашна на няколко пъти. Но като цяло беше чисто натъманяване само и само по-бързо да я напиша тая задача. Мисля, че се получи достойно произведение на програмирането, заслужаващо почетно място в govnokod.ru Даже ме е срам да си кача решението в GitHub, затова може да се полюбувате на кода в pastebin - цък.

С последни сили да се преборя с мързела си след толкова дълъг ден - се реших на геройската постъпка да "преведа" 5-те реда код от първата задача от JS на C# с BigInteger. Оказа се, че не боли. Даже и ми даде системата 100/100 - цък. С BigInteger вече решението наистина би работило и със 100х100 tic-tac-toe xD

Ии това е общо взето. Бях внимателна с условията, не започвах да пиша преди да си изчистя алгоритъма наум или на хартия, правих си чести почивки, слушах яка музика и не се стараех да реша задачите за рекордно време. Останах си до края на изпита. Последните 2 часа се занимавах да си пренапиша 3-тата задача по по-културен начин... познайте с какво - с матрица :D Решението стана интересно, но не е довършено и ще го кача някой друг път. Като цяло този изпит за мен беше с цел да си повиша оценката от априлския прием и като съм към края на ниво#1, няма как да са ми трудни тези задачи. Дори не съм способна да ги сравня по сложност с априлския изпит. Радвам се само, че сега нямахме задачи с дати и часове :D Единствената ми подготовка за припомняне на C# беше през ваканцията, когато реших ето тази задача. И тя ми помогна доста (затова така се вързах към масивите - свикнах им) :D

PS. Мисля, че 5-та задача бие всички рекорди до сега за "най-много точки от нищо" - с едно Console.WriteLine(0); можеха да се вземат 60 точки... :D Който се е сетил - браво, а който я е решил за 100 - двойно браво!

4
28/08/2014 12:46:13
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

Задачите от вчерашният изпит не ми се струват трудни и за малко под 3 часа ги реших.  Първа задача е елементарна и не мога да повярвам, че на изпит може да се реши задача с толкова малко код. На втора задача малко по-трудното е да се разгадае логиката, след това не е трудна за реализиране. Трета както повечето такива задачи за рисуване е лесна, но тук трябва да се използват повече for цикли и if проверки аради неправилната форма на звездата. Четвърта задача е много лесна и предполагам повечето не са имали проблеми на изпита. И условието е лесно за разбиране и реализацията също. За пета задача съветвам колегите, които ще се яват в бъдеще на изпит, да научат битовите операции. Много по-кратки и лесни са решенията, използващи битови операции, а и не са никак сложни да се научат. 

26 Август:

01. TicTacToePower

02. JumpingSums

03. Star

04. WinningNumbers

05. XBits

 

22 Август:

01. Tables

02. BookOrders

03. Cars

04. ChessQueens  - не е най-доброто решение, но понеже е по-различно от авторското решение ще я оставя така

05. DoubleDowns

0
27/08/2014 23:21:18
djumi91 avatar djumi91 10 Точки

Решенията ти са доста добри кратки и ясни. На 3-та задача "Stars" от 26 Август във втория "for" цикъл "else" - а ти  е излишен.

Поздрави!

1
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

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

1
stefoto avatar stefoto 51 Точки

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

Нали днес би трябвало да излязат резултатите от двата приемни изпита? До 2-ри септември остава малко време :) 

Иначе и аз съм съгласен с горните мнения за 2-ра задача от вчерашния изпит. Най-накрая не издържах и питах един от асистентите как по дяволите стават въпросните скоци, когато превишиш последния индекс и се получи! laughing За последната задача с битовете ми остана половин час, но мозъкът ми беше гръмнал и реших, че и без нея резултатът ще ми е достатъчен. Днес ще я поразцъкам на спокойствие след работа. :)

 

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

0
27/08/2014 10:01:26
gstoyanov90 avatar gstoyanov90 99 Точки

Същия бях и аз :) Тая втората ми изяде 70% от времето :D 

Задачите като цяло обаче не бяха чак толкова сложни :) Чакаме да видим класиране и малко информация за записването :) 

0
RosenKrumov avatar RosenKrumov 203 Точки

Аз ще се осмеля да си споделя решенията от петък. На 2-ра и на 4-та може би са ми прекалено измъчени откъм качествен код, но когато съм на изпит разбрах, че не мога да обръщам внимание на това и целта ми е просто да изкарам 100/100 на всяка една. Дано до края на 1 ниво да се овладея малко, защото мисля, че след 1 ниво започва да се гледа и качеството. Ще съм много доволен, ако има коментари по решенията ми, съвети и т.н.

01. Tables - http://pastebin.com/CGUwbeN5

02. Book Orders - http://pastebin.com/VeGS1N0M

03. Car - http://pastebin.com/K3gpaGL8

04. Chess Queens - http://pastebin.com/fNwLVsJY

05. Double Downs - http://pastebin.com/cBk4e7F9

 

1
Filkolev avatar Filkolev 4428 Точки

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

Ето решенията ми: C# Basics 26 August 2014

Трета, поради особеностите на фигурата, е най-дълга и за мен беше най-трудната/времепоглъщаща задача.

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

Ето решенията на задачите и от другия изпит: C# Basics 22 August 2014

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

0
27/08/2014 18:20:19
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки

// Stole the formula ;) laughing

 

Сега забелязах, че авторското решение на 4-та задача не работи заради дребна грешка. 

На line 14 вместо:

letSum += inputUppercase[i] - 'A' - 1;

трябва да бъде:

letSum += inputUppercase[i] - 'A' + 1;

 

0
27/08/2014 16:00:01
nakov avatar nakov SoftUni Team Trainer 5456 Точки

Мерси за корекцията. В бързането сменихме магическото "- 64" на по-разбираемото "- 'А' + 1". Поправено е на сайта.

1
nikola.m.nikolov avatar nikola.m.nikolov 832 Точки
Условието на 2-ра задача от 22-ри Август правилно ли е? Нещо не мога да разбера какъв discount има за пакети от 40 до 99...
0