Слово из кубиков

kost82
Offline
Зарегистрирован: 30.11.2015

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

Итак, есть несколько кубиков (количество не важно). Пусть для простоты это будет четыре. На кубиках написаны буквы (на каждом по одной), например буквы "Ж", "О", "П" и "А". Кубики можно поставить в произвольном месте, ну то есть в поверхности на которой они стоят нет никаких встроенных устройств (датчиков, герконов и т.п.). У самих кубиков нет снаружи никаких контактов.

Игроки берут кубики и составляют из них слово. Как только слово полностью составлено (ну то есть последний кубик встал на свое место) - внутри кубиков загорается свет и на других гранях из-за этого становятся видны другие буквы из которых получается слово-ответ (например "Счастье").

Предположим, что у нас есть доступ к любым модулям/датчикам, чтобы собрать это устройство. При этом, если внутри кубиков будут источники питания - их должно хватить как минимум на день (с утра включили - к вечеру выключили).

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

rkit
Offline
Зарегистрирован: 23.11.2016

ИК

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

kost82 пишет:

Итак, есть несколько кубиков (количество не важно). Пусть для простоты это будет четыре. На кубиках написаны буквы (на каждом по одной), например буквы "Ж", "О", "П" и "А".

Как ни крути, сёравно слово "ВЕЧНОСТЬ" не соберешь из этого набора.  Хотя, некоторые умудряются. 

sadman41
Offline
Зарегистрирован: 19.10.2016

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

kost82
Offline
Зарегистрирован: 30.11.2015

rkit пишет:

ИК

Кстати да, ИК хорошо и экономично решит проблему позиционирования. Но вот как передать "по цепочке" всем кубикам, что слово собрано и пора бы зажечь свет? При том что слово могут собирать в любом порядке.

kost82
Offline
Зарегистрирован: 30.11.2015

sadman41 пишет:
Работодатели могут фантазировать бесконечно, законы физики и экономики от этого не изменятся. Если задачу невозможно решить на текущем этапе технологического развития простым способом, то в разработку придется ввалить немеряно бабла, а не выспрашивать решения на собеседованиях.

Работодатель, насколько я знаю, уже прекратил свое существование, так что пусть это останется на их совести. Мне кажется у них было какое-то решение. Мне же интересна сама задача. Для саморазвития.

rkit
Offline
Зарегистрирован: 23.11.2016

kost82 пишет:

Кстати да, ИК хорошо и экономично решит проблему позиционирования. Но вот как передать "по цепочке" всем кубикам, что слово собрано и пора бы зажечь свет? При том что слово могут собирать в любом порядке.

По ИК и передать

Green
Offline
Зарегистрирован: 01.10.2015

Герконы/магниты/rfid - это в том случае, если слово заведомо известное. Т.е., будет конкретное сочетание собранных кубиков. Иначе над столом должна быть камера с распознаванием. Ну и радио в каждом, в любом случае.

sadman41
Offline
Зарегистрирован: 19.10.2016

kost82 пишет:

Работодатель, насколько я знаю, уже прекратил свое существование, так что пусть это останется на их совести. Мне кажется у них было какое-то решение. Мне же интересна сама задача. Для саморазвития.


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

kost82
Offline
Зарегистрирован: 30.11.2015

rkit пишет:

По ИК и передать

Получается нужна двусторонняя ИК-связь между каждым кубиком? То есть например каждый кубик повторяет посылку соседа и прицепляет к ней свой идентификатор, а на последнем кубике, если все ID собрались - идет обратный сигнал на включение света? Или есть проще логика?

Green
Offline
Зарегистрирован: 01.10.2015

sadman41 пишет:
И как пару лет назад предполагалось заряжать кубик без контактов на день работы со светом, приемопередачей и пр.?
Ну очевидно разборные.)

kost82
Offline
Зарегистрирован: 30.11.2015

sadman41 пишет:

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

Да ладно, беспроводные зарядки не вчера же придумали. У меня зубной щетке уже лет 10, у нее тоже нет внешних контактов и вообще можно мыть целиком под струей воды, т.е. она герметична.

Ну и к тому же никто не запрещает их сделать разборными. Вечером разбирать и ставить на зарядку, а утром собирать.

rkit
Offline
Зарегистрирован: 23.11.2016

kost82 пишет:

rkit пишет:

По ИК и передать

Получается нужна двусторонняя ИК-связь между каждым кубиком? То есть например каждый кубик повторяет посылку соседа и прицепляет к ней свой идентификатор, а на последнем кубике, если все ID собрались - идет обратный сигнал на включение света? Или есть проще логика?

Если есть правильный свет слева - свети свой код вправо. Крайний левый светит всегда. То же самое справа налево.

sadman41
Offline
Зарегистрирован: 19.10.2016

kost82 пишет:

sadman41 пишет:

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

Да ладно, беспроводные зарядки не вчера же придумали. У меня зубной щетке уже лет 10, у нее тоже нет внешних контактов и вообще можно мыть целиком под струей воды, т.е. она герметична.


У меня тоже есть такая щётка. И в телефонах за $500 я такое видел. Но мы же не ведём речь о фабричном патентованном изделии фирмы с миллиардным оборотом и штатом инженеров. Ближайший поставщик - это АлиЭкспресс с его говноассортиментом.

kost82
Offline
Зарегистрирован: 30.11.2015

sadman41 пишет:
У меня тоже есть такая щётка. И в телефонах за $500 я такое видел. Но мы же не ведём речь о фабричном патентованном изделии фирмы с миллиардным оборотом и штатом инженеров. Ближайший поставщик - это АлиЭкспресс с его говноассортиментом.

Ну тогда да, остается разбирать и собирать каждый день. Либо сделать скрытые контакты для зарядки.

Про отсутствие контактов я имел в виду - нет электрического контакта между кубиками, участвующего в процессе игры. Сразу вспоминаются советские радиокубики у которых были одежные кнопки на гранях для сборки схемы. Это гениальное решение, но в данном случае его применять нельзя по условиям задачи.

Green
Offline
Зарегистрирован: 01.10.2015

По красивому, на каждой стороне кубика должна быть антенна и один приёмо-передатчик c малым радиусом действия на все антенны.

kost82
Offline
Зарегистрирован: 30.11.2015

rkit пишет:

Если есть правильный свет слева - свети свой код вправо. Крайний левый светит всегда. То же самое справа налево.

Да, действительно, тогда момент зажигания света - это когда код слева и код справа - правильные. Спасибо, я действительно все усложнил.

kost82
Offline
Зарегистрирован: 30.11.2015

Green пишет:

По красивому, на каждой стороне кубика должна быть антенна и один приёмо-передатчик c малым радиусом действия на все антенны.

Не совсем понял принцип работы. Это вроде похоже на RFID + приемник-передатчик? Или нет?

Green
Offline
Зарегистрирован: 01.10.2015

Обычный приёмо-передатчик.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Пронумеровать каждую сторону кубика + сами кубики. Какрас 1 ниббл = 16. Итого максимум 16 кубиков на один байт. Идентифицировать при помощи магнитов - герконов, прикрепленных по единому шаблону на гранях кубиков. Герконы собираем в цепочку по И и зажигаем лампу внутри. Дешего и просто.

nik182
Offline
Зарегистрирован: 04.05.2015

Рапределённые сети, интернет вещей и прочие игрушки , которые сейчас развивают во всю. В каждый кубик еспшку с 3д аксерерометром, чтобы знать какая грань сверху и катушечки с диодами Холла на каждую грань для того, что бы знать кто рядом. Дальше можно чем угодно, хоть еспшкой хоть ББ рулить процессом.

kost82
Offline
Зарегистрирован: 30.11.2015

-NMi- пишет:
Пронумеровать каждую сторону кубика + сами кубики. Какрас 1 ниббл = 16. Итого максимум 16 кубиков на один байт. Идентифицировать при помощи магнитов - герконов, прикрепленных по единому шаблону на гранях кубиков. Герконы собираем в цепочку по И и зажигаем лампу внутри. Дешего и просто.

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

Или я чего-то недопонял?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Слушай, ты просил только идею а не реализацию полностью, пралбно? Ну вот тебе идея. Думай.

ask1
Offline
Зарегистрирован: 16.01.2020

Кнопка-ключ на каждой грани. Если состыковать правильно, то цепь замкнется и "загорится слово".

"Кнопка-ключ" - я  считаю, что это не контакт и в условиях не указано, что поверхность гладкая. По принципу ключа и замка, а не ключа для азбуки морзе :) Если состыковать пару кубиков правильно, то они загораются (или же только один - первый). Соответственно на последнем и первом кубике может быть/должно быть две пары ключей. Но ИК выглядит во всех отношениях лучше, кроме энергопотребления - он постоянно должен светить. А принцип может быть такой же простой - окошко источника против окошка приемника и связь заработала, даже специально модулировать сигнал не нужно.

Заряжать можно через беспроводную зарядку, оно два года назад уже было.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

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

Logik
Offline
Зарегистрирован: 05.08.2014

Вообще нужно бы учитывать что кубики сложены нужным словом вверх, а не слово на нижних гранях, а сверху невесть - че.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну вот датчик наклона это и учитывает.

nik182
Offline
Зарегистрирован: 04.05.2015

Не. Контакты не вариант. У кубиков разные буквы на разных гранях и слова можно разные составлять. Кубик должен знать какая буква сверху и с какого боку есть или нет соседи.

Logik
Offline
Зарегистрирован: 05.08.2014

brokly пишет:

Ну вот датчик наклона это и учитывает.

Это те, четные, которые просто с магнитом?! Они дохрена научитывают. А учитывать через один - лажа полная будет.

Logik
Offline
Зарегистрирован: 05.08.2014

nik182 пишет:
Не. Контакты не вариант. У кубиков разные буквы на разных гранях и слова можно разные составлять. Кубик должен знать какая буква сверху и с какого боку есть или нет соседи.

Вот. Потому датчик ориентации в каждый и ик обмен для выяснения соседа слева и справа.

nik182
Offline
Зарегистрирован: 04.05.2015

С ИК обменом лажа может выйти из за отражений от рядом лежащих кубиков :-) Только что типа мини миноискателя на кажду грань.

kost82
Offline
Зарегистрирован: 30.11.2015

Мне понравилась идея с ИК, по-моему самая простая. ИК-приемник и передатчик можно разнести в разные углы кубика, чтобы они работали только в одном положении. А в крайние кубики датчик положения можно встроить, чтоб они светили только когда нужная грань наверху.

rkit
Offline
Зарегистрирован: 23.11.2016

Один фототранзистор может чередовать функцию и приемника и передатчика. Другой вариант — передача через катушку индуктивности.

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

ask1
Offline
Зарегистрирован: 16.01.2020

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

kost82
Offline
Зарегистрирован: 30.11.2015

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

ask1
Offline
Зарегистрирован: 16.01.2020

По одному "ик-дальномеру" в кубике никак не позволит контролировать правильность порядка. Для этого нужны дополнительные связи между кубиками, чего по определению тут нет. Я написал, что кнопка-ключ для этого может использоваться, но в условиях не указано должны ли стороны быть гладкими. Не знаю, считаются ли кнопки контактами. По логике - да, по электрической терминологии - нет. То есть выпуклость давит на впуклость.

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

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

В общем, я бы сделал прозрачные окошки, фотодиоды и светодиоды, чтоб моргали друг другу. Но тут еще нужен алгоритм, который по цепочке будет передавать "связь есть" между всеми кубиками. Это отдельная задача, которая, вероятно, тоже не слишком проста. Если слов несколько, то придется ставить пары возле каждой стенки (может и не каждой - по количеству слов).

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

kost82
Offline
Зарегистрирован: 30.11.2015

Так ведь rkit весь механизм с передачей по ИК уже расписал

rkit пишет:

Если есть правильный свет слева - свети свой код вправо. Крайний левый светит всегда. То же самое справа налево.

Лампочки загораются когда и правый и левый сигналы правильные. А это возможно когда цепочка составлена правильно и оба крайних кубика стоят на своих местах.

Останется только решить вопрос с экономией батареек, но тут скорей всего нужно отправлять контроллер в спячку и пробуждать по прерываниям с ИК приемника. А крайние кубики можно вообще герконом и магнитом в соседнем кубике включать. Но это уже детали.

ask1
Offline
Зарегистрирован: 16.01.2020

По батарейкам. В задаче не указаны размеры. Пусть будет объем 1 литр. Туда 4 батарейки типа D влезут. Мне кажется, что они год будут ИК-светодиодами светить не сильно мощными. Как раз пока "гарантия не закончилась". Можно и аккумуляторов Li-Ion засунуть побольше.

SLKH
Offline
Зарегистрирован: 17.08.2015

ask1 пишет:

По батарейкам. В задаче не указаны размеры. Пусть будет объем 1 литр. Туда 4 батарейки типа D влезут. Мне кажется, что они год будут ИК-светодиодами светить не сильно мощными. Как раз пока "гарантия не закончилась". Можно и аккумуляторов Li-Ion засунуть побольше.

или серебряно-цинковых.

ask1
Offline
Зарегистрирован: 16.01.2020

Напихать можно разного. У меня тут прибор лежит, в котором нестандартная цилиндрическая батарейка Li-SOCl2, диаметром 26, кажется, миллиметров. Она больше десяти лет проработала. Там, правда, потребление было еще меньше.

kost82
Offline
Зарегистрирован: 30.11.2015

Для меня важен был сам принцип решения задачи, батарейки - это уже дело десятое.

Теперь я знаю, что есть довольно несложный метод реализации задачи. Спасибо rkit!

nik182
Offline
Зарегистрирован: 04.05.2015

Разберите билет в метро и подумайте - процессор за копейки работает без батарейки. Выдаёт свой код. Наберите билетов использованных, наклейте на грани кубиков, внутрь какой-нибудь STM8 с беспроводной подзарядкой на столе резиновый коврик с кольцом беспроводной зарядки кубики на коврике будут работать. Складывать можно будет разные слова. Соседние грани всегда будут знать кто рядом.   

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Logik пишет:

brokly пишет:

Ну вот датчик наклона это и учитывает.

Это те, четные, которые просто с магнитом?! Они дохрена научитывают. А учитывать через один - лажа полная будет.

Что за ник у тебя ? Вот в твох наскоках логики не бывает. Ты просто как плюешь. Считаешь, что истина только в твоей голове ? Так и держи ее там, пока она не убежала. Что за идиотская привычка, что то утверждать без аргументов. Ну если ты не понимаешь, это не значит, что все дураки :)

Датчик наклона видел хоть раз ? Причем тут магнит ?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

kost82 пишет:

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

Итак, есть несколько кубиков (количество не важно). Пусть для простоты это будет четыре. На кубиках написаны буквы (на каждом по одной), например буквы "Ж", "О", "П" и "А". Кубики можно поставить в произвольном месте, ну то есть в поверхности на которой они стоят нет никаких встроенных устройств (датчиков, герконов и т.п.). У самих кубиков нет снаружи никаких контактов.

Игроки берут кубики и составляют из них слово. Как только слово полностью составлено (ну то есть последний кубик встал на свое место) - внутри кубиков загорается свет и на других гранях из-за этого становятся видны другие буквы из которых получается слово-ответ (например "Счастье").

Предположим, что у нас есть доступ к любым модулям/датчикам, чтобы собрать это устройство. При этом, если внутри кубиков будут источники питания - их должно хватить как минимум на день (с утра включили - к вечеру выключили).

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

Давайте мыслить как инженеры. Есть несколько объектов которые должны встать торцами друг к другу, а не где-то там. Отсутствие герконов я не понимаю. На герконах можно соорудить аналог DS интерфейса (проверено - работает). Откуда мы узнаем (в пространстве) ГДЕ НАХОДИТСЯ ОБЪЕКТ? GPS? Гы... Т.е  мы можем определить, что слева нету букф, потамучта там нет кубикофф. Т.е. для информации о наличии кубика слева нужен геркон и магнит. для передачи информации справа - минимум 2 геркона. Если без ответа.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Кстати - минимум 3 сигнала. Первый - определяет кто "мастер". и 2 (3) для передачи данных. 

Или камеру вляпывать.

nik182
Offline
Зарегистрирован: 04.05.2015

Геркон , магнит... А  если кубиков 20, как в раньше в коробке продавали. Или у нас ЕГЭ шагает по стране. Кубиков только три и собрать надо  известное слово единственным образом?   

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

nik182 пишет:

Геркон , магнит... А  если кубиков 20, как в раньше в коробке продавали. Или у нас ЕГЭ шагает по стране. Кубиков только три и собрать надо  известное слово единственным образом?   

Да хоть 100500. Главное знать какой главный (тавтология?) А дальше определим интерфейсом.

kost82
Offline
Зарегистрирован: 30.11.2015

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

nik182
Offline
Зарегистрирован: 04.05.2015

mykaida пишет:

Да хоть 100500. Главное знать какой главный (тавтология?) А дальше определим интерфейсом.

А то что они все равны в голову не приходит? Шоры с глаз спустите. Не может человек разгадывающий ничего знать про главный кубик. Иначе это не загадка.  

kost82
Offline
Зарегистрирован: 30.11.2015

nik182 пишет:
Разберите билет в метро и подумайте - процессор за копейки работает без батарейки. Выдаёт свой код. Наберите билетов использованных, наклейте на грани кубиков, внутрь какой-нибудь STM8 с беспроводной подзарядкой на столе резиновый коврик с кольцом беспроводной зарядки кубики на коврике будут работать. Складывать можно будет разные слова. Соседние грани всегда будут знать кто рядом.

RFID - это первое что я подумал, но эта штука ИМХО довольно энергозатратная, т.к. процессор в карточке получает энергию магнитного поля от считывателя. Ну и в любом случае нужны радиомодули для одновременного зажигания света.