Х. Х. и в продакшн!
Очередной релиз от группы "Научно-технический рэп". Видос украл с этого канала.
Очередной релиз от группы "Научно-технический рэп". Видос украл с этого канала.
Выдали нам в универе задания по курсачу.
Множество было заданий интересных, были задания банальные и простые, как, например, формирование Word-документа.
Мне же попалось довольно интересное: реализация игры "Ход ладьёй". Минут 5 я въезжал, что да как, а потом понял, что задача состоит в том, чтобы разместить на каждой клетке число, а потом игроки (бот с человеком или человек с человеком) соревновались, кто наберет больше баллов.
Ок, босс. Ясно-понятно.
Тут оказывается, что у моего верного товарища Сани похожая задача, только в ней реализуется ход конем. Происходит следующий диалог:
я: - Сань, ты же знаешь, к курсачу дофига чего надо?
с: - Ты о чем?
я: - Я о документации. Ну там, описание, пояснительная записка, вступительная...
с: - Ну да
я: - Так давай ты займешься документациями, а я тебе напишу эту игру, все равно задания похожи ж
с: - Окей...
Проходит неделя.
Начинаю понемногу капать Сане на мозги. "Саша, ну что, как там у тебя?"
В один из прекрасных февральских деньков обращаюсь к Сане прямо на практике. Он психует и говорит что-то вроде: "Блин, ну я еще не брался. Но, поскольку меня уже все достали, я возьму и прямо сейчас сделаю"
Я отвечаю, мол, хорошо, Александер, валяй делай.
Через час он мне приносит вот это, смотрит на меня и улыбается. (осторожно, маты)
Ну, мы посмеялись, конечно же. Потом Саня переделал, конечно же. Но "постановка задачи" нас развеселила, мы немного отдохнули, и снова принялись за работу
А теперь игры делают мерчандайзеры с вейперами.
И вместо того, чтобы думать над тем, что они делают, они думают, как сольются в страстном миге анального экстаза в зассаном сортире гей-клуба в депрессивном районе города.
Это я про юзабилити.
Вот смотрите, есть задача. Есть разные цивилизации, и их города и отряды нужно обозначить на карте цветом. Есть два цвета: цвет фона и цвет рисунка на нём.
И очень важно, чтобы цвета не путались визуально. Это должно быть очевидным любому гейм-дизайнеру, если он не законченный метросексуальный вейпер.
Как эту задачу решали в былые времена? В былые времена программист брал несколько очень чётко различающихся цветов. Прямо вот опизденительно разных, чтобы даже дальтоник засомневался и сказал: что-то они какие-то разноватые, вы не находите?
К примеру, шесть охуенно разных цветов: чёрный, белый, красный, зелёный, желтый и синий. И если ты не полный стартапер, то по формуле (n^2)-n ты находишь количество осмысленных и различимых комбинаций (тут без факториала формула, потому что синий на белом и белый на синем — это разные комбинации по условиям задачи).
Для шести цветов количество комбинаций будет (6*6)-6 = 30. Тридцать матное слово очень чётко охуенно различающихся комбинаций мог бы сделать не только опытный программист, но и, матное слово, многие выпускники Компьютерной Академии ШАГ с кафедры программирования тоже могли бы это сделать, это совсем-совсем несложно.
Тридцать опизденительно чётко различаемых комбинаций из охереть как чётко различающихся цветов. Решительно невозможно перепутать бело-чёрную надпись с красно-зелёной, правда ведь? Тридцать комбинаций, а цивилизаций в игре — два десятка. Можно даже пропустить комбинации цветов, которые выглядят некрасиво.
И теперь остаётся только спросить у ведущего гейм-дизайнера, нежно взяв его за хипстерскую бородёнку, сняв очочки в роговой оправе, и вытряхнув из свитера с оленями.
Хочется спросить: зачем же ты, мой маленький свинцовый педераст, сделал японцев — красным на белом, а ацтеков — пурпурным на светлом нежно-голубоватом? Ты зачем это сделал, мразота? Зачем скифы коричнево-красные на бронзово-жёлтом, а Конго — красное на не настолько бронзово жёлтом? Ты зачем это сделал? Тебе доставляет удовольствие, когда люди страдают, да? В глаза смотри, веган ёбаный, ты это специально, да? И в жопу ему его запихать очочки вместе со свитером.
-----
Как вы, возможно, уже заметили, нервы восстанавливать парой дней выходных за компьютерными играми у меня не получается от слова "совсем"...
Может, вязание попробовать?
В армии ближе к дембелю, когда делать особо нечего, написал на компьютере (давно это было - 386-й, без HDD только 5.25 дискеты и DOS) программку на бейсике которая общается с человеком (через клавиатуру и экран конечно), а если встречает новое слово - спрашивает что это такое и так учится. То есть вы понимаете ключевой момент, да? Изначально программа практически ничего не знает, но спустя некоторое время программа как бы становится тем, у кого обучается, имеет те же самые понятия, отвечает так же как "учитель" и т.д.
Так вот захотел попробовать поговорить с ней один мой сослуживец, по характеру - типичный такой гопник. Я обнулил программу, посадил его и ушёл курить.
Через 10 минут он заходит в курилку:
- Сам ты м%дак и программа твоя г%%но!
- Что такое? Что случилось?
- Она меня на х%%й послала!
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Привет. Напоминаю в рамках тега изучениеджава (хейтерам банить именно его) я вместе с вами изучаю основы джава. Сегодня узнаем о рекурсии. Но для начала решение задачи, обсуждаемой в постах 6 и 7.
В седьмом посте для вывода я выбрал метод использования оператора Switch. Это наихудший вариант имхо, свой поступок я объяснить не могу. о.О
Решение ввода только цифр (проверять объяснять я его конечно же не буду):
Как вы помните, программы состоят из методов. Эти методы могут иметь параметры (об этом уже говорилось). А также могут возвращать какое-либо значение (либо не возвращать – ключевое слово void). Для того чтобы функция могла возвращать какое-либо значение необходимо выполнение трёх условий:
Первое условие: должен быть указан тип, который возвращает метод (на изображении ниже указан тип int).
Второе условие: в любом случае метод должен вернуть значение (выполняется при помощи слова return), в противном случае при компиляции возникнет ошибка.
Третье условие: возвращаемое значение должно иметь тип, который совпадает или можно привести к типу метода.
Рекурсией же называют вызов методом самого себя:
Как же работает рекурсия?
Мы вызываем метод fact с параметром a == 9. Метод проверяет не равняется ли а одному. Так как 9 не равно 1, возвращается значение:
девять умножить на значение, которое вернёт метод fact с параметром 9 – 1 (то есть 8).
и тут создаётся «копия» метода, которая вычисляет факториал восьми, после чего она вернёт факториал восьмёрки и этот факториал будет умножен на 9 «первой копией» метода.
и так далее «копии» методов вычисляют факториал пока, параметр а не будет равен единице, где функция возвращает определённое значение – один. И по вызовам мы возвращаемся назад.
Представьте, что у нас есть конструктор лего и дверь с ключом в замочной скважине. Мы поворачиваем ключ 9 раз, открываем дверь и видим за ней комнату с последним пунктом инструкции по сборке нашего лего в стеклянном ящике. Ящик прикован к полу, но нам прекрасно видно, что нарисовано в этом пункте. Также в комнате дверь с ключом, абсолютно напоминающая первую, только ключ в ней нужно повернуть 8 раз (это на стене написано, кровью….
Мы открываем вторую дверь восемью оборотами ключа: предпоследний пункт в таком же ящике, такая же дверь. Повернуть семь раз – написано калом.
….
Ещё шесть дверей спустя мы, наконец, находим первый пункт инструкции и начинаем сборку лего, возвращаясь назад по комнатам. Как только мы возвращаемся в третью комнату, вторая уничтожается, и т.д.
Примерно так и работает рекурсия.
Но зачем использовать рекурсию, если можно использовать цикл подобный следующему?
Да хуй его знает.
Попробуйте решить следующую задачу при помощи рекурсии:
По статистике наркоман каждый год затягивает в свои ряды пять новых человек. В среднем в тюрьмах сидит только каждый десятый наркоман. Сколько нужно заказать стульев с пиками точёнными, а сколько с хуями дрочёнными, через 5 лет учитывая следующие данные:
* сейчас в тюрьмах сидят 3000 наркоманов;
* на каждого посаженного наркомана, в год нужно по 1 стулу каждого типа.