|
|
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
В ветке по SQL вычитал. Тест дали при приеме на работу (для фоксистов тоже подойдет): Kochegra"Имеется набор чисел: 2, 3, 4, 5, 6, 8, 25, 37, 50, 58, 70, 150, 370, 500, 760, 900 Необходимо распределить эти числа на 4 группы по 4 числа и расставить арифметические знаки так, чтобы внутри групп было верно равенство: A<знак>B = C <знак>D, где <знак> - *, /, +, - Решение желательно представить в виде SQL – скрипта." Зацепило Порешал на фоксовом SQL с небольшими добавками чисто фокса для ускорения. Получилось. Кому интересно в форуме по SQL третий день решают уже все по полочкам разложили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 14:53 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Уже отписался в том топике: смысл в том, что остается всего три проверки, а все чет такие многоярусные ямбы пишут ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 15:57 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Dima TВ ветке по SQL вычитал. Тест дали при приеме на работу (для фоксистов тоже подойдет): Kochegra"Имеется набор чисел: 2, 3, 4, 5, 6, 8, 25, 37, 50, 58, 70, 150, 370, 500, 760, 900 Необходимо распределить эти числа на 4 группы по 4 числа и расставить арифметические знаки так, чтобы внутри групп было верно равенство: A<знак>B = C <знак>D, где <знак> - *, /, +, - Решение желательно представить в виде SQL – скрипта." Зацепило Порешал на фоксовом SQL с небольшими добавками чисто фокса для ускорения. Получилось. Кому интересно в форуме по SQL третий день решают уже все по полочкам разложили. 1. Получил полное пересечение верных равенств - 646 верных равенств. 2. Выкинул к черту равенства, содержащие один и тот же набор цифр (а то выборки долго ходят) - 86 равенств. 3. Получил непересекающиеся наборы из четырех равенств без учета перестановок - 72 набора. 4. Выкинул к черту наборы, содержащие перестановки из равенств - 3 решения. Итого существует 3 набора, без учета значных перестановок (выкинутых в пункте 2). Доказать не могу, но кажись всего 3 набора должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 09:03 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
У меня получилось 646 равенств ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 09:49 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Мое решение: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 10:08 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
GoshaSУ меня получилось 646 равенств 646 равенств. Это часть задачи: Получить размещение 16 чисел по 4 местам и 4 знаков по 2 местам, чтобы соблюдались условия задачи. А задача на самом деле глубже. Нужно получить набор из четырех равенств, то есть размещение 16 чисел по 16 местам и 4 знаков по 8 местам, по условиям задачи. В лоб одним селектом это не решается, так как количество вычислений = 16! * 8! / 4! = 35150287011840000 перестановок для проверки условия. Поэтому для начала находятся все возможные равенства: 16! / 12! + 4! / 2! = 524160 из них выбираются только верные. Остается 646 равенств. После того, как я отбросил равенства, содержащие одинаковые знаки на одинаковых местах и одинаковый набор цифр, их остается 181. Затем из 181 равенства нужно собрать наборы по 4 равенства, чтобы все цифры и знаки были разные. Таких наборов 64. Если ставить условие, чтобы все цифры были разные, а на знаки пофигу, то таких наборов - 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 13:56 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
[quot Kruchinin Pahan]16! / 12! + 4! / 2! = 524160[quot] Туплю: 16! / 12! * 4! / 2! = 524160 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 13:59 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
181 -о выражение и одним запросом можно сделать, не сильно его модифицировав. Однако убрать еще повторяющиеся циферы, это уже сложней, надо голову включать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 14:59 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Чет не то делаю :) в итоге только одно уровнение осталось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 15:39 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Ура, сделал, уложился в 130 строк кода, две ХР, для красивости и уменьшения кода. результат 42 варианта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 18:10 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
В общем получилось вот так: Конечно не совсем красиво, но все же Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2007, 18:43 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
И это тест при приеме на работу ? Интересно какая имбицильская фирма так трахает мозг кандидатам. Сразу же видно было, что задача не привиальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 09:20 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
ДекораторИ это тест при приеме на работу ? Интересно какая имбицильская фирма так трахает мозг кандидатам. Сразу же видно было, что задача не привиальная. А как трахают мозг имбицильские кандитаты? которых берут на работу со слов "это знаю, это умею и даже это могу", потом выясняется что знает, умеет и может, но процентов на 20 от обозначенного в резюме. В итоге расстаются в течении испытательного срока - время потеряно, ЗП потрачена. Для поиска хорошего разработчика вполне нормальная задачка для теста. Не требует специфичных знаний, код решения не большой, по коду видно как человек мыслит и пишет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 14:31 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Kruchinin Pahan1. Получил полное пересечение верных равенств - 646 верных равенств. 2. Выкинул к черту равенства, содержащие один и тот же набор цифр (а то выборки долго ходят) - 86 равенств. 3. Получил непересекающиеся наборы из четырех равенств без учета перестановок - 72 набора. 4. Выкинул к черту наборы, содержащие перестановки из равенств - 3 решения. Итого существует 3 набора, без учета значных перестановок (выкинутых в пункте 2). Доказать не могу, но кажись всего 3 набора должно быть. У меня 36 получилось. Изначально выкинул разный порядок уравнений и дубли A+B => B+A, A*B => B*A остались дубли типа A+B=С+D => С+D=A+B Про 3 набора тоже доказывать не стал, но думаю делать надо так: 1. По каждому результату упорядочить по возрастанию внутри каждого уравнения: "150*2=370-70" => {2,70,150,370} 2. упорядочить наборы по возрастанию первого элемента 3. select distinct ... Например: 150*2=370-70 25*4=500/5 37+58=760/8 3*50=900/6 1. {2,70,150,370} {4, 5, 25, 500} {8, 37, 58, 760} {3, 6, 50, 900} 2. {2,70,150,370} {3, 6, 50, 900} {4, 5, 25, 500} {8, 37, 58, 760} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 14:47 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
10 лет работал фокс-программистом.. теперь с ораклом пришлось подружиться.. в команде правда не работал - писал приложения сам под заказ... проблем не было никогда... а тут такая задача - нунах..... не решу, и хвастаться не буду... не решу и все... даже не вижу применения такому...... че я имбицил по вашему что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 15:32 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
ну его нафиг...а тут такая задача - нунах..... не решу, и хвастаться не буду... не решу и все... даже не вижу применения такому...... че я имбицил по вашему что ли? Раз сознался что не решишь, то - нет Представь себя на месте работодателя: есть вакансия разработчика с серьезными требованиями и соответственно с зп выше среднего, то почему бы не потестить кандидатов? если с точки зрения кандидата зп тоже выше среднего, то он будет решать. Никто же из студентов не возмущается что вступительные экзамены сдавать надо. Сам один раз в такую ситуацию попадал. Пришел на собеседование в одну контору занимающуюся разработкой софта. Думал как везде за жизнь погоняю - где работал, что наработал. А они как начали с ходу грузить типа: "вот кусок кода - в чем подвох?" и т.д. до похожей задачи дело не дошло. Не взяли туда меня. Я правда даже рад этому сегодня :) PS задача не такая уж и сложная, я пару часов потратил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 15:56 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Dima T Сам один раз в такую ситуацию попадал. Пришел на собеседование в одну контору занимающуюся разработкой софта. Думал как везде за жизнь погоняю - где работал, что наработал. А они как начали с ходу грузить типа: "вот кусок кода - в чем подвох?" и т.д. до похожей задачи дело не дошло. Не взяли туда меня. Я правда даже рад этому сегодня :) PS задача не такая уж и сложная, я пару часов потратил. а ну если на слабо да дома.. дак может тоже решу за несколько часов.. надеюсь. но на собеседовании даже бы и не пытался влоб решить задачу, которую, признаюсь раньше даже никогда не видел. Вот такой я честный млин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2007, 19:00 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
GoshaSУра, сделал, уложился в 130 строк кода, две ХР, для красивости и уменьшения кода. результат 42 варианта. А не выбросил ли ты лишнего? У меня получилось 197 вариантов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. На вскидку, никаких дублей и повторов не видно... От перемены мест слагаемых не меняется только результат суммирования и умножения. Поэтому в таких выражениях оставляю только те, где первое слагаемое меньше второго. От дублей по разные стороны равенства "спасаюсь" явным указанием, что первое число первого равенства должно быть меньше первого числа второго равенства. В этом случае выражения просто не могут "поменяться местами" Ну, и DISTINCT отсекает явные повторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 01:55 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
Теперь, разбиваем все полученные комбинации на четверки. Несколько грубовато, но быстро. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Получилось 141 уникальная комбинация. Последнее поле - это для наглядного сравнения знаков. Я не понял условие про знаки. Имелось в виду, что в каждой четверке пара знаков одинаковая? Так этого не получается. Насчет 3 вариантов, тоже не сходится. Вроде бы, дублей в 141 комбинации не наблюдается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 02:52 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
ВладимирМ... Получилось 141 уникальная комбинация. Последнее поле - это для наглядного сравнения знаков. Я не понял условие про знаки. Имелось в виду, что в каждой четверке пара знаков одинаковая? Так этого не получается. Насчет 3 вариантов, тоже не сходится. Вроде бы, дублей в 141 комбинации не наблюдается... На счет доказательства 3-х вариантов наборов я выше писал. Надо знаки выкинуть и упорядочить наборы чисел. В условии достаточно найти одно решение, поэтому в задаче не уточняется что считать повторами: 1. Перестановка уравнений местами 2. Перестановка чисел в части уравнения (A+B => B+A, A*B => B*A) 3. Перестановка частей уравнения местами (A+B=С+D => С+D=A+B) 4. Перестановка по законам арифметики (A+B=С+D => A-D=С-B, A*B=С/D => A*D=С/B и т.д.) Я при решении сразу учел п.1 и 2 получилось 36 вариантов. Если ввести правило что повтор - это одинаковое разбиение чисел на четверки, то варианта ответа три: Код: plaintext 1. 2. Функция сортировки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 09:35 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
ВладимирМВроде бы, дублей в 141 комбинации не наблюдается... Да, получается 141 набор формул. Но задача состоит в том чтобы выстроить эти формулы таким образом: формула1, формула2, формула3, формула4 однако требуется, чтобы в формулах небыло повторяющихся чисел. Т.е. из заданого набора чисел сделать четыре уравнения, в каждом их которых по четыре числа, каждое число в наборе фигурирует один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 10:56 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
По итогам решения созрела мысль что надо изначально искать эти три набора. Убил еще два часа Я в SQL-форуме отписался что задача чисто алгоритмическая. Порешал с циклами и массивами с целью найти все наборы. Получилось 3 штуки. Код прилагается. Код мог бы быть короче, но как оказалось фокс не берет такую конструкцию: Код: plaintext 1. Вариант с select`ами работает заметно быстрее 8 и 58 сек. соответственно Но если бы этот вариант написать на Си с грамотным использованием указателей, то может и быстрее 8 сек. получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 13:16 |
|
||
|
Интересная задачка для проверки программиста СУБД
|
|||
|---|---|---|---|
|
#18+
GoshaS ВладимирМВроде бы, дублей в 141 комбинации не наблюдается... Да, получается 141 набор формул. Но задача состоит в том чтобы выстроить эти формулы таким образом: формула1, формула2, формула3, формула4 однако требуется, чтобы в формулах небыло повторяющихся чисел. Т.е. из заданого набора чисел сделать четыре уравнения, в каждом их которых по четыре числа, каждое число в наборе фигурирует один раз. Так повторов и нет. Вы пробовали выполнить приведенный код? Пробегитесь глазами по результату. Другой вопрос, следует ли при одной и той же комбинации чисел, но при разных комбинациях знаков считать полученные формулы повтором? Ну, например: 2*150 = 6 * 50 2/ 6 = 50/150 Это одна и та же формула или все-таки разные? Кстати, что-то на разных машинах второй запрос у меня дает разное количество записей. На одной 42, а на другой 141. На обоих VFP9SP1. Надо будет посмотреть, в чем дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2007, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34818848&tid=1588743]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 394ms |

| 0 / 0 |
