Софтуерно Инженерство
+ Нов въпрос
petar.petrov avatar petar.petrov 37 Точки

Решаване на проблеми за развиване на логическо мислене


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

Ето и първият проблем :  "How to cross the river ?"

A farmer with a fox, a goose, and a sack of corn needs to cross a river. The farmer has a rowboat, but there is room for only the farmer and one of his three items. Unfortunately, both the fox and the goose are hungry. The fox cannot be left alone with the goose, or the fox will eat the goose. Likewise, the goose cannot be left alone with the sack of corn, or the goose will eat the corn.  How does the farmer get everything across the river ?

източник на проблема - книга "Think like a Programmer"


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

Общи приказки
TodorovH avatar TodorovH 216 Точки

Тоя проблем е стар като света! :)

1. Взима гъската, оставя я на другия бряг.

2. Връща се и взима сака с царевицата.

3. След като го остави на другия бряг, взима гъската обратно.

4. Оставя гъската на първия бряг и взима лисицата.

5. Прекарва лисицата на другия бряг и се връща за гъската.

6. Взима гъската от първия бряг и всички са преминали на отсрещния бряг!

georgi.bogdanov84 avatar georgi.bogdanov84 9 Точки

Здравей Петър,

Според мен решението е следното:

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

2. След това се връща и взима лисицата и я пренася на другия бряг, като взима гъската на обратния курс и я връща обратно.

3. Взима царевицата и я носи при лисицата докато гъската остава сама.

4. Накрая отново се връща и взима гъската.

Не знам дали успях достатъчно добре да обясня ;)


petar.petrov avatar petar.petrov 37 Точки

Здравей Георги, 

Добра работа ! :)  

Karage avatar Karage 7 Точки

Здравей, много добър тест, но има ли вариант да видя някъде дали сам отговорил вярно?

plamenti avatar plamenti 28 Точки


petar.petrov avatar petar.petrov 37 Точки

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

Ето и един друг проблем: Census Taker Problem

A census-taker knocks on a door, and asks the woman inside how many children she has and how old they are.

"I have three daughters, their ages are whole numbers, and the product of the ages is 36" says the mother.

"That's not enough information", responds the census taker.

"I'd tell you the sum of their ages, but you'd still be stumped." said the mother.

"I wish you would tell me something more."

"Okay, my oldest daughter Annie likes dogs."

Всъщност, информацията е достатъчна за решаване на проблема. :) 

източник: TTC - The Art and Craft of Mathematical Problem Solving  .... има го в zamunda

Моля, споделяйте и интересни за вас проблеми :) 

dimitarnik avatar dimitarnik 93 Точки
Is it : 6 , 3 , 2 ?
petar.petrov avatar petar.petrov 37 Точки
Не, за съжаление. Но продължавай да опитваш. Всяка от репликите на майката крие улика за решаването на проблема. 
Statica avatar Statica 0 Точки

A: 2, 2, 9?

petar.petrov avatar petar.petrov 37 Точки

За тези от вас, които харесват графичното решаване на проблеми.

Ето следната задача, давана на интервю за работа в софтуерна компания: Matching letters 

Can you connect each small box on the top with its same-letter mate on the bottom with paths that do not cross one another, nor leave the boundaries of the large box?


източник: TTC - The Art and Craft of Mathematical Problem Solving  .... има го в zamunda

РЕШЕНИЕ: Първи начин 

РЕШЕНИЕ: Втори начин

TodorovH avatar TodorovH 216 Точки
Пътищата могат ли да се качват по квадратите с буквите, защото не виждам условие да не могат!?
petar.petrov avatar petar.petrov 37 Точки
Приеми квадратите на буквите като тяхни граници, т.е. линиите да не минават през тях.
TodorovH avatar TodorovH 216 Точки
Готово! Решенията са 2, другото е вариации!
Borellus avatar Borellus 1 Точки

Значи такаммм. Този фермер първо трябва да е опитомил тази лисица някак си за да не скача на гъската но това е друга тема.

1. Хваща гъската прекарва я.
2. Връща се и хваща чувала с царевица прекарва го.
3. Взима си гъската и я връща на първоначалната позиция.
4. Взима лисицата прекарва я при чувала.
5. Връща се за гъската и гледа гъската умряла от глад.
6. Връща се при лисицата гледа тя хванала гората и я няма никаква.

Благодаря за линка за книжката и 6+ за опита да насърчиш всички ни.

petar.petrov avatar petar.petrov 37 Точки

Проблемът за днес: 

The Pill Problem

Imagine that you have some mysterious disease, and the doctor says "I have some good news and bad news."

"The good news is - I have a cure for you. You have to take one "A" pill and one "B" pill, everyday at noon
for ten days, otherwise though you'll die. The bad news is if you take too much or too little of this medicine, 
you'll die. So you have to be absolutely careful. The pills are also indistinguishable! You can't take two "A" 
and one "B", say , because that would kill you; you couldn't take two A's alone - it would kill you. If you miss
a pill - you'll die. It has to be one "A" and one "B" at noon."

So, you'd listen to the doctor and it all goes well. The first day you take your two pills, the second day you take them,
but on the third day, you shake an "A" pill into your hand and then you start shaking the "B" pill into your hand,
when the phone rings and you turn and you accidentally shake two "B" pills into your hand, but you weren't looking, and 
what is in your hand now are three pills - one "A" and two "B", and you have no idea which is which.

The question is, can you survive? If so, how ?

източник: TTC - The Art and Craft of Mathematical Problem Solving 

Успех ! :)

VenkoVisulchev avatar VenkoVisulchev 4 Точки

   Take another "A" pill - now you have 2As and 2Bs. Crush the 4 pills and take half of the resulting powder today, the other half - tomorrow.

Edit: Or alternatively, set the three pills aside. On day 9, you have 1A pill left in the bottle and 3 random pills. Take the A pill with one of the three - the chance that you're taking a B pill is 66%. If you don't die that night, the pills you have left for day 10 are definitely one A and one B.


petar.petrov avatar petar.petrov 37 Точки

Problem:  Find the next member in this sequence: 

1,  11,   21,   1211,  111221,  ...

KirilVelichkov avatar KirilVelichkov 13 Точки
Отговор: 312211
LinAdmin avatar LinAdmin 78 Точки

Мисля, че вместо запетайки се слагат на нови редове. Така помня условието.










и т.н.

petar.petrov avatar petar.petrov 37 Точки

Да и така става. Важното е, че е спазено решението  W.Y.S.I.W.Y.G.

(What You See Is What You Get). :) 

petio.bs avatar petio.bs 51 Точки