1. Шёпот теней 1767 31.01.13 12:27 Сейчас в теме

Конкурс на "Лучший вопрос" и далее "Лучший ответ"

Конкурс:

1 Вопрос: "Ход конём" см. комментарий (42) ... Решения: (49)
2 Вопрос: "Найдите кратчайший путь коня между двумя заданными клетками на шахматной доске." см. комментарий (76) Решения: (98)
3. Вопрос: Найти максимальное вхождение. см. комментарий (107)

Благодарность за финансовую (стартмани) поддержку проекта anig99, AnryMc, DitriX, juntatalor, Bukaska, alexk-is, poligraff !


Конкурс:

1. Задайте "лучший вопрос" по 1С
2. Ответьте на "лучший вопрос"


Ответ должен быть оформлен в виде обработки.
Обработку выствить в своих "Публикациях" указать ссылку на данный "Конкурс", здесь указать ссылку на свою "публикацию".

с уважением "Шёпот теней" в миру Александр Шишкин ...

"Лучший" - выбирается обсуждением !
"Лучшим" - приз "мани ИС" !


... вот ...
Вознаграждение за ответ
Показать полностью
Найденные решения
252. m..adm 23.11.15 02:24 Сейчас в теме
Мои обработки по конкурсу:
По 1 и 2 заданию: http://infostart.ru/public/421101/
по 3-му заданию: http://infostart.ru/public/421107/

Подходит реализация?
Остальные ответы
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
56. KontoraB 27.02.13 09:45 Сейчас в теме
Говорят тут деньги раздают ? Я уж сразу - как по Остапу Бендеру
Дядечки а дядечки - дайте миллион ;)
57. Шёпот теней 1767 27.02.13 10:28 Сейчас в теме
это сладкое слово - "халява" ...
58. serg1 1 27.02.13 12:19 Сейчас в теме
Что то прочитав, я так и не понял за , что тут деньги дают?
59. Шёпот теней 1767 05.03.13 09:56 Сейчас в теме
60. DitriX 1812 14.03.13 01:48 Сейчас в теме
Вообще тема интересная.
Я например люблю лазить вот сюда http://www.braingames.ru/ и тут ломать свой моск.
Вот например одна клевая задачка оттуда:

Как поменять местами значения двух числовых переменных без использования дополнительных переменных и/или памяти? В используемом языке нет оператора обмена значениями (вроде XCHG ассемблера).
Шёпот теней; +1 Ответить
61. Шёпот теней 1767 15.03.13 10:07 Сейчас в теме
(60) нуууу, это просто - через взаимно-обратное действие ...

например:

А = 2;
Б = 3;

А = 2 + Б = 5;
Б = А - Б = 5 - 3 = 2;
А = А - Б = 5 - 2 = 3;

...
62. DitriX 1812 15.03.13 11:44 Сейчас в теме
(61) хе. Ну это уровень детского сада.
А вот такую задачку:
Шли два мегамозга, работающие малярами, навстречу — еще двое. У каждого руки испачканы своей краской, и никому не хочется пачкаться чужой. Мегамозги хотят поздороваться друг с другом (каждый из первой пары с каждым из второй и наоборот) рукопожатием, но на всех есть только две перчатки. Как им можно решить эту проблему? Перчатки не выворачиваются.
Шёпот теней; +1 Ответить
69. nikolayD 5 19.03.13 10:52 Сейчас в теме
(62) DitriX, Ответ очевиден - никак, т.к. в перчатках нормальные мужики не здороваются, считается плохим тоном. Только девушки здороваются, но это не является обязательным. Вариант - запястьем поздороваться или тем, что не испачкано. Можно просто зигу кинуть, хе :))
63. lefthander 15.03.13 12:42 Сейчас в теме
Из того же детского сада, только самой младшей группы :)
сорри, решение - натянуть перчатки одну поверх другой на руку одного мегамозга.
Шёпот теней; +1 Ответить
64. DitriX 1812 17.03.13 18:32 Сейчас в теме
(63) а что это даст? как второй со всеми поздоровается?

Каждый из первой пары должен поздороваться с каждым из второй пары и наоборот.
Шёпот теней; +1 Ответить
65. lefthander 17.03.13 20:21 Сейчас в теме
Ну как же, мне казалось это очевидным.
Сначала один здоровается с двумя (у перчатки две стороны), затем перчатка снимается и надевается на руку второго (внешняя перчатка внутри чистая, но имеет снаружи цвета встречных) и он здоровается с встречными повторно перчаткой с цветами встречных.

Подражая ШТ ... ВоТ гДе тО таК... я ... я так думаю.

Вот местогде мне нравится бывать.
Шёпот теней; +1 Ответить
66. Шёпот теней 1767 18.03.13 15:49 Сейчас в теме
спАсибо DitriX за спонсорский взнос ...
67. GalinaK 19.03.13 10:42 Сейчас в теме
цветов краски всего два? "У каждого руки испачканы своей краской" - или четыре?
если всего два цвета, то одна пара мегамозгов(с одним цветом) надевает перчатки и здоровается с другой парой по очереди...
68. GalinaK 19.03.13 10:43 Сейчас в теме
5 коп = sqrt(25 коп) = sqrt (1/4 руб) = 1/2 руб = 50 коп.
70. nikolayD 5 19.03.13 10:54 Сейчас в теме
(68) GalinaK, Есть такая система- СИ. Что бы считать корень из рубля, надо ещё понять, а какой в этом физический смысл? :)
Единицы измерения так не переводят.
75. GalinaK 19.03.13 18:19 Сейчас в теме
(70) nikolayD, (71) Шёпот теней, это была шуточная задачка... извините, не предупредила
72. Шёпот теней 1767 19.03.13 11:41 Сейчас в теме
(68) ... кто на ком стоЯл ? ... ((((
71. Шёпот теней 1767 19.03.13 11:30 Сейчас в теме
когда НЕможется не стоит и тужится ... (((
73. AnryMc 723 19.03.13 11:47 Сейчас в теме
"Знание некоторых принципов, легко возмещает незнание многих фактов"
76. Шёпот теней 1767 22.03.13 08:11 Сейчас в теме
Задача 2: Найдите кратчайший путь коня между двумя заданными клетками на шахматной доске.

Программа должна вывести кратчайший путь коня, начинающийся и заканчивающийся в данных точках. Необходимо вывести все клетки, через которые проходит конь в порядке прохождения. Если коротких маршрутов несколько необходимо вывести все возможные.

... вот ...
118. ildarovich 7022 28.03.13 18:15 Сейчас в теме
(76) Вот мое решение (прилагается обработка). Всего 30 строк. Перечисляются все кратчайшие пути.
Функция Спираль(А, Б, Круг = 0)Экспорт
	Поле = НоваяТаблицаЗначений("Х, У, Круг, Связи");
	Для К = 0 По 63 Цикл 
		ЗаполнитьЗначенияСвойств(Поле.Добавить(), Новый Структура("Х, У, Круг, Связи", Цел(К / 8), К % 8, (К = А) - 1, Новый Массив))
	КонецЦикла;
	Пока Поле[Б].Круг < 0 Цикл 
		Целина = Поле.НайтиСтроки(Новый Структура("Круг", -1));
		Трек = Поле.НайтиСтроки(Новый Структура("Круг", Круг));
		Для Каждого С Из Целина Цикл
			Для Каждого К Из Трек Цикл
				Если (С.Х - К.Х) * (С.Х - К.Х) + (С.У - К.У) * (С.У - К.У) = 5 Тогда
					С.Круг = Круг + 1;
					С.Связи.Добавить(К.Х * 8 + К.У)
				КонецЕсли
			КонецЦикла
		КонецЦикла;
		Круг = Круг + 1
	КонецЦикла;
	Возврат Поле
КонецФункции
Процедура Спуск(Б, Поле, Знач Путь = "") Экспорт
	Путь = Сред("abcdefgh", Б / 8 + 1, 1) + (Б % 8 + 1) + " " + Путь;
	Если Поле[Б].Связи.Количество() = 0 Тогда
		ЗаполнитьЗначенияСвойств(Пути.Добавить(), Новый Структура("Путь", Путь))
	Иначе
		Для Каждого К Из Поле[Б].Связи Цикл
			Спуск(К, Поле, Путь)
		КонецЦикла
	КонецЕсли
КонецПроцедуры
Показать
Первая функция размечает доску, вторая рекурсивно перечисляет пути из конечной точки.
Разметка идет "по спирали". Номер витка (круга) соответствует минимальному расстоянию от начальной точки. На каждом витке неразмеченные клетки просматриваются в паре с каждой клеткой последнего витка. Если расстояние (сумма квадратов разности координат равно пяти) соответствует шагу коня клетка включается в следующий виток (круг). И так пока в круг не попадет конечная клетка. В каждой клетке запоминается массив клеток предыдущего витка, из которых попадают в текущую. Это дает возможность рекурсивно раскрутить пути до начальной точке "при спуске".
В отличие от предыдущего решения здесь не строится граф и не сортируются пути, так как это излишне в данной задаче.
Прикрепленные файлы:
ПоискПутей.erf
titakovserg; Шёпот теней; max210; +3 Ответить
120. max210 28.03.13 21:12 Сейчас в теме
(118) ildarovich, спасибо. буду разбираться. интерестно
121. Шёпот теней 1767 29.03.13 08:08 Сейчас в теме
(118) ... спАсиБО за решение ... !!!

отсылаю вам предварительно - 10 мани ...

п.с.0. не видно количество и пути правильных ходов ... укажите координаты доски, непонятно как считать, что смотреть ... Например где "цифры" и "буквы" ?

У Шахматной доски отсчёт начинается с нижнего левого угла и он чёрный ...

п.с.1. минимализация хорошо но хочется и наглядности ...

...
77. Shilov 4 22.03.13 09:50 Сейчас в теме
"Необходимо вывести все возможные маршруты". Но ведь маршрутов бесконечно много.
79. Шёпот теней 1767 22.03.13 11:05 Сейчас в теме
(77), (78), спАсибо. исправил.

п.с. вывести все короткие маршруты
78. Shilov 4 22.03.13 09:58 Сейчас в теме
Точнее если есть возможность дойти до точки назначения, то маршрутов бесконечно много.
80. Shilov 4 22.03.13 13:12 Сейчас в теме
Сделал обработку. Единственное пока отображается только 1 самый короткий маршрут.
Добавил от себя несколько фишек:
1.Произвольный размер поля
2.Вычисление на каждом шаге расстояния, которое осталось преодолеть коню :)

http://infostart.ru/public/179200/
81. Шёпот теней 1767 22.03.13 13:50 Сейчас в теме
(80)... задал: 1-5, 8-6, программа дала неверный ответ ...

... спасибо за активность ...
82. Shilov 4 22.03.13 14:04 Сейчас в теме
Вот блин. Действительно.. Оказывается дойти до этой клетки можно. Да уж, жаль нет под рукой шахматного поля. Оказывается метод постоянного максимально приближения к цели не катит, по крайней мере когда конечная точка близка..
83. Shilov 4 22.03.13 14:05 Сейчас в теме
буду переделывать.
AnryMc; Шёпот теней; +2 Ответить
84. Шёпот теней 1767 22.03.13 14:12 Сейчас в теме
(83) задавал 1-1, 8-6 ... ушло в раздумье ...

требуется оптимизация в виде запомниная ходов, чтобы не повторять ходы несколько раз как удачные так и неудачные(ходов на самом деле не очень много) ...

... вот ...
85. Shilov 4 22.03.13 14:33 Сейчас в теме
(84) Шёпот теней, 1-1 , 8-6 - xz. вроде бы в этом случае все норм срабатывает)
86. Shilov 4 22.03.13 14:34 Сейчас в теме
(84) Шёпот теней, хотя нет.. если размер поля 8 на 8 сделать)))
87. max210 23.03.13 14:28 Сейчас в теме
нужна помощь в обработке ход конем. хочу понять как делать. но не знаю с чего начать. я начинающий программист. если у нет желания помочь. не прошу решить. а помочь. хочу разобраться и понять.
Шёпот теней; +1 Ответить
88. AnryMc 723 23.03.13 14:34 Сейчас в теме
(87) max210,
нужна помощь

противоречит
хочу сам разобраться и понять


Логика?
94. Шёпот теней 1767 25.03.13 10:49 Сейчас в теме
(87)
1. начните с первого задания см.(42)
2. почитайте в инете ... там есть решения некоторых задач с описанием как математически описать шахматную доску и другие физические обЪекты

... вот ...

п.с. ничего сложного нет ... например тут: http://is.ifmo.ru/?i0=works&i1=knight ... вопрос только знаний языков программирования ... но и теоритеческие знания то же помогут !
89. max210 23.03.13 14:40 Сейчас в теме
хочу сам разобраться - это для тех кто хочет написать никто тебе решать не будет.
нужны советы с чего начать и т.д.
нужна помощь, потому что не занимался таким. не просто хочу механически все сделать, а и во всем разобраться.

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

что-то не нравится не пиши, не трать свое время.
90. Shilov 4 25.03.13 08:48 Сейчас в теме
(89) max210, Ну изначально здесь надо инициализировать поле. Шахматную доску можно представить в виде двумерной матрицы 8 на 8. Но я для описания шахматного поля просто создал две переменных Xmax и Ymax, по-умолчанию значения этих переменных равны 8, но можно и изменить, если хочется нестандартное поле.
После чего надо создать ещё один массив, где мы опишем возможные ходы конём. Я это делал таким образом:
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("hodX", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("hodY", Новый ОписаниеТипов("Число"));
Стр = ТЗ.Добавить();
Стр.hodX = 2;
Стр.hodY = 1;
Стр = ТЗ.Добавить();
Стр.hodX = -2;
Стр.hodY = 1;
Стр = ТЗ.Добавить();
Стр.hodX = 2;
Стр.hodY = -1;
Стр = ТЗ.Добавить();
Стр.hodX = -2;
Стр.hodY = -1;
Стр = ТЗ.Добавить();
Стр.hodX = 1;
Стр.hodY = 2;
Стр = ТЗ.Добавить();
Стр.hodX = 1;
Стр.hodY = -2;
Стр = ТЗ.Добавить();
Стр.hodX = -1;
Стр.hodY = 2;
Стр = ТЗ.Добавить();
Стр.hodX = -1;
Стр.hodY = -2;
Ну тут вариатов много.
Стр.hodX = 2;
Стр.hodY = 1; - означает что конь может передвинуться по координате x на 2 клетки и по координате y на 1 клетку.

Начальные координаты и конечные я представляю в виде 2 пар переменных:
Координата1_X
Координата2_X
Координата1_Y
Координата2_Y

После заполнения пользователем начальных данных, надо выполнить некоторые проверки на корректность.

Если Xmax < 1 или Ymax < 1 Тогда
Сообщить("Недопустимый размер поля");
КонецЕсли;
Если (Координата1_X < 1 или Координата1_X > Xmax) или (Координата1_Y < 1 или Координата1_Y > Ymax) Тогда
Сообщить("Недопустимое координаты точки начала")
КонецЕсли;
Если (Координата2_X < 1 или Координата2_X > Xmax) или (Координата2_Y < 1 или Координата2_Y > Ymax) Тогда
Сообщить("Недопустимое координаты точки конца")
КонецЕсли;

Дальше нам необходимо создать таблицу значений, в которой мы будем записывать ходы.
ТЗХоды = Новый ТаблицаЗначений;
ТЗХоды.Колонки.Добавить("X1", Новый ОписаниеТипов("Число")); - до хода
ТЗХоды.Колонки.Добавить("X2", Новый ОписаниеТипов("Число")); - после хода
ТЗХоды.Колонки.Добавить("Y1", Новый ОписаниеТипов("Число")); - до хода
ТЗХоды.Колонки.Добавить("Y2", Новый ОписаниеТипов("Число")); - после хода
ТЗХоды.Колонки.Добавить("РасстояниеДоЦели", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,4))); - это просто было сделано для наглядности.

Как я понял ещё нужна таблица значений где будем записывать запрещенные ходы:

ЗапрещенныеХоды = Новый ТаблицаЗначений;
ЗапрещенныеХоды.Колонки.Добавить("X1", Новый ОписаниеТипов("Число"));
ЗапрещенныеХоды.Колонки.Добавить("X2", Новый ОписаниеТипов("Число"));
ЗапрещенныеХоды.Колонки.Добавить("Y1", Новый ОписаниеТипов("Число"));
ЗапрещенныеХоды.Колонки.Добавить("Y2", Новый ОписаниеТипов("Число"));

Вот функции, которые могут пригодиться:

Функция МодульЧисла(Число)
Попытка
Корень=sqrt(Число);
Возврат Число;
Исключение
Возврат -Число;
КонецПопытки;
КонецФункции

Функция Растояние(X1,X2,Y1,Y2)
Возврат Sqrt(((X2 - X1)*(X2-X1)) + ((Y2-Y1)*(Y2-Y1))) ;
КонецФункции


Вот собственно начальные данные у нас есть. А теперь с этим надо плясать. Я сам пока ещё не придумал как сделать лучше. Когда будет доделано выложу код.
97. max210 25.03.13 21:29 Сейчас в теме
(90) Shilov, большое спасибо за помощь. буду тоже думать и делать:)))
91. lefthander 25.03.13 09:25 Сейчас в теме
Надо не забыть проверить расположение коня, например, из углового поля возможно только два хода, с третьей по шестую клетку крайних линий и вертикалей только 4 хода, со 2 и 7 клеток крайних линий и вертикалей только 3 хода, это для доски 8*8.
92. Shilov 4 25.03.13 09:58 Сейчас в теме
Да, это обязательно надо проверять )
Если (ВремКоординатаX + ТЗ[Шаг].hodX < 1 или ВремКоординатаX + ТЗ[Шаг].hodX > Xmax) или (ВремКоординатаY + ТЗ[Шаг].hodY < 1 или ВремКоординатаY + ТЗ[Шаг].hodY > Ymax) Тогда Продолжить;
93. Shilov 4 25.03.13 10:13 Сейчас в теме
у меня сейчас сложность состоит в поиске оптимального пути, когда допустим Начальная точка имеет координаты (1,1), а конечная имеет координаты (1,2); Мозги взрываются.
95. lefthander 25.03.13 11:19 Сейчас в теме
(93) А не оптимальный путь уже строится?
96. Shilov 4 25.03.13 12:37 Сейчас в теме
(95) lefthander, не оптимальный путь я даже не пробую строить )
99. juntatalor 62 26.03.13 16:34 Сейчас в теме
Рабочий день выдался спокойным, и я с большим удовольствием занялся решением задачи - пришлось и почитать, и головой поработать, но в целом результатом я доволен. В счет конкурса отчислил немного SM - думаю, надо поощрять такую инициативу.
Не сразу я пришел к версии с графом и Дейкстрой, сначала "шел своим путем". Путь оказался крайне не оптимальным, и в голове вспомнился университетский курс теории графов. Они тут как нельзя кстати!
100. juntatalor 62 26.03.13 16:50 Сейчас в теме
Также отмечу, что с выбранной системой исчисления теоретически, нет ограничений на размеры поля.
Чтобы делать поле больше, надо всего лишь скорректировать запрос, ту группу где добавляются "Цифры" (т.е. туда можно добавить и любые последовательно идущие числа)

С другой стороны, было бы неплохо задавать размеры поля полями на форме.
102. Шёпот теней 1767 27.03.13 08:03 Сейчас в теме
Подскажите ?! как можно посмотреть обработку управляемые формы в простом приложении ? ...
103. lefthander 27.03.13 08:45 Сейчас в теме
(102)встроить ее в конфигурацию.
105. Шёпот теней 1767 27.03.13 11:26 Сейчас в теме
104. juntatalor 62 27.03.13 09:06 Сейчас в теме
Указать в конфигураторе режим разработки обычное и управляемое приложение. И потом галку использовать управляемые формы в обычном режиме.
108. Shilov 4 28.03.13 13:15 Сейчас в теме
А что подразумевается под сочетанием?
109. lefthander 28.03.13 13:31 Сейчас в теме
(108)Надо полагать максимальная длина слова :)
112. Шёпот теней 1767 28.03.13 16:09 Сейчас в теме
(108) например:

"Выпьем, добрая подружка
Бедной юности моей,
Выпьем с горя; где же кружка?"

станет: "выпьемдобраяподружкабеднойюностимоейвыпьемсгорягдежекружка"­
программа найдёт масимальное вхождения наборов символов:

по 2раза повторятся наборы символов : "Выпьем", "ружка" ... и другое

самое интересное будет на стыке слов ...

п.с. Вы правы. изменил усовия ...
110. Shilov 4 28.03.13 13:36 Сейчас в теме
тогда в качестве исходных данных нужен ещё словарь )
111. lefthander 28.03.13 13:50 Сейчас в теме
(110)Зачем? Слова разделены знаком препинания и/или пробелом. Их и отлавливать.
Или если вчитаться в условие то после выполнения п.1 будет одна большая строка, тогда это ее длина и будет. :)
Хотя это могут быть и просто строки, тогда нужна максимальная длина строки.
114. Шёпот теней 1767 28.03.13 16:55 Сейчас в теме
(111) ... текст можно перевести в любой регистр или сделать условием задачи ... также можно поступить и с длинной поиска вхождений ...

здесь главное написать программу вычленения одинаковых кусков текста ...

... вот ...
113. titakovserg 28.03.13 16:24 Сейчас в теме
Сколько должно быть максимальных сочетаний? Например, сочетание "Выпьем" длиннее чем сочетание "ружка"! Или максимальные сочетания начинаются от определенного количества букв? Что считать максимальным сочетанием?

З.Ы. И ещё... "Выпьем" и "выпьем" - это разные сочетания или одинаковые? (Имеет ли значение регистр?)
117. juntatalor 62 28.03.13 17:37 Сейчас в теме
(113) видимо, перед стартом алгоритма нужно указывать минимальную длину цепочки символов - т.е. например минимальной может быть длина 1, тогда мы просто получим частоту встречаемости символов. (если я верно понял условия задачи)

Предложу почитать в эту публикацию http://infostart.ru/public/90367/ , главу про нахождения количества слов в тексте. Думаю, можно задуматься над использованием запросов для решения этой задачи.
Шёпот теней; +1 Ответить
122. titakovserg 29.03.13 12:44 Сейчас в теме
(117) juntatalor, нахождение слов в тексте и нахождение последовательностей - несколько разные задачи. Чтобы найти количество слов, достаточно оставить по одному пробелу между словами и посчитать количество пробелов+1
124. juntatalor 62 29.03.13 16:34 Сейчас в теме
(122) titakovserg, но при этом не будет известно, какие это слова.
115. slazzy 39 28.03.13 17:17 Сейчас в теме
ух, классная тема, классные задачи )) жаль, моих знаний пока не хватает чтобы их осилить, но реально пасиба ^_^ давно искал нечто такое, над чем можно подумать.
116. lefthander 28.03.13 17:35 Сейчас в теме
(115) Дык... ведь для того и тема, пробуйте, ищите решения, повышайте свой уровень, главное не победа, а участие. :)
119. juntatalor 62 28.03.13 18:52 Сейчас в теме
Подход интересен. До конца еще не разобрался в вашем алгоритме.
123. titakovserg 29.03.13 15:55 Сейчас в теме
Я кое-что набросал, по поводу задачи из поста 107. Мой алгоритм находит строку:
"выпьемдобраяподружкабеднойюностимоейвыпьемсгорягдежекружкас­ердцубудетвеселей".
При этом я двигаюсь от больших комбинаций к меньшим. Вопрос: после нахождения одной такой комбинации нужно остановиться... Или продолжать поиск дальше (при условии что я точно знаю, что остальные комбинации будут короче уже найденной). Если продолжать, то нужно ли исключить из поиска уже найденный кусок?
125. Шёпот теней 1767 29.03.13 16:35 Сейчас в теме
(123) ... можно исключить а можно и вести подсчёт вхождений (хотя это, безусловно, увеличит время работы программы) ...

... выбор за вами ... и/или как вам будет более интересно ...

п.с. нам нужны совпадающие наборы символов и их количество ...

... вот ...
126. titakovserg 29.03.13 16:38 Сейчас в теме
Вот вариант, который выдает все повторяющиеся последовательности и указывает количество повторений
Прикрепленные файлы:
ПоискПоследовательностей.rar
129. Шёпот теней 1767 04.04.13 15:28 Сейчас в теме
(126) ... непонятно по какому "тексту" работает обработка ... и где смотреть результаты? то ли в "окне сообщений" , то ли в обработке - она пустая .. ?

(127) то же самое что и в 126 ...

(128) в обработке - появился результат ...

предварительно отослал Вам 10 мани за решение ...

желаю успехов ...

... вот ...
135. titakovserg 09.04.13 17:17 Сейчас в теме
(129) Шёпот теней, в вариантах 126 и 127 обработка выводила результат в служебные сообщения
Шёпот теней; +1 Ответить
136. Шёпот теней 1767 10.04.13 09:16 Сейчас в теме
127. titakovserg 29.03.13 16:53 Сейчас в теме
А вот вариант с исключением поднаборов
Прикрепленные файлы:
ПоискСлов.epf
128. titakovserg 29.03.13 17:24 Сейчас в теме
А этот вариант сначала исключает подпоследовательности уже найденных последовательностей, а на случай если вдруг в найденных подпоследовательностях есть тоже повторения, их он тоже ищет

p.s. на мой взгляд наиболее правильный данный вариант
Прикрепленные файлы:
ПоискСлов.epf
res.txt
ПоискСлов.epf
132. medic43 06.04.13 09:28 Сейчас в теме
На электронном будильнике табло отображает за сутки числа от 00 до 23. Определите, сколько раз при отображении часов в сутки (минуты не учитываются) используется цифра 1?
133. Шёпот теней 1767 06.04.13 10:29 Сейчас в теме
(132) ... хм ... детский вопрос ужжж совсем ...

числоСчёта = 2359;
проверяемоеЧисло = 1;
счётЕдиниц = 0;
счётЕдиниц1 = 0;
счётЕдиниц2 = 0;
счётЕдиниц3 = 0;
счётЕдиниц4 = 0;
Для раз = 1 По числоСчёта Цикл
ОбработкаПрерыванияПользователя();
разряд1 = Цел(раз/1000);
текРаз = раз-разряд1*1000;
разряд2 = Цел(текРаз/100);
текРаз = текРаз-разряд2*100;
разряд3 = Цел(текРаз/10);
текРаз = текРаз-разряд3*10;
разряд4 = Цел(текРаз);
Если разряд1 = проверяемоеЧисло Тогда
счётЕдиниц1 =счётЕдиниц1+1;
КонецЕсли;
Если разряд2 = проверяемоеЧисло Тогда
счётЕдиниц2 =счётЕдиниц2+1;
КонецЕсли;
Если разряд3 = проверяемоеЧисло Тогда
счётЕдиниц3 =счётЕдиниц3+1;
КонецЕсли;
Если разряд4 = проверяемоеЧисло Тогда
счётЕдиниц4 =счётЕдиниц4+1;
КонецЕсли;
КонецЦикла;
счётЕдиниц = счётЕдиниц1+счётЕдиниц2+счётЕдиниц3+счётЕдиниц4;
Сообщить("всего встречается проверяемое число: "+проверяемоеЧисло+" = "+счётЕдиниц);
Сообщить("первый разряд проверяемое число: "+проверяемоеЧисло+" встречается: "+счётЕдиниц1);
Сообщить("второй разряд проверяемое число: "+проверяемоеЧисло+" встречается: "+счётЕдиниц2);
Сообщить("третий разряд проверяемое число: "+проверяемоеЧисло+" встречается: "+счётЕдиниц3);
Сообщить("четвёртый разряд проверяемое число: "+проверяемоеЧисло+" встречается: "+счётЕдиниц4);


для 2359 - будет:

всего встречается проверяемое число: 1 = 1 776
первый разряд проверяемое число: 1 встречается: 1 000
второй разряд проверяемое число: 1 встречается: 300
третий разряд проверяемое число: 1 встречается: 240
четвёртый разряд проверяемое число: 1 встречается: 236

для 23 - будет:

всего встречается проверяемое число: 1 = 13
первый разряд проверяемое число: 1 встречается: 0
второй разряд проверяемое число: 1 встречается: 0
третий разряд проверяемое число: 1 встречается: 10
четвёртый разряд проверяемое число: 1 встречается: 3
134. _tref_ 09.04.13 12:27 Сейчас в теме
137. Bukaska 133 14.04.13 22:35 Сейчас в теме
Давайте.. Пожалуй и я проспонсирую данный проект))))
Шёпот теней; +1 Ответить
140. Shilov 4 17.04.13 15:29 Сейчас в теме
Вот такая задача:
Входные данные - строка.
Примеры входных данных:
1) "1,4,6,8,11,14" ,
2) "1-3,5,7,11-23,24,27"
3) "1-99"
Выходные данные - число (количество цифр в последовательности).
В 1 случае результат будет 6.
Во 2 случае - 19
В 3 случае - 99
Шёпот теней; +1 Ответить
141. pm74 169 18.04.13 00:16 Сейчас в теме
(140) Shilov,
Выполнить("Строка=""""+Вычислить("""+СтрЗаменить(Строка,",",""")+"",""+Вычислить(""")+""")");

все "+" = 1 , все "-" равны себе по модулю
142. Shilov 4 18.04.13 07:02 Сейчас в теме
(141) pm74, Была строка такая "1,2,3,5,9-15", а получилось такая "1,2,3,5,-6". А на выходе должно быть "10"
144. pm74 169 18.04.13 11:10 Сейчас в теме
(142) Shilov,
Была строка такая "1,2,3,5,9-15", а получилось такая "1,2,3,5,-6". А на выходе должно быть "10"

Да, да не проверил.
Вот такой код должен работать
Строка="1,2,3,5,9-15";
Сообщить("Было "+Строка);
Число=0;
Выполнить("Строка=""Вычислить(""+Вычислить("""+СтрЗаменить(Строка,",",""")*-1+"")+Вычислить(""+Вычислить(""")+""")*-1+"")""");
//Выполнить("Число=Вычислить("+СтрЗаменить(Строка,"-","1+0*")+")");
Выполнить("Число=Вычислить("+СтрЗаменить(СтрЗаменить(Строка,"-","0*"),"(","(1+")+")");

Сообщить("Результат ="+Число);
Показать

1,2,3,5,9-15 =11
Bukaska; Шёпот теней; Shilov; +3 Ответить
145. Shilov 4 18.04.13 12:34 Сейчас в теме
146. Шёпот теней 1767 18.04.13 16:26 Сейчас в теме
(144) ... отправил вам ещё немного мани за решение "Была строка такая "1,2,3,5,9-15"" ...
143. Shilov 4 18.04.13 07:56 Сейчас в теме
(140) Shilov,

	
        Строка = Элемент.Значение; // присваиваем строке значение из поля ввода
	Строка = СокрЛП(Строка); 
	Строка = СтрЗаменить(Строка, ",", Символы.ПС); //Запятые заменяем на символы переноса строки              
	НомерСтроки = 1;
	Сч = 0;
	Кол = СтрЧислоСтрок(Строка);
        // Бегаем по всем строкам
	Пока НомерСтроки <= Кол Цикл
		ВремСтрока_1 = СтрПолучитьСтроку(Строка, НомерСтроки); // Получаем строку
		ВремСтрока_2 = ВремСтрока_1; //копируем
		ВремСтрока_2 = СтрЗаменить(ВремСтрока_1, "-", "-0-" ); //Заменяем "-" на "-0-" =)
        //Если строки по-прежнему равны, заменяем то что в строке на 1
		Если ВремСтрока_1 = ВремСтрока_2 Тогда  
			ВремСтрока_1 = СтрЗаменить(ВремСтрока_1, ВремСтрока_1, "1");
        //иначе считаем выражение в строке 
		Иначе
			Попытка
				ВремСтрока_1 = СтрЗаменить(ВремСтрока_1, ВремСтрока_1, Вычислить("-1*(" + ВремСтрока_2 + ")+1"));
			Исключение
				Сообщить("Неверное выражение", СтатусСообщения.Важное);
				Возврат;
			КонецПопытки;	
		КонецЕсли;
                // суммируем числа в каждой строке
		Попытка
			Сч = Сч + (Число(ВремСтрока_1));
		Исключение
			Сообщить("Неверное выражение", СтатусСообщения.Важное);
			Возврат;
		КонецПопытки;	
		НомерСтроки = НомерСтроки + 1;
	КонецЦикла;
        // Получаем количество различных цифр
	Сообщить(Сч);
Показать
148. Шёпот теней 1767 19.04.13 11:05 Сейчас в теме
(140) Решение:

масДанных = Новый Массив;
масДанных.Добавить("1,4,6,8,11,14");
масДанных.Добавить("1-3,5,7,11-23,24,27");
масДанных.Добавить("1-99");

Для каждого текСтрока Из масДанных Цикл
текСтрока = СтрЗаменить(текСтрока, ",", Символы.ПС);
колДанных = 0;
сумДанных = 0;
Для текНомер = 1 По СтрЧислоСтрок(текСтрока) Цикл
набор = СтрПолучитьСтроку(текСтрока, текНомер);
позицияТире = Найти(набор, "-");
Если позицияТире = 0 Тогда
колДанных = колДанных + 1;
сумДанных = сумДанных + Число(набор);
Иначе
начСчета = Число(Сред(набор, 1, позицияТире-1));
конСчета = Число(Сред(набор, позицияТире+1));
Для раз = начСчета По конСчета Цикл
колДанных = колДанных + 1;
сумДанных = сумДанных + раз;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Сообщить("количество данных: "+колДанных+" сумма в строке: "+сумДанных);
КонецЦикла;

количество данных: 6 сумма в строке: 44
количество данных: 20 сумма в строке: 290
количество данных: 99 сумма в строке: 4 950


п.с. вторая строка имеет 20 позиций данных а не 19 ?!

... вотВЕДЬвот ...

...
149. Intervent 22.04.13 15:59 Сейчас в теме
Задача по нахождению структуры в неупорядоченных данных.
Упорядочить данные по лучшей кратности одинаковых элементов.
***
Лучшая кратность строки = максимальная частотность элемента данных с минимумом пустышек.
Можно использовать совместимый критерий "наилучшести", типа средней плотности/насыщенности строки.
Совместимый = дающий те же результаты, либо (при различии) объективно показательней.
Объективность показательности аргументируется произвольно.
В общем, см. образец решения, так будет понятнее.


Строка на входе: "9,1,2,3,4,1,6,5,2,3,8,4,1,2,3,4,4,1,5,2,3,4".
Строка на выходе:
"9,1,0,0,2,3,0,4,
|0,1,6,5,2,3,8,4,
|0,1,0,0,2,3,4,4,
|0,1,0,5,2,3,0,4"

Принцип расстановки:
1,2 и 3 встречаются по 4 раза, тогда как остальные меньше раз (1-3)*.
5 в последней строке "стоит под" 5 во второй строке, ибо элемент одинаковый (5=5), а 4 в "столбце четвёрок".
Данные нельзя переставлять местами: задача сводится к тому, что нужно лишь дополнить пустышки (0).
*4-ка повторяется 5 раз, но такая расстановка даст больше пустышек:
"...
...
|0,1,0,0,2,3,0,4,
|0,0,0,0,0,0,0,4,
|0,1,0,5,2,3,0,4"

PS: Задача "придумана" мной исходя из практических соображений.
PPS: В исходной строке (для упрощения) указаны цифры, но работать с ними надо как с текстом различной длины.
Шёпот теней; +1 Ответить
151. Шёпот теней 1767 26.04.13 16:14 Сейчас в теме
(149) откуда такая практическая задача?, можно полюбопытствовать ? вот ...
152. Intervent 26.04.13 18:56 Сейчас в теме
(151) Решение – заготовка для универсального парсера списков любого рода: форумов, досок объявлений, каталогов, различных лент. Также, может быть применено для поиска различий данных в однотипных "неизвестных" структурах. То же можно проделать разбором схемы вручную, но тут предлагается отдать по-максимуму на откуп искусственному интеллекту.

Фишка с пустышками в том, чтобы выявить "гуляющие" данные, т.е. которые в структуре есть, но проявляются себя непостоянно, необязательно дочерние к основным элементам и могут быть составными. А т.к. данные собираются частично и динамически, то для этого лучше иметь гибридную структуру, автоподстраивающуюся под обстоятельства и непременные будущие переструктуризации.

Я сделал решение на VB упрощенной задачи, - без выравнивания подструктур, - только костяк. Плюс, вместо лучшей кратности, выбор любой одной или нескольких кратностей опционально. Вот подумал, в 1С такое замутить тоже было бы неплохо, тем более для Конкурса годное задание. А поскольку упрощенное решение сводится к: выбрать уникальные, посчитать, снова уникальные, сортировать и форматировать, то, ввиду (147), доформулировал задачу для интереса и более качественного ИИ.

Тем самым, можно подойти к решению разными способами: на основе решения в лоб рекурсией, конечным автоматом, тупо брутфорсом по ограниченной выборке, либо какой-нибудь хитрой комбинаторикой. В общем, возможность пошуршать винтиками и придумать какой-то индивидуальный подход к решению.

PS: Для полноценного парсера нужны ещё: граббер, шаблоны каркасов, автофильтры, выявление принадлежностей, типизация, моделирование, межресурсные связи и прочее. Для сопоставлятора - в зависимости от объекта сравнения: документы на естественном языке, сериализованные объекты или анкетные формы, - для каждого свои способы. Но это уже другая история.
Шёпот теней; +1 Ответить
171. Шёпот теней 1767 29.04.13 08:23 Сейчас в теме
(152) ... да!, ужжж ... задача интересная, я бы сказал творческая ... ! )))

пока стою на проблеме следующего:

получаю строки, например, на набор "41234":

: 912341652384
: 1234415234

пока не получается согласовать вставку "пропущенных символов" чтобы добиться вида:

: 91234-1652384
: -123441-523-4

... вот ...
172. Intervent 29.04.13 10:04 Сейчас в теме
(171) Может быть применена такая последовательность:

Шаг1. Очерчиваем подстроки:
{9123}4{} 1{65}2{}3{8}4{}
{123} 4{4}1{5} 2{}3{} 4{}


Шаг2. Удаляем пустые подстроки:
{9123}4{} 1{65}23{8}4
{123} 4{4}1{5} 23{} 4


Шаг3. Если подстрока максимум из 1 элемента, разворачиваем:
{9123}4-1{65}2384
{123} 441{5} 23-4


Шаг4. Повторяем шаги 1-3 для каждой оставшейся подстроки:
9123/123 → 9123/-123
65/5 → 65/-5


Шаг5. Соединяем:
91234-1652384
-123441-523-4


PS: Пробелы в строке - для красоты отображения на форуме, в промежуточном решении их нет. Выделение подстрок скобками - схематично, по факту их хранение (выделение) произвольное.
150. Шёпот теней 1767 24.04.13 13:17 Сейчас в теме
благодарен alexk-is за поддержку ... вот ...
153. stagov 7 28.04.13 01:45 Сейчас в теме
Ставлю клиентам УТ.
Бабулька бухгалтер спрашивает: "Как бы мне моих 1500 контрагентов перетянуть из ОПЗ???" (для тех кто не знает- ОПЗ-програмне забезпечення по формуванню та подачі платниками податків податкової звітності та реєстру отриманих та виданих податкових накладних до органів ДПС в електронному вигляді засобами телекомунікаційного зв'язку - редкая гадость, но иногда выручает)

Вот такая задача.


P.S. Бабулек ведущих выписку первички в ОПЗ я встречал всего два раза.
154. AnryMc 723 28.04.13 07:00 Сейчас в теме
(153) stagov,

За решение этой задачи вам заплатили две коробки из под бумаги А4 и ещё кулек денег?

Вообще недопонял к чему этот пост в данной ветке?
155. stagov 7 28.04.13 12:59 Сейчас в теме
(154) AnryMc,
Послушайте, уважаемый, человек TODD22 (готовый за деньги все отдать, продать) мне задал вопрос-претензию что мол я больших денег не видел. Я ему ответил. Т.к. по роду работы очень часто приходится видеть большие деньги. Как то было видел (стоял рядом, трогал руками) приблизительно кубический метр денег. Зрелище впечатляет.

Вам я смотрю это как то не дает покоя. Что не нравится?
Типа:
- Почему на болоте нельзя считать деньги?
- Жаба задавит?!

По поводу поста. Ну значит я не правильно понял что значит "Лучший вопрос - Лучший ответ".
Мой пост - это вопрос.
Дайте ответ!
У меня на решение вопроса пошло мин 15.
156. AnryMc 723 28.04.13 13:29 Сейчас в теме
(155) stagov,

1)
Т.к. по роду работы очень часто приходится видеть большие деньги.

Больше всех всё равно видят охранники нац банка (и я видел)
2)
Вам я смотрю это как то не дает покоя. Что не нравится?

Да мне всё равно сколько кто видел (особенно чужих).
3)
Дайте ответ! 
У меня на решение вопроса пошло мин 15.


В ОПЗ файл spr_contragents.xml ответ 2 минуты.
157. stagov 7 28.04.13 13:46 Сейчас в теме
(156) AnryMc,
Да мне всё равно сколько кто видел (особенно чужих).

Ну так почему Вы мне этими коробками, уже не первый раз отвечаете!?

В ОПЗ файл spr_contragents.xml ответ 2 минуты.

Это просто фраза. Пустышка.
Конкретизируйте, обоснуйте 2 мин.
158. AnryMc 723 28.04.13 14:46 Сейчас в теме
(157) stagov,

Ну так почему Вы мне этими коробками, уже не первый раз отвечаете!?


Обычно говорят о "дипломатах" (в крайнем случае - кульках) а тут коробки из под бумаги А4 - Свежо!

Это просто фраза. Пустышка.
Конкретизируйте, обоснуйте 2 мин.


Затенуть из .xml 5-ть полей
id name
HK Індивідуальний податковий номер
HNAME Назва (Прізвище, ім'я, по-батькові)
HLOC Місцезнаходження
HTEL Номер телефона
HNSPDV Номер свідоцтва ПДВ
159. stagov 7 28.04.13 15:04 Сейчас в теме
(158) AnryMc,
Затянуть 5 полей из .xml - 99% пользователям сайта это будет понятно.
А вот бабулька 60 лет. Для нее даже .xml - это ребус.
Чем затянуть?
В этом пути коня между клетками отсутствует большая часть клеток.
Дополнительные исходные данные.
1.Комп без интернета.
2.Флешки все забыл дома.
3.В наличии только коробка с УТ.
160. AnryMc 723 28.04.13 15:18 Сейчас в теме
(159) stagov,

А обработка "ЗагрузкаДанныхИзТабличногоДокумента" есть?
161. stagov 7 28.04.13 15:32 Сейчас в теме
В коробке как правило диск ИТС присутствует.
Только обработка "ЗагрузкаДанныхИзТабличногоДокумента" этот spr_contragents.xml не видит. Увы.
Прикрепленные файлы:
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Санкт-Петербург
зарплата от 140 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
зарплата от 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день