Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Битые поля в шахматах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Работа и общение » Мозговой штурм » Битые поля в шахматах (Формула проверки нахождения поля под ударом шахматных фигур)
Битые поля в шахматах
Понравилось?
Светлый Дата: Среда, 27.01.2016, 10:33 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Есть задачка по установке на шахматную доску восьми ферзей, чтобы они не находились под ударом друг друга. Такая задача не ставится. Нужно всего лишь написать формулу, которая помечает, находится ли поле под ударом любой из фигур, установленных на поле. У меня для ферзя, ладьи, слона и коня получилась протягиваемая массивная формула длиной 278 277 271 символов. Пришлось включить итерации, так как без циклических ссылок обойтись не смог. Найдутся ли желающие немного размять свои мозги до понедельника?
К сообщению приложен файл: ShahMat.xls (27.5 Kb)


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Среда, 27.01.2016, 11:13
 
Ответить
СообщениеЕсть задачка по установке на шахматную доску восьми ферзей, чтобы они не находились под ударом друг друга. Такая задача не ставится. Нужно всего лишь написать формулу, которая помечает, находится ли поле под ударом любой из фигур, установленных на поле. У меня для ферзя, ладьи, слона и коня получилась протягиваемая массивная формула длиной 278 277 271 символов. Пришлось включить итерации, так как без циклических ссылок обойтись не смог. Найдутся ли желающие немного размять свои мозги до понедельника?

Автор - Светлый
Дата добавления - 27.01.2016 в 10:33
MCH Дата: Среда, 27.01.2016, 14:04 | Сообщение № 2
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Что в итоге нужно?
ставить "+" если поле не под боем и "" а противном случае (возможно ИСТИНА/ЛОЖЬ)?
количество фигур не ограничено, может быть любое кол-во Ф, Л, С и К?
шахматная доска расположена в B2:I9 и расчеты нужно делать ссылаясь на эти ячейки (тогда без циклических ссылок не обойтись, т.к. формулы будут ссылаться сами на себя же)

Можно предложить другой пример: расстановка фигур указана отдельно, см. вложение
Необходимо если есть фигура в клетке фигура, то показать ее иначе указать свободна клетка или под боем
Возможно в данном случае можно решить без итераций.
Решаема ли данная задача формулами - не знаю, макросами решить очень просто.
К сообщению приложен файл: _ShahMat.xls (38.5 Kb)
 
Ответить
СообщениеЧто в итоге нужно?
ставить "+" если поле не под боем и "" а противном случае (возможно ИСТИНА/ЛОЖЬ)?
количество фигур не ограничено, может быть любое кол-во Ф, Л, С и К?
шахматная доска расположена в B2:I9 и расчеты нужно делать ссылаясь на эти ячейки (тогда без циклических ссылок не обойтись, т.к. формулы будут ссылаться сами на себя же)

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

Автор - MCH
Дата добавления - 27.01.2016 в 14:04
Светлый Дата: Среда, 27.01.2016, 14:30 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
В первоначальный момент протягиваем формулу из любой клетки на всё поле "+". Потом на этом же поле ставим буквы. Любое количество любых фигур. Формулы тут же помечают битые поля "".
У меня всё работает нормально при включенных итерациях.
Можно проставлять количество фигур, которые бьют это поле, формула короче, но смотрится менее эстетично. Пусть это будет второй формулой в задании. У меня 258 символов.
Задействовать дополнительную доску только для фигур не очень удобно. Дополнительный список, конечно интересен, с точки зрения сложности формулы и ломания мозгов, но он опять же не очень нагляден. И формула, скорее всего, удлинится.
Формула расстановки фигур на поле из дополнительного списка заняла у меня 83 80 76 символа, а полная формула 361 358 354 символ. Но пришлось ещё задействовать ячейку для генератора итераций.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Четверг, 28.01.2016, 09:23
 
Ответить
СообщениеВ первоначальный момент протягиваем формулу из любой клетки на всё поле "+". Потом на этом же поле ставим буквы. Любое количество любых фигур. Формулы тут же помечают битые поля "".
У меня всё работает нормально при включенных итерациях.
Можно проставлять количество фигур, которые бьют это поле, формула короче, но смотрится менее эстетично. Пусть это будет второй формулой в задании. У меня 258 символов.
Задействовать дополнительную доску только для фигур не очень удобно. Дополнительный список, конечно интересен, с точки зрения сложности формулы и ломания мозгов, но он опять же не очень нагляден. И формула, скорее всего, удлинится.
Формула расстановки фигур на поле из дополнительного списка заняла у меня 83 80 76 символа, а полная формула 361 358 354 символ. Но пришлось ещё задействовать ячейку для генератора итераций.

Автор - Светлый
Дата добавления - 27.01.2016 в 14:30
Светлый Дата: Четверг, 28.01.2016, 23:00 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
По дополнительной таблице установка фигур и пометка битых полей (пока без коней) 313 символов.
С конями 402 400 символа.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Пятница, 29.01.2016, 14:38
 
Ответить
СообщениеПо дополнительной таблице установка фигур и пометка битых полей (пока без коней) 313 символов.
С конями 402 400 символа.

Автор - Светлый
Дата добавления - 28.01.2016 в 23:00
Светлый Дата: Суббота, 30.01.2016, 10:25 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Задачка оказалась неинтересной. Желающих её решить не нашлось.
Что ж, если никто не откликнется, в понедельник вскрываюсь.
А отдельные моменты очень интересны, и, думаю, что профи сделали бы формулы короче.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Суббота, 30.01.2016, 10:30
 
Ответить
СообщениеЗадачка оказалась неинтересной. Желающих её решить не нашлось.
Что ж, если никто не откликнется, в понедельник вскрываюсь.
А отдельные моменты очень интересны, и, думаю, что профи сделали бы формулы короче.

Автор - Светлый
Дата добавления - 30.01.2016 в 10:25
MCH Дата: Суббота, 30.01.2016, 12:54 | Сообщение № 6
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

пока времени не было детально порешать.
Кроме простого алгоритма перебора ничего на ум не приходит. А данный способ существенно увеличит формулу.
Вариант "по дополнительное таблице" - это на примере из моего файла?
 
Ответить
Сообщениепока времени не было детально порешать.
Кроме простого алгоритма перебора ничего на ум не приходит. А данный способ существенно увеличит формулу.
Вариант "по дополнительное таблице" - это на примере из моего файла?

Автор - MCH
Дата добавления - 30.01.2016 в 12:54
MCH Дата: Суббота, 30.01.2016, 13:51 | Сообщение № 7
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Решение "в лоб" без особой оптимизации: 396 370 символов с "=", для варианта с отдельной таблицей для фигур.
для 2007 (с ЕСЛИОШИБКА) - 350
К сообщению приложен файл: 4292871.png (12.6 Kb)
 
Ответить
СообщениеРешение "в лоб" без особой оптимизации: 396 370 символов с "=", для варианта с отдельной таблицей для фигур.
для 2007 (с ЕСЛИОШИБКА) - 350

Автор - MCH
Дата добавления - 30.01.2016 в 13:51
Светлый Дата: Суббота, 30.01.2016, 15:20 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Вариант "по дополнительное таблице" - это на примере из моего файла?

Совершенно верно.
Ещё добавил в формулу короля (Ц) и в таблицу пешки (П) - это вне конкурса.
И, конечно же формула, "бьёт" "сквозь" другие фигуры.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Суббота, 30.01.2016, 15:21
 
Ответить
Сообщение
Вариант "по дополнительное таблице" - это на примере из моего файла?

Совершенно верно.
Ещё добавил в формулу короля (Ц) и в таблицу пешки (П) - это вне конкурса.
И, конечно же формула, "бьёт" "сквозь" другие фигуры.

Автор - Светлый
Дата добавления - 30.01.2016 в 15:20
Светлый Дата: Суббота, 30.01.2016, 21:04 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Немного сократил установку фигуры на поле до 51 символа. Полная получилась 374 295 291 символа. Это без итераций.
А используя итерации (первоначальная формула) 329 символов.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Воскресенье, 31.01.2016, 19:17
 
Ответить
СообщениеНемного сократил установку фигуры на поле до 51 символа. Полная получилась 374 295 291 символа. Это без итераций.
А используя итерации (первоначальная формула) 329 символов.

Автор - Светлый
Дата добавления - 30.01.2016 в 21:04
Светлый Дата: Понедельник, 01.02.2016, 08:49 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Тихо сам с собою...
Вскрываю формулы расстановки фигур на доску и проверки нахождения полей доски под ударами этих фигур.
Проверка для ферзя, ладьи, слона и коня. Формула 289 символов:
Код
=СМЕЩ($K$1;МАКС(($L$2:$T$8=B$1&$A2)*СТРОКА($1:$7));)&ЕСЛИ(СУММ(СЧЁТЕСЛИ($L$2:$T$3;B$1&$A$2:$A$9);СЧЁТЕСЛИ($L$2:$T$3;$B$1:$I$1&$A2);СЧЁТЕСЛИ($L$3:$T$4;$B$1:$I$1&$A2-(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ())*{1:-1});СЧЁТЕСЛИ($L$5:$T$5;СИМВОЛ(СТОЛБЕЦ(CS1)-{1;2;2;1;0}*{-1:1})&$A2+{2;1;-1;-2;0}*{-1:1}));;"+")

Формулу в 271 символ с установкой фигур прямо на поле вскрою в следующий понедельник. Вдруг у кого-то проснётся интерес.
MCH, с интересом бы взглянул на Вашу формулу.
К сообщению приложен файл: ShahMatL.xls (78.0 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеТихо сам с собою...
Вскрываю формулы расстановки фигур на доску и проверки нахождения полей доски под ударами этих фигур.
Проверка для ферзя, ладьи, слона и коня. Формула 289 символов:
Код
=СМЕЩ($K$1;МАКС(($L$2:$T$8=B$1&$A2)*СТРОКА($1:$7));)&ЕСЛИ(СУММ(СЧЁТЕСЛИ($L$2:$T$3;B$1&$A$2:$A$9);СЧЁТЕСЛИ($L$2:$T$3;$B$1:$I$1&$A2);СЧЁТЕСЛИ($L$3:$T$4;$B$1:$I$1&$A2-(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ())*{1:-1});СЧЁТЕСЛИ($L$5:$T$5;СИМВОЛ(СТОЛБЕЦ(CS1)-{1;2;2;1;0}*{-1:1})&$A2+{2;1;-1;-2;0}*{-1:1}));;"+")

Формулу в 271 символ с установкой фигур прямо на поле вскрою в следующий понедельник. Вдруг у кого-то проснётся интерес.
MCH, с интересом бы взглянул на Вашу формулу.

Автор - Светлый
Дата добавления - 01.02.2016 в 08:49
MCH Дата: Понедельник, 01.02.2016, 19:32 | Сообщение № 11
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

У меня данные расположены немного по другому, поэтому формула другая
Времени на ее оптимизацию практически не было.
К сообщению приложен файл: -ShahMat.xls (65.5 Kb)
 
Ответить
СообщениеУ меня данные расположены немного по другому, поэтому формула другая
Времени на ее оптимизацию практически не было.

Автор - MCH
Дата добавления - 01.02.2016 в 19:32
Светлый Дата: Понедельник, 08.02.2016, 11:15 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Открываю свою формулу в 271 знак:
Код
=ЕСЛИ(СУММ((($B$2:$I$9="Ф")+($B$2:$I$9="С"))*(($A$2:$A$9+СТОЛБЕЦ($B:$I)=$A2+СТОЛБЕЦ())+($A$2:$A$9-СТОЛБЕЦ($B:$I)=$A2-СТОЛБЕЦ()))+(($B$2:$I$9="Ф")+($B$2:$I$9="Л"))*(($A$2:$A$9=$A2)+($B$1:$I$1=B$1))+($B$2:$I$9="К")*((($A$2:$A$9-$A2)*(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ()))^2=4));"";"+")

И ещё сократил табличную формулу до 265 знаков:
Код
=СМЕЩ($K$1;МАКС(($L$2:$T$8=B$1&$A2)*СТРОКА($1:$7));)&ЕСЛИ(ИЛИ(ЛЕВБ($L$2:$T$3)=B$1;--ПРАВБ(0&$L$2:$T$3)=$A2;СЧЁТЕСЛИ($L$3:$T$4;$B$1:$I$1&$A2-(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ())*{1:-1});СЧЁТЕСЛИ($L$5:$T$5;СИМВОЛ(СТОЛБЕЦ(CS1)-{1;2;2;1;0}*{-1:1})&$A2+{2;1;-1;-2;0}*{-1:1}));;"+")
К сообщению приложен файл: ShahMatF.xls (100.0 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеОткрываю свою формулу в 271 знак:
Код
=ЕСЛИ(СУММ((($B$2:$I$9="Ф")+($B$2:$I$9="С"))*(($A$2:$A$9+СТОЛБЕЦ($B:$I)=$A2+СТОЛБЕЦ())+($A$2:$A$9-СТОЛБЕЦ($B:$I)=$A2-СТОЛБЕЦ()))+(($B$2:$I$9="Ф")+($B$2:$I$9="Л"))*(($A$2:$A$9=$A2)+($B$1:$I$1=B$1))+($B$2:$I$9="К")*((($A$2:$A$9-$A2)*(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ()))^2=4));"";"+")

И ещё сократил табличную формулу до 265 знаков:
Код
=СМЕЩ($K$1;МАКС(($L$2:$T$8=B$1&$A2)*СТРОКА($1:$7));)&ЕСЛИ(ИЛИ(ЛЕВБ($L$2:$T$3)=B$1;--ПРАВБ(0&$L$2:$T$3)=$A2;СЧЁТЕСЛИ($L$3:$T$4;$B$1:$I$1&$A2-(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ())*{1:-1});СЧЁТЕСЛИ($L$5:$T$5;СИМВОЛ(СТОЛБЕЦ(CS1)-{1;2;2;1;0}*{-1:1})&$A2+{2;1;-1;-2;0}*{-1:1}));;"+")

Автор - Светлый
Дата добавления - 08.02.2016 в 11:15
krosav4ig Дата: Вторник, 01.03.2016, 06:06 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
чего-то я давно в эту ветку не заглядывал...
хоть и прошли уже все сроки, выложу вне конкурса формулку (с небольшой махинацией) в 252 символа для ферзя, ладьи, слона, коня, царя и пешки (белой)
формула массивная и итеративная
Код
=ЕСЛИ(СЧЁТ(1/(Т(СМЕЩ(B2;{-2;2;-2;2;-1;1;-1;1};{-1;1;1;-1;-2;2;2;-2}))="к");ПОИСК(ЕСЛИ({1;0};B$2:B$9;ТРАНСП($B2:$I2));"лф");1/(A1:C3="ц");1/(ABS(СТРОКА($2:$9)-СТРОКА())=ABS(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ()))/ПОИСК($B$2:$I$9;"фс"))+ИЛИ(A3:C3={"П";1;"П"});" ";"+")
К сообщению приложен файл: ShahMat1.xlsx (14.6 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 01.03.2016, 06:27
 
Ответить
Сообщениечего-то я давно в эту ветку не заглядывал...
хоть и прошли уже все сроки, выложу вне конкурса формулку (с небольшой махинацией) в 252 символа для ферзя, ладьи, слона, коня, царя и пешки (белой)
формула массивная и итеративная
Код
=ЕСЛИ(СЧЁТ(1/(Т(СМЕЩ(B2;{-2;2;-2;2;-1;1;-1;1};{-1;1;1;-1;-2;2;2;-2}))="к");ПОИСК(ЕСЛИ({1;0};B$2:B$9;ТРАНСП($B2:$I2));"лф");1/(A1:C3="ц");1/(ABS(СТРОКА($2:$9)-СТРОКА())=ABS(СТОЛБЕЦ($B:$I)-СТОЛБЕЦ()))/ПОИСК($B$2:$I$9;"фс"))+ИЛИ(A3:C3={"П";1;"П"});" ";"+")

Автор - krosav4ig
Дата добавления - 01.03.2016 в 06:06
Мир MS Excel » Работа и общение » Мозговой штурм » Битые поля в шахматах (Формула проверки нахождения поля под ударом шахматных фигур)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!