5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
|
||||||
1 | ||||||
Определить, есть ли в заданном числе одинаковые цифры09.02.2014, 16:46. Показов 17913. Ответов 29
Метки нет (Все метки)
Всем доброго времени суток, вообщем: задали задание, пользователь вводит 3-х значное число и программа определяет, есть ли в этом числе одинаковые ЦИФРЫ.
Вот мой вариант решения
1
|
09.02.2014, 16:46 | |
Ответы с готовыми решениями:
29
Определить, есть ли в числе 2 одинаковые цифры Определить, есть ли в числе одинаковые цифры Определить есть ли одинаковые цифры в трехзначном числе Определить, есть ли в трехзначном числе одинаковые цифры |
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
|
|
09.02.2014, 17:56 [ТС] | 4 |
0
|
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
|
|
09.02.2014, 18:27 [ТС] | 7 |
0
|
Master of Orion
|
|
09.02.2014, 18:31 | 9 |
kenny69, во-первых в задании четко сказано, что их три.
Во-вторых ваш вариант не проверяет, являются ли эти символы цифрами. В-третьих он намного медленнее и попахивает индусским (см. лурк одноименная статья - там почти дословно ваш вариант ) И напоследок, вам нужно провериться на опасный синдром абстрактно-ориентированного программиста
0
|
burning1ife
|
|
09.02.2014, 18:41 | 10 |
у него тоже не проверяет, как и не проверяет, что их 3.
Тем более, что как бы дано, что это число и что трехзначное. человек просил проще - я дал проще. Никто и не говорил, что код быстрее, но он универсальнее(хотя, может быть, это и не нужно в данном контексте).
0
|
Master of Orion
|
|
09.02.2014, 18:48 | 11 |
kenny69, у него вылетит исключение при неправильной строке, у вас выдаст ответ, причем с какой-то долей вероятности, что там есть одинаковые цифры. Да, можно доработать, и тогда будет и это, но смысл? Я же вам статью оставил:
Пусть это элементарная учебная задача, но если уж человек сделал правильно, надо его поощрить и сказать, что он сделал наилучшим образом (я так считаю). Если требуется решить задачу Х, нужно решать задачу Х, даже если есть задачу Y и Z, которые могут появится в будущем. Если они появились - делаем рефакторинг и добавляем новые фичи. Это - оптимальный вариант, который гарантирует, что свое время вы потратите с пользой. Излишняя гибкость тоже антипаттерн.
1
|
burning1ife
|
|
09.02.2014, 18:55 | 12 |
возможно, отчасти он у меня и есть, но я бы еще поспорил, что хуже абстрактно ориентированный или конкретно ориентированный в самых крайних проявлениях. Я считаю, что надо придерживаться золотой середины. И до полностью абстрактно-ориентированного программиста мне ой как далеко, уж поверьте.
Добавлено через 5 минут Я в своем ответе не ставил перед собой задачу написать полный исходник, а лишь быстро набросал суть короткого варианта решения. Про все это я в курсе. Но здесь гибкость не идет за счет усложнения кода (хотя да, не более оптимальный с точки зрения скорости), а скорее наоборот. Добавлено через 1 минуту И изначально при написании кода я про гибкость и не думал. Цель была написать короче - понятнее.
0
|
Master of Orion
|
|||||||||||
09.02.2014, 19:05 | 13 | ||||||||||
kenny69, ну просто один из классических приемов индусского программирования считается проверка на то, что число принадлежит интервалу от 0 до 9 не таким кодом
Хотя если для больших чисел, то конечно да, придется думать как сделать. Но имо вариант ТСа наилучший. Смысл в том, что нельзя использовать LINQ в учебных задачах. А значит и distinct тут нельзя использовать. А без него все получится печально
0
|
burning1ife
|
|
09.02.2014, 19:17 | 14 |
я аналогии не вижу, если честно, вообще.
Сказано, что вводится трехзначное число, т.е. число трехзначное уже по умолч. есть (если нет, то добавить проверку - одна строка), осталось проверить есть ли повторяющиеся символы. Я, кстати, не сказал, что он хуже. Он быстрее, и значит уже лучше. Человек попросил покороче записать - я показал как. Все. Про linq не было ни слова, нельзя только массивы (хотя еще одно решение было бы только через них, которое я сразу и хотел предложить).
0
|
5 / 5 / 0
Регистрация: 29.10.2013
Сообщений: 155
|
|
09.02.2014, 19:23 [ТС] | 15 |
kenny69, однако спасибо за ваш ответ, так же
0
|
burning1ife
|
||||||
09.02.2014, 19:29 | 16 | |||||
Кстати, вот этот алгоритм в разы быстрее, чем у ТС (единственное, что строка это и есть массив символов)
2. мой "индуский" в одну строчку 3. мой последний.
1
|
Master of Orion
|
|
09.02.2014, 19:38 | 18 |
kenny69, не знаю, можете поиском воспользоваться, всегда считал linq в образовательных целях - злом.
Последний вариант неплох, если нужно оптимизировать кусок кода, который тормозит. Хотя наглядность несколько страдает. Предлагаю мир на этом
0
|
burning1ife
|
|
09.02.2014, 20:34 | 19 |
Вот и я про то же: наглядность. Первый метод хоть и индуский, зато наглядный, как по мне.
А мы и не ссорились, истина ведь всегда рождается в споре. И на некоторые вещи полезно взглянуть с другой точки зрения. Тем более, что с вашей точкой зрения я отчасти согласен.
0
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||||
10.02.2014, 12:05 | 20 | |||||
1
|
10.02.2014, 12:05 | |
10.02.2014, 12:05 | |
Помогаю со студенческими работами здесь
20
Определить есть ли среди в трехзначном числе одинаковые цифры. Определить, есть ли в числе N рядом стоящие одинаковые цифры Определить, есть ли в числе рядом стоящие одинаковые цифры Определить, есть ли в заданном четырехзначном числе а цифры 5 и 8 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |