Правила
[Одномерные массивы]
32. Секретный замок для сейфа состоит из 10 расположенных в ряд ячеек, в которые надо вставить игральные кубики. Но дверь открывается только в том случае, когда в любых трех соседних ячейках сумма точек на передних гранях кубиков равна 10. (Игральный кубик имеет на каждой грани от 1 до 6 точек.) Напишите программу, которая разгадывает код замка при условии, что два кубика уже вставлены в ячейки.
--- --- --- --- --- --- ---
Каким оружием могли бы быть разные языки программирования --- --- --- --- --- --- ---
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
[0, 0, 0, 0, 0, 0, 0, 5, 0, 6] например здесь возьмем три последние, очевидно что сумма уже не равна 10
значит вставлены не верно, можно добавить еще один цикл для проверки элементов меньше 1, и выкрикивать эксепшн
[0, 0, 0, 0, 0, 0, 0, 5, 0, 6]
[6, 5, -1, 6, 5, -1, 6, 5, -1, 6]
и еще по такому типу
[0, 0, 0, 0, 6, 5, 0, 0, 0, 0]
[-1, 6, 5, -1, 6, 5, -1, 6, 5, -1]
что не есть решение.
Итак немного поднявшись и изменив угол обзора, увидел замыливание в задаче, оказалось, что для решение надо перенести координатную ось до первого кубика, и если эта правая часть решаема то по полученному образцу (паттерну) добрать левую часть массива.
Вот мой вариант, еще есть куда оптимизировать, но это повлечет кучу проверок и еще увеличение кода:
Слыхали ты в гугл устроился, ну как там?)))
после 5 уровня отправил резюме в гугл, и теперь я ведущий спец там)))
«Клиент всегда прав.»
Соглашаемся и уточняем условие, не соглашаемся, значить скачим дальше.
«какие бы три ячейки не взяли сумма была бы 10»
4 + 4 + 4 != 10
…
[5, 6, 0, 0, 0, 0, 0, 0, 0, 0]
[-1, 6, 5, -1, 6, 5, -1, 6, 5, -1]
Подозревается что во все непроходимо вставить.
[0, 4, 0, 0, 6, 0, 0, 0, 0, 0]
[0, 4, 6, 0, 4, 6, 0, 4, 6, 0]
Судя по решениям пора открывать школу хитрых хакеров)))
вставь кубики верно, и все должно заработать
arr = { 6, 0, 0, 0, 0, 0, 0, 5, 0, 0 }
тут уж без вариантов, хотя под условия катит
[6, 2, 2, 1, 1, 1, 1, 5, 1, 1]
Сумма первых трех равна 10.
т.е. какие бы не взяли три подряд идущие ячейки, сумма равна 10
То есть замок уже не открыть? И таких еще куча ситуаций.
да согласен тогда…
любые три, т.е.
такой вывод
[2,4,4,2,4,4,2,4,4,2]
Рассмотри ситуацию абстрактно, опустив все свойств кубиков кроме числа на их лицевой стороне. Рассмотрим массив int[] arr этих чисел, длина его равна 10, сумма любых трех соседних чисел в массиве тоже равна 10. arr[i] = arr[j] для любых i, j (0 <= i, j < 10; i % 3 == j % 3). Почему? Для любого i (0 <= i < arr.length — 2) arr[i + 1] + arr[i + 2] = 10 — arr[i]. arr[i + 3] = 10 — arr[i + 1] — arr[i — 2]. arr[i + 4] + arr[i + 5] = 10 — arr[3]. И так далее. Поэтому если два уже заданных числа различаются, имея при этом индексы, равные по модулю 3, то решения нет.
Например:
[0, 0, 4, 0, 0, 0, 0, 0, 4, 0]
true? :)
true? D
может даже равен
market.yandex.ru/model-spec.xml?modelid=3775255&hid=91052&track=char