Loading...
nakov avatar nakov SoftUni Team Trainer 5295 Точки

[Homework] Java Basics - Цикли, методи, работа с класове - Май 2014

Колеги, качил съм ви лекцията, демонстрационните примери и условията на домашните от курса Java Basics на неговия сайт. Извинявам се, че ги качвам в последния момент. До сега ги писах и не можах по-рано.

15
Java Advanced 05/09/2014 00:50:59
garbuchev avatar garbuchev 18 Точки

Здравейте, колеги.
Сега да хвърля и аз една бомба за 4-та задача.
Ето моето решение на Problem 4.** Full House with Jokers, което ми върна САМО 18279 варианта.
Преди да ме освиркате ще обясня как съм я решавал и защо такъв е отговора.
Първо, аз приемам, че в тестето има 52 карти(стандартните) + 5 жокера(които са ЕДНАКВИ) = 57 карти.
От там нататък, по схемата с числата от тотото разглеждам различните комбинации в случаите, когато имаме 0, 1, 2, 3, 4 жокера и съответно 5, 4, 3, 2, 1 карти и още 1 вариант за 5 жокера без други карти.
Направил съм я малко дърварската (с една камара FOR loops), но вече ми бяха почти готови от предната задача и с copy/paste/del не трябваше да мисля повече, ами ги набутах в методи и готово.

Ако имате въпроси или коментари, казвайте.

PS: Според мен Наков трябва да разясни условието.
Иначе 119808 full houses = 32 х 3744 full houses, т.е. да заместим със * всяка възможна карта...

0
Dekameron avatar Dekameron 481 Точки

Защо само 1 комбинация с 5 жокера? Ако имаш 5 жокера, това кои карти заместват (не могат да са всички)? Всеки жокер замества само 1 определена карта в даден конкретен случай. Ако имаш само 1 комбинация от 5 жокера, то това е само 1 комбинация от Full House. smile

3
garbuchev avatar garbuchev 18 Точки

Виртуално, 5 жокера са много комбинации, но де факто на масата имаш 5 жокера.

0
iliangrekov avatar iliangrekov 63 Точки

По закон Божи :) жокера се приема за картата с която образуваш най-силната ръка. Няма как да имаш жокер за всяка карта, защото това означава, че с жокер, който замества 6-ца не мога да направя стрейт до Асо при 10, J, Q, К, JOKER. Което пък обезсмисля идеята на жокерите и ги превръща в още едно тесте карти. Жокера е динамична карта - може да е всичко според зависи, с какво правиш най-силна ръка. Това беше по-прицнип, в задачата естествено може да е заложено друго.

0
VenIT avatar VenIT 63 Точки

Здравейте колеги,
Ето и малко решения от мен: Code

0
XmUrF avatar XmUrF 363 Точки

Колеги, я да ви питам някои неща, че не ми станаха ясно, пък гледам тук има различни решения. Значи става въпрос за try catch блока, който се налагаше да се ползва в последните задачи от домашното. В условието на задачите изрично се споменава, че след като отворим потоците, трябва да ги затворим. Така, като гледам видеото от лекцията, за да стане автоматично това, синтаксисът трябва да е нещо от сорта на (ползвам за пример кода на колегата, който е писал последно)

try (Scanner fileReader = new Scanner(file)) {
            while (fileReader.hasNextLine()) {
                String[] lineArray = fileReader.nextLine().split(" ");
 
                products.add(new Product(lineArray[0], Double.parseDouble(lineArray[1])));
            }
 
Тоест отварянето на потока тярбва да е преди отварящата къдрава скоба {. Тогава би следвало автоматично потокът да се затвори без да има нужда ръчно да пишем команда за затваряне? Така ли е, питам, защото не ми стана много ясно?! 
 
Гледам, че всъщност доста малко хора са го направили по този начин. Даже тези, които отварят потока след къдравата скоба, тоест нещо от сорта на try { (Scanner fileReader = new Scanner(file)) , рядко го затварят след това. Тук изниква и друг проблем. Не трябва ли тогава затварянето на потока да го има и в try блока, и в catch блока? Или тогава е хубаво да го направим във final блок, за да не повтаряме код?
 
Аз самият не съм сигурен как точно трябва да е. Отварях потока преди къдравата скоба, но също така изрично го затварях в try блока, което май всъщност е грешка, нямам final блок и не го затварям в catch блока. Ама така е като ги правех в последната минута нещата...
0
ttitto avatar ttitto 1153 Точки

Когато си декларирал и инициализирал съответният ресурс в кръглите скоби след try, ресурсът автоматично се затваря и не се налага ти да се грижиш за него. Това е аналогично на using() в C#.

1
XmUrF avatar XmUrF 363 Точки

Ясно, мерси за потвърждението!

0
salih1f1 avatar salih1f1 188 Точки

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

Имам малък проблем с задача 03.Full House. Писах я в Eclipse под Ubuntu. Там нямах никакъв проблем с стартирането на задачата. Реших да си поиграя и с Eclipse под Windows 8. Инсталирах си JDK и Eclipse, импортнах си домашното и при опит за стартиране на въпросната задача ми гърми exception - invalid character constant. Промених настройките на eclipse-a Windows -> Preferences -> General -> Workspace -> Text file encoding на UTF-8, но без резултат. Някакви идеи как да го оправя. Рових се в нета но до тук нищо не помогна.

Поздрави.

 

0
verito898 avatar verito898 265 Точки

така въведени всичко е 6 :

char pika = '\u2660';
char spatia = '\u2663';
char kupa = '\u2665';
char karo = '\u2666';

и при мен не се получава  , но пробвай по този начин ако все пак не стане 

1
verito898 avatar verito898 265 Точки

Някой може ли да помага с разнищването на 3та задача и евентуално 4-та , защото се опитвам по мой начин , но нещо не се получават нещата . 

Имам в профила си вързан facebook и skype акаунт  и ако има някой свободното време и желание , ще съм благодарна за помощта.

Благодаря предварително ! :))

 

0
milen_vm avatar milen_vm 68 Точки

Здравей.
Мога да ти предложа моето решение на трета задача FullHouse от Java курса не е особенно умно но работи. То е следното:
Първо създавам два масива. Един за всичките 13 карти и един за боите. Символите на цветовете не съм ги ескейпвал, копирал съм ги от някъде и ги пейстнах в кода. При мен на Еклипс и така работят.
След това завъртам цикъл за всяка една от 13-те карти.
Тъй като FullHouse представлява комбинация от три еднакви карти плюс други две пак еднакви, всички комбинации на първата тройка еднакви карти ги създавам ръчно с един switch case. В секи case създавам по една комбинация. Те са общо 4 наброй. Предполагам това може да стане с някъкви цикли, както са го направили колегите.
Вторият цикъл от 0 до <4 е за подаване на всяка една от комжинациите.
Комбинацията от три карти записвам в масив от 5 елемента на първите три позиции.
Със следващия цикъл подавам карта за 4-тата позиция от масива (двойката еднакви карти). Тя трябва да е различна от предните 3 и затова когато j е равно на i я пропускам. Следва друг цикъл в който подавам една от 4-те бои на картата и я слагам  4-та по ред в масива. Следващия вложен цикъл подава следващата боя (от масива с боите) за същата карта и я записвам на последна позиция в fullhouse масива. FullHouse-а е готов и с още едни цикъл го отпечатвам в конзолата и увеличвам брояча за fullhouse-и (++countFullHouse;). Пропуснах да спомена, че съм създал и променлива за бояч. Накрая отпечатвам и нея. Надява се обяснението ми да ти е полезно wink. За 4-та задача тази логика няма да работи, а нея не успях да реша. На мен ми е трудна, задачите със зведички изискват повече знания от колкото ни дава курса. Може да погледнеш някое от решенията на колегите.
Успех!

2
verito898 avatar verito898 265 Точки

.Aз се справих със задачата .. то в крайна сметка пак от недоглеждане съм омотала малко задачата .. anyway много благодаря все пак за подробното разсяснение и решение на задачата !

0
d3vildog avatar d3vildog 58 Точки

Здравейте решавам една задача от изпита и за да не отварям нова тема само за това, да питам тук направо.. 

И така задачата е тази като въведа този вход (3) (22) (-18) (55) (44) (3) (21) или който и да е друг представен по този начин винаги ги сплитва с един празен ред в началото, ползвам "[\\D ]+" за разделител. Пробвах и по-много други начини но винаги имам един празен ред в началото. Ако някой знае от каде ми идва грешката ще съм благодарен ако сподели smile.

0
12/09/2014 17:20:03
Filkolev avatar Filkolev 4482 Точки

При това сплитване не получаваш ли в масива празен елемент на позиция 0? След като имаш в началото на входа "(3)..., то сплитва по първата скоба, в първия елемент на масива ще запази празен стринг (""), на позиция 1 вече ще сложи 3.

0
d3vildog avatar d3vildog 58 Точки

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

0
12/09/2014 17:33:37
Filkolev avatar Filkolev 4482 Точки

В C# има Remove Empty Entries, но в Java не съм открил бърз начин. Просто трябва да проверяваш на първата и последната позиция дали имаш празен стринг (подозирам, че и на последната позиция пак се появява такъв). Ако някой знае как да ги премахне без да прави проверки или да върти цикли, доста ми е интересно как ще стане, защото е досадно.

0
stefoto avatar stefoto 51 Точки

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

Ето и моето решение на 10-та задача: 10 - Order of Products

0
quickben avatar quickben 966 Точки

boyanov мисля, че целта на задачата е  да направим отделен клас и вече да ползваме него в другия клас където ще ни е main method-а, отделно след като в задачата се говори за пари е най-добре да се използва BigDecimal :)

1
boyanov avatar boyanov 65 Точки

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

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