На этом этапе стоит определиться с, так называемой, длиной информационного слова, то есть длиной строки из нулей и единиц, которые мы будем кодировать. Допустим, у нас длина слова будет равна 16. Таким образом, нам необходимо разделить наше исходное сообщение («habr») на блоки по 16 бит, которые мы будем потом кодировать отдельно друг от друга. Так как один символ занимает в памяти 8 бит, то в одно кодируемое слово помещается ровно два ASCII символа. Итак, мы получили две бинарные строки по 16 бит:
Сегодня Counter Strike: Global Offensive – одна из самых популярных видеоигр в мире. Она занимает первые строчки в Steam, а о ее существовании знает каждый студент и школьник.
Однако 18 лет назад, когда первая версия игры только появилась, никто не мог предсказать такого успеха.
Counter-Strike – онлайн-шутер, суть которого заключается в противостоянии двух команд – террористов и контртеррористов (спецназа). У обеих команд есть цели в раунде, завершив которые, либо полностью уничтожив команду противника, они получают матч-поинт. Выиграв определенное количество раундов, команда выигрывает матч. Самый популярный сценарий – когда террористам нужно заложить бомбу в определенной точке, а спецназу ее обезвредить.
Но с чего же началась история уже ставшей легендарной серии?
Идея видеоигры о противостоянии террористов и спецназовцев возникла в конце 90-х, то есть до теракта 11 сентября и тотальной террористической угрозы. Ее создатель, канадец вьетнамского происхождения Мин «Gooseman» Ли, делал не коммерческий продукт об актуальной и острой проблеме, а модификацию – мод – другой игры на интересующую его тематику.
До CS мультиплеерные баталии проходили в скоростных шутерах с фантезийными декорациями и полностью нереальной физикой, таких как Quake и Unreal Tournament. К ним Мин Ли также создавал моды, причем весьма успешные: Navy Seals (мод к первому Quake) и Action Quake 2 (мод ко второму Quake, который он делал в составе сообщества модеров достаточно популярной в то время A-TEAM).
class Main {
public static void main(String[] args){
int[] a = new int[new java.util.Random().nextInt(100)];
for (int i = 0; i < a.length; i++)
a[i] = new java.util.Random().nextInt(499)+1;
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
int b = 0;
int c = 1;
for (int i = 0; i < a.length; i++)
if (a[i] % 3 == 0 && a[i] % 2 == 1) {
b += a[i];
c *= a[i];
}
System.out.print("\nsum: " + b + "\nmulti: " + c);
}
}
Проверка:
$ javac Main.java
327 206 226 438 363 169 433 338 75 127 429 77 271 487 384 173 325 169 250 128 432 214 297 31 238 294 307 151 425 1 19 373 136 246 86 368 183 38 92 186 334 64 486 107 285 240 445 480 271 174 8 325 476 143 169 496 254 437 330 227 496 134 460 20 395 387
sum: 2346
multi: 936904523