Some Apple Interview Questions +


1

Тези 2 въпроса ми направиха впечатление, имам някакво становище по тях но бих желал да чуя и вашето ако ви е интересно :))

„Имате 100 монети, поставени на масата. 10 от тях са с „ези” нагоре, а останалите 90 – с „тура” нагоре. Нямате право нито да ги гледате, нито да ги опипвате. Разделете монетите в две купчинки така, че във всяка да има равен брой монети с „ези” нагоре.”
 (Интервю за софтуерен инженер)


„Пред Вас има три кашона. В единия има само ябълки, във втория – само портокали, а в третия има и ябълки, и портокали. Кашоните са грешно надписани и нито един от етикетите не описва точното съдържание на съответния кашон. Отваряйки само един от кашоните, без да поглеждате в него, изваждате само един плод. Когато видите плода, който се извадили, как бихте могли веднага да надпишете правилно всеки един от кашоните?” (Интервю за софтуерен инженер по осигуряване на качество)




Отговори



3

Задачата с кашоните с плодове: Имате избор от кой кашон да вземете плод, затова вземате от кашона с надпис "ябълки и портокали". Ако изтеглите портокал, значи това е кашона с портокали. Тогава кашона с надпис ябълки не може да е с портокали, но по условие, не може и да е с ябълки,  остава да е с ябълки и портокали :)


от neutrino (3376 точки)


0

"Отваряйки само един от кашоните, без да поглеждате в него"

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


от saykor (8845 точки)

0
Имах предвид този с надпис "ябълки и портокали" :) Редактирах си отговора.

от neutrino (3376 точки)


1

Ето ви още един въпрос:

Как можете да разрежете една торта на 8 равни части с 3 прави разреза? :)


от ivaylo.kenov (30760 точки)


1
Разделяме с 2 разреза тортата на 4 еднакви парчета, след това нареждаме парчетата едно след друго и ги разрезваме по средата. След като никъде не се казва, че нямаме право да местим парчетата, които сме отрязали вече, значи може да ги местим. Та това става ли като решение ?

от mbelev (2312 точки)

0
За единия разрез ще трябва доста голям нож :)

от neutrino (3376 точки)



0

Задача 2. Кашони с ябълки и портокали

Има две възможности за реда на залепените етикети:

  • кашон с портокали --> 1. я (ябълки); 2. яп (ябълки и портокали)
  • кашон с ябълки --> 1. яп; 2. п
  • кашон с ябълки и портокали --> 1. п; 2. я

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

  1. я-яп-п
  2. яп-п-я

Определянето на плодовете от кашона, от който сме извадили плода, е ключово. Разглеждам 8 възможности:

  1. подредба: я-яп-п --> плод я, етикет яп --> кашон с ябълки
  2. подредба: я-яп-п --> плод я, етикет п --> кашон с ябълки и портокали
  3. подредба: я-яп-п --> плод п, етикет я --> кашон с портокали
  4. подредба: я-яп-п --> плод п, етикет п --> кашон с ябълки и портокали
  5. подредба: яп-п-я --> плод я, етикет п --> кашон с ябълки
  6. подредба: яп-п-я --> плод я, етикет я --> кашон с ябълки и портокали
  7. подредба: яп-п-я --> плод п, етикет яп --> кашон с портокали
  8. подредба: яп-п-я --> плод п, етикет я --> кашон с ябълки и портокали


от lnikod4s (6538 точки)


0
Не разбирам, как определяме какво има в кашона, ако от кашон с етикет "ябълки", изтеглим портокал?

от neutrino (3376 точки)


7

Задачата с монетите: Разделяме произволно монетите на две купчини - едната с 90, другата с 10 монети. След това обръщаме наобратно всички монети от купчината с 10-те - няма нужда да ги опипваме или гледаме, обръщаме наред. Така там всички монети с "ези", ще станат "тура", а тези с "тура" - "ези". Така в двете купчини, ще има равен брой монети с "ези" нагоре.

Ето формално доказателство: Нека с k означим броя на монетите в едната купчина, а с x броя на монетите с "ези" в тази купчина. Тогава броя на монетите "ези" в другата купчина е (10 - x). Ако обърнем наопаки всички монети в първата купчина, тогава там ще има (k - x) монети с "ези" нагоре (колкото са били преди "тура"). Ние искаме от двете страни да има равен брой "ези", т.е.

k - x = 10 - x

=> k = 10.


от neutrino (3376 точки)


0
Изпревари ме, докато пишех оплетени обяснения :)

от topalkata (6442 точки)

0
супер хитро, Браво ! :)

от a.sideriss (450 точки)



1

По задачата с монетите - би трябвало да стане по следния начин:

Вземаме една произволна монета и я обръщаме - така имаме купчина от 99 монети и "купчина" от 1 монета. Ако монетата първоначално е била "ези", в купчината с 99 монети остават 9 ези и 90 тура, в другата (след като вече сме обърнали монетата) имаме 1 тура - разликата между "ези" монетите в двете купчини е 9 - 9 в едната и 0 в другата. Ако първоначално взетата монета е била тура, след като сме я обърнали, е станала ези - разликата пак е 9 (10 в голямата купчина и 1 в малката).

По същия начин, след като вземем втора монета и я обърнем, във всички възможни случаи, разликата между броя на монетите ези в двете купчини става 8.

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


от topalkata (6442 точки)


-1
 Нямате право нито да ги гледате, нито да ги опипвате.   :)))

от a.sideriss (450 точки)

0
Дали ще вземем 10 монети една по една и ще ги обръщаме или ще ги вземем наведнъж и ще ги обърнем логически е едно и също. В общи линии сте разсъждавали еднакво с neutrino. Браво и на двама ви!



3
Имате две въжета с различна дължина, които горят неравномерно за един час.Естествено вие имате запалка.Как може да измерите 15 минути?



3
Палим едното въже от двата края. Така със сигурност ще изгори за 30 минути. Едновременно с това палим и второто въже, но само в единия край. Когато първото изгори (което ще е точно след 30 минути), палим и другия край на второто въже, когато и то изгори цялото, значи са минали 15 мин.

от mbelev (2312 точки)


3
Една компания разполага с десен машини, произвеждащи златни монети. Една от машините произвежда монети, които са с 1 грам по-леки от останалите. Как с едно измерване можете да определите коя от машините произвежда дефектните монети?

от M.Yankov (1418 точки)


4
Да кажеме, че си номерираме машините от 1 до 10. От всяка машина взимаме по толкова монети, колкото е номера на машината. От първата - 1 монета, от втората - 2 монети и т.н. Да кажем, че теглото на една монета е X, можем да си пресметнем теглото на всички взети монети, което ще е (1 + 2 + ... + 10) * , ако всички монети са били истински. Сега вече при слагане на везната всички взети монети от машините лесно можем да презеним коя машина прави по - леки монети. Ако разликата с общото тегло на всички монети е 1, значи първата машина прави по - леките монети, ако е 2 - втората и т.н.

от mbelev (2312 точки)

1
Може да се реши и без да знаем "стандартното" тегло на монетите, ако имаме везна. От едната страна слагаме по 1,2,3,4,5 монети от първите пет машини, от другата - също по толкова от другите пет. По разликата в теглото ще разберем от коя машина е дефектната монета. Ако примерно едната група монети е с 2 грама по-лека от другата, значи дефектната машина е в тази група, и по-точно тази, от която сме взели 2 монети.

от neutrino (3376 точки)



0
По задачата с кашоните: бъркаме в един от кашоните и опипваме плодовете. Ако са само от един вид, тогава знаем какъв етикет да сложим. Останалите се подреждат автоматично. Ако са смесени ябълки и портокали, тогава също знаем съдържанието и съответния етикет.



1
Това решение изисква да опипаш абсолютно всички плодове в кашона, който си избрал. Ако кашона е пълен до горе, не знам как ще може да разделиш плодовете на проверени и непроверени, за да проверяваш докато не останат непроверени.

от neutrino (3376 точки)


1

Много интересна дискусия се получи тук :) Да споделя и аз една интересна задачка-закачка на която попаднах тези дни:

Албърт и Бернард тъкмо се запознали с Шерил и искали да разберат кога е рожденият ѝ ден. Шерил им дала списък с 10 възможни дати:

15 май, 16 май, 19 май
17 юни, 18 юни
14 юли, 16 юли
14 август, 15 август и 17 август

След това Шерил казала на Алберт месеца, в който е родена, а на Бернард - деня.

„Не знам кога е рожденият ден на Шерил, но знам, че и Бернард не знае“, заявил Алберт.

„Първоначално не знаех кога е рожденият ден на Шерил, но вече знам“, казал Бернард.

„Тогава и аз знам кога е родена“, заявил отново Алберт.

Кога е родена Шерил?


от lowry (275 точки)


1

Ако Шерил е казала на Бернард като ден 18 или 19, то той ще знае директно датата, но след като при първото изказване Алберт казва, че не знае кога е рождения ден на Шерил, значи май и юни отпадат като месеци.

След изказването на Алберт, Бернард знае рожденната дата, това значи, че със сигурност не е 14 юли и 14 август, от където остават - 16 юли, 15 август и 17 август.

От последното казано от Алберт, че вече и той знае кога е родена означава, че рожденната дата е 16 юли.

Отговор: 16 юли.


от mbelev (2312 точки)