Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Rooster

Программирование, т. 7

  

536 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

(изменено)

 

return first > second ? first << second : first | second;

 

прикольно, но слишком нечитаемо

 

p.s. [ code ] [ / code ]


Изменено пользователем DDamager

Поделиться сообщением


Ссылка на сообщение
(изменено)

    int oneOrTwoRandom() {
        return new Random().nextInt(2) + 1; //returns 1 or 2
    }

    volatile int prev = oneOrTwoRandom();

    int oneToFourRandom() {
        int first = oneOrTwoRandom();
        try {
            return prev == 2 ? first : first + 2;
        } finally {
            prev = first;
        }
    }
Ещё немного быдлокодерский вариант если нужно уменьшить сложность пожертвовав энтропией.

 

Хотя вариант этот все же будет быстрее и меньше стека занимает.

 int oneToFourRandom2() {
        int first = oneOrTwoRandom();
        int ret = prev == 2 ? first : first + 2;
        prev = first;
        return ret;
    }
Хотя не, пизжу, после прогрева JIT и на большом числе итераций по производительности они оказались идентичны. В первом только jvmкода больше на 5 строк.

Вот я херней страдаю среди ночи.


Изменено пользователем Index
TheDeadSkin и DDamager понравилось это

Поделиться сообщением


Ссылка на сообщение

Это видимо в честь 50-тилетия программирования для детей.

//1,2,3 или 4
fun getNewRandom() = ((getRandom()-1) shl 1 or (getRandom()-1)) + 1
//1 или 2
fun getRandom() = Random().nextInt(2)+1

вот мой вариант. С +1 и -1 это конечно так себе выглядит, но идея думаю понятна

Поделиться сообщением


Ссылка на сообщение
(изменено)

у дедскина это уже было


Изменено пользователем DDamager

Поделиться сообщением


Ссылка на сообщение
(изменено)

у дедскина это уже было

тред не читай @ сразу отвечай

 

А впрочем, мой вариант - это твой вариант, только без условий


Изменено пользователем Ubububu

Поделиться сообщением


Ссылка на сообщение

раз уж вы про задачки

меня такое на собеседовании спрашивали

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

 

 

я решил - меня взяли  :trollface:


65881.png

Поделиться сообщением


Ссылка на сообщение

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


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

Делаешь вагон со вкл, следующий с выкл. (или наоборот, хз)

Поделиться сообщением


Ссылка на сообщение

hTG4L63aSuaAe3d0ft239Q.png

:pray:  :pray:  :pray:  :pray:


 

<< твой комментарий очень важен для форума.

Поделиться сообщением


Ссылка на сообщение

Делаешь вагон со вкл, следующий с выкл. (или наоборот, хз)

это ничего не меняет

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

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

Делаешь вагон со вкл, следующий с выкл. (или наоборот, хз)

это ничего не меняет

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

 

Ты же спрашивал про стартовую точку -> 10000010001, смекаешь? (бинарное число от балды)


Изменено пользователем Veers

Поделиться сообщением


Ссылка на сообщение
(изменено)

чем это поможет? ты не можешь её отличить от продолжения дальше

 

если ты делаешь 100000000 потом дальше видишь опять 100000000 или вообще 100000000100000000, откуда ты знаешь что 1 это твоя стартовая 1 а не продолжение дальше где случайный паттерн сложился таким же образом?

 

я просто к тому что чтобы такое решение было рабочим надо как минимум добавить проверку где ты свичнешь свет в любом месте когда ты думаешь что вернулся в начало, потом по своему маршруту вернёшься обратно и убедишься что там свет тоже поменялся

это единственный способ гарантировать верность решения


Изменено пользователем TheDeadSkin

Поделиться сообщением


Ссылка на сообщение

в своем вагоне оставляешь свет включенным

и идешь вперед пока не упрешься опять во включенный свет, при этом считаешь насколько вперед ушел (n шагов)

когда уперся во включенный – возвращаешься в свой первый вагон и смотришь поменялся ли свет

 

если нет, то начинаешь делать наоборот – вырубаешь свет, включаешь везде впереди и идешь пока не упрешься в темный вагон (n + m, где  1<m<бесконечность)


сначала когда уперся во включенный вырубить свет главное не забыть

DDamager, TheDeadSkin, Rooster и 2 другим понравилось это

Поделиться сообщением


Ссылка на сообщение

Дайте угадаю, люди которые решают такие ахуенные задачки, потом лутают эпические 30-80к рубасов в месяц в столь илитарных местах?  :trollface:

ElGobedano понравилось это

userbar-53933.png

http://codepen.io/suez/ - they see me bydlocoding, they hatin.

Поделиться сообщением


Ссылка на сообщение

Дайте угадаю, люди которые решают такие ахуенные задачки, потом лутают эпические 30-80к рубасов в месяц в столь илитарных местах?  :trollface:

hits too close to home  :cry:

в своем вагоне оставляешь свет включенным

и идешь вперед пока не упрешься опять во включенный свет, при этом считаешь насколько вперед ушел (n шагов)

когда уперся во включенный – возвращаешься в свой первый вагон и смотришь поменялся ли свет

 

если нет, то начинаешь делать наоборот – вырубаешь свет, включаешь везде впереди и идешь пока не упрешься в темный вагон (n + m, где  1<m<бесконечность)

сначала когда уперся во включенный вырубить свет главное не забыть

это правильно бтв  :buba:


65881.png

Поделиться сообщением


Ссылка на сообщение
(изменено)

если лимит сверху не знаем то не решается задача


Дайте угадаю, люди которые решают такие ахуенные задачки, потом лутают эпические 30-80к рубасов в месяц в столь илитарных местах?  :trollface:

 

про вагоны это такое

а вот про рандом могут и на интервью в гугле спросить для разогрева


Изменено пользователем DDamager

Поделиться сообщением


Ссылка на сообщение

если лимит сверху не знаем то не решается задача

решается

если мы его не знаем, но знаем что он конечный (∀N, N < ∞) то решается по способу с черхардой обратно когда тебе "кажется" что ты нашёл ответ

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

Поделиться сообщением


Ссылка на сообщение

 

 

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

Но ходишь то ты. И где гарантии что после тысячи вагонов ты не ебанешься и не сделаешь паунс в окно? 

Поделиться сообщением


Ссылка на сообщение

 

если лимит сверху не знаем то не решается задача

решается

если мы его не знаем, но знаем что он конечный (∀N, N < ∞) то решается по способу с черхардой обратно когда тебе "кажется" что ты нашёл ответ

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

 

 

а ну да сори я хотел сказать если лимита сверху нет (бесконечность)

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...