Сохранен 50
https://2ch.hk/b/res/185781011.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Аноним 01/11/18 Чтв 15:23:55 #1 №185781011 
image.png
image.png
Помогите недопогромисту разобраться с задачей!

На втором пикрилейтед — задача из учебника по C++. Вопрос такой: а че от меня хотят-то? Ну, создал я вектор с "рандомными" значениями. Но что значит "це­лесообразно позволить пользователю самому вводить некоторые зна­чения"? Написать пользователю что-то вроде "введи рандомную последовательность камней, бумаг и ножниц плеез"? Или имеется ввиду, что значения, которые он вводит - это просто его ход (то есть, юзер выбирает предмет, компутер отвечает рандомно выбранным предметом, и определяется, кто победил)? Если все же последнее, то без нормального генератора случайных чисел (по условию задачи, низзя использовать настоящий генератор случайных чисел) как минимум первый ответ компутера не получится сделать непредсказуемым. Максимум, что я смогу сделать — как-то использовать для рандомизации то, что введет пользователь: камень, бумагу или ножницы. Что думаешь ты, анон? Как бы ты решил эту задачу? Код не требую, просто опиши.
Аноним OP 01/11/18 Чтв 15:25:44 #2 №185781089 
image.png
>>185781011 (OP)
Бля, хотел первой пикчей прикрепить обложку учебника, проебался.
Аноним OP 01/11/18 Чтв 15:28:32 #3 №185781250 
15340377060000.jpg
Бамп
Аноним OP 01/11/18 Чтв 15:28:51 #4 №185781267 
15324547980050.jpg
Бамп
Аноним OP 01/11/18 Чтв 15:29:07 #5 №185781279 
15318360926750.jpg
Бамп
Аноним OP 01/11/18 Чтв 15:31:04 #6 №185781367 
loliconmetal.webm
Бамп
Аноним OP 01/11/18 Чтв 15:32:32 #7 №185781436 
bilyard.webm
Бамп
Аноним OP 01/11/18 Чтв 15:33:39 #8 №185781500 
frets.mp4
Аноним 01/11/18 Чтв 15:33:51 #9 №185781513 
>>185781011 (OP)
Берёшь текущую секунду. Если это 0, 3, 6, 9 - то камень
1, 4, 7 - бумага, 2, 5, 8 - ножницы.
Аноним 01/11/18 Чтв 15:33:58 #10 №185781520 
>>185781250
загугли
Аноним 01/11/18 Чтв 15:34:54 #11 №185781562 
>>185781513
Мне кажется, там подразумевается, что читатель этого еще не умеет. Надо как-то иначе.
Аноним 01/11/18 Чтв 15:36:08 #12 №185781626 
юзер вводит seed, на основе которого производится какое-то преобразование вектора
Аноним 01/11/18 Чтв 15:37:48 #13 №185781688 
>>185781626
>seed
Сидом будет его первый ход или что-то иное?
Аноним OP 01/11/18 Чтв 15:38:37 #14 №185781719 
scales.mp4
Аноним 01/11/18 Чтв 15:38:41 #15 №185781722 
>>185781688
можно и первый ход, можно заранее брать, можно timestamp взять
Аноним 01/11/18 Чтв 15:39:34 #16 №185781764 
>>185781722
>заранее брать
Что брать?
Аноним 01/11/18 Чтв 15:40:15 #17 №185781802 
>>185781764
ввод с терминала
Аноним 01/11/18 Чтв 15:40:24 #18 №185781811 
>>185781011 (OP)
Как по мне - задача тупая. От тебя хотят простую игру, но при этом требуют нагородить генератора псевдослучайных чисел в виде предопределенной последовательности. А ведь можно было бы использовать что-то из стандартной библиотеки.

>Как бы ты решил эту задачу?
Дпропнул бы ее с такими тупыми условиями.
Аноним 01/11/18 Чтв 15:40:38 #19 №185781817 
Считываешь с клавы число cin >> num от 0 до 2, 0 камень, 1 ножницы 2 бумага, else cout << "wrong input"; далее рандомишь число и находишь остаток от деления на 3, сравниваешь и выводишь результат победителя
Аноним 01/11/18 Чтв 15:41:47 #20 №185781868 
>>185781817
>рандомишь число
Нельзя же, в глаза долбишься?
Аноним 01/11/18 Чтв 15:46:10 #21 №185782075 
По-другому никак, делай сид по времени и не выебывайся
Аноним 01/11/18 Чтв 15:46:10 #22 №185782077 
>>185781562
Там сказано, что нельзя использовать функцию rand()
Аноним 01/11/18 Чтв 15:46:57 #23 №185782114 
>>185781817
Ты рил конченый мазохист
Аноним 01/11/18 Чтв 15:47:22 #24 №185782130 
>>185782077
Нигде ранее в учебнике ничего про timestamp не говорилось.
Аноним 01/11/18 Чтв 15:48:32 #25 №185782176 
Задай функцию обработки входных данных от пользователя, где в каждой новой игре учитываются входные значения прошлой игры
Аноним 01/11/18 Чтв 15:50:54 #26 №185782311 
>>185782176
Это надо в файл записывать данные, ну нахуй. И, опять же, об этом в учебнике еще ничего не было.
Аноним 01/11/18 Чтв 15:52:03 #27 №185782358 
>>185782311
Ничо не надо, пусть входными данными заполняется массив или матрица, а при его заполнении обнуляется
Аноним 01/11/18 Чтв 15:52:56 #28 №185782402 
>>185782311
В некотором смысле прикольная задача, построить "рандом" без рандома
Аноним 01/11/18 Чтв 15:54:07 #29 №185782468 
>>185782358
Я не правильно понял твои слова:
>в каждой новой игре
Я думал, ты имеешь ввиду после перезапуска программы. Так — да, норм решение, спасибо.
Аноним 01/11/18 Чтв 15:54:40 #30 №185782496 
>>185781011 (OP)
Проиграл с мамкиного программиста итт. Вместо алгоритмов, языков и фреймворков ты тратишь время на говно, и к окончанию своей шараги будешь знать только cout << "хуй";
Аноним 01/11/18 Чтв 15:54:53 #31 №185782509 
>>185782311
Понапихай в функцию обработки вводных данных кучу if
Аноним 01/11/18 Чтв 15:55:20 #32 №185782537 
>>185782468
> норм решение
Забыл добавить: норм решение, за исключением того, что при первом запуске программы первый ход компутера можно предугадать. Наверное, это неизбежно.
Аноним 01/11/18 Чтв 15:56:23 #33 №185782592 
>>185782468
Программа необязательно должна закрываться после конца игры, это же тупо, если нет кнопки начать заново
Аноним 01/11/18 Чтв 15:57:58 #34 №185782665 
>>185782592
Так если сам пользователь перезапустить программу, он выебет программу, заранее знаю, какой логикой он руководствуется.
Аноним 01/11/18 Чтв 15:58:06 #35 №185782673 
Тред не читал, но нахуй тебе вектор
Обычным rand()%3 решается вся твоя программа
Аноним 01/11/18 Чтв 15:58:52 #36 №185782714 
>>185782673
>rand()
Перечитай условия еще раз. Сложность как раз в том, что так нельзя.
Аноним 01/11/18 Чтв 16:02:08 #37 №185782888 
>>185781011 (OP)
>настоящий генератор случайных чисел
>довольно тяжело
невозможно?
Аноним 01/11/18 Чтв 16:03:43 #38 №185782964 
>>185782714
Как тогда просят написать игру, основанную на рандоме, без использования rand? Принеси преподу вариант с rand и дополни его ещё srand(time(NULL)), чтобы не предъявлял. Скажешь, что не понял вектор, сделал как лучше и как проще
Это как просить решить квадратное уравнение, но юзер не знает умножения, поэтому делай по-другому
Аноним 01/11/18 Чтв 16:07:00 #39 №185783120 
>>185781011 (OP)
Где учишься?
Аноним 01/11/18 Чтв 16:09:42 #40 №185783261 
>>185781011 (OP)
Заполняешь за вектор, потом читаешь ввод пользователя и выбираешь ответ в зависимости от ввода пользователя и значения из вектора. Например, если пользователь ввел камень, то выбираешь значение из вектора стоящее через 1 от текущего, если ножницы -- то через 2, бумага -- через 5, к примеру.

Со стороны будет казаться что всё очень случайно
Аноним 01/11/18 Чтв 16:12:50 #41 №185783427 
Есть костыль, что ты заполняшь вектор заранее известными числами, и в зависимости от ввода юзера по какой-нибудь неебически сложной формуле выбираешь какой-то элемент вектора. Со стороны будет казаться довольно рандомно. А вот по какой формуле - это сам гугли. Может типа вначале запускаешь таймер, потом число юзера умножаешь на таймер, находишь остаток от деления на длину вектора и выдаёшь число
Аноним 01/11/18 Чтв 16:14:03 #42 №185783492 
>>185783427
>>185783261
Ну или так, как пример того, что я говорил про формулу
Аноним 01/11/18 Чтв 16:14:54 #43 №185783537 
>>185782964
>>185783120
Не учусь пока, сам решил попробовать учиться по книжке. Язык (основы) знаю, с программированием знаком, но думал, что, возможно, прочитав от корки до корки учебник, я узнаю побольше о языке. Пока только приходится ебаться с тупыми задачками.
Аноним 01/11/18 Чтв 16:16:46 #44 №185783621 
>>185781011 (OP)
1) пользователю на инпут камень, ножницы, бумага
2) у тебя есть массив с тремя значениями
3) после инпута дергаешь элемент массива с рандомным индексом (не помню, если ли в плюсах рандомгенератор из коробки)
Аноним 01/11/18 Чтв 16:16:52 #45 №185783632 
>>185783537
Открой лучше stepik.org и пройти там курс по плюсам.
Там и теория понятнее дается и задачи более адекватные и понятные.

https://stepik.org/catalog?q=C%2B%2B&tag=22872
Аноним 01/11/18 Чтв 16:34:55 #46 №185784590 
image.png
Что думаете о таком подходе: объявляю переменную seed, равную нулю. К ней с каждой новой игрой буду прибавлять то, что вводит пользователь (значение от 1 до 3). Затем применяю формулу на пикриле. 25 - длина вектора; цикл нужен только для того, чтобы продемонстрировать, то, что выдает формула для разных значений seed. Что думаете?
Аноним 01/11/18 Чтв 16:37:14 #47 №185784705 
>>185781011 (OP)
Помню в своей шараге эту задачу решал, так ещё и усложнял её до китайского варианта, или какого-то там.
Интерфейс ещё делал, всякое говно.
Аноним 01/11/18 Чтв 17:12:16 #48 №185786550 
3 кнопки внизу, 1 вверху.
Если игрок выбирает ножницы и текущее время (милисекунды) от 0 до 333, то враг выбирает ножницы.
Если игрок выбирает ножницы и текущее время (милисекунды) от 334 до 666, то враг выбирает бумагу.
Если игрок выбирает ножницы и текущее время (милисекунды) от 667 до 999, то враг выбирает камень.

Если игрок выбирает бумагу и текущее время (милисекунды) от 0 до 333, то враг выбирает камень.
Если игрок выбирает бумагу и текущее время (милисекунды) от 334 до 666, то враг выбирает ножницы.
Если игрок выбирает бумагу и текущее время (милисекунды) от 667 до 999, то враг выбирает бумагу.


Если игрок выбирает камень и текущее время (милисекунды) от 0 до 333, то враг выбирает бумагу.
Если игрок выбирает камень и текущее время (милисекунды) от 334 до 666, то враг выбирает камень.
Если игрок выбирает камень и текущее время (милисекунды) от 667 до 999, то враг выбирает ножницы.
...
Аноним 01/11/18 Чтв 17:35:54 #49 №185787718 
>>185784590
Дебил, такой подход уже говорили
Аноним 01/11/18 Чтв 17:54:50 #50 №185788607 
>>185787718
Я понимаю. Его описали в целом, а мне интересно, норм ли конкретно эта функция, или можно улучшить? И не надо кидаться оскорблениями, это неправильно.
comments powered by Disqus

Отзывы и предложения