Постройте схему, соответствующую заданной логической функции, на логических элементах «И», «ИЛИ» и «НЕ». Предварительно преобразуйте выражение так, чтобы количество использованных логических элементов было минимальным. Постройте схему, соответствующую заданной логической функции, на логических элементах «И», «ИЛИ» и «НЕ» (в базисе «И-ИЛИ-НЕ»). Предварительно преобразуйте выражение так, чтобы количество использованных логических элементов было минимальным.
Существовало две игры. Одна проигрывалась в жизни. Другая проживалась в игре. Естественно, однажды эти миры столкнулись, равно как и Два Джона.
Это случилось в апреле 2000 года в деловом районе Далласа{1}[1]. Поводом послужили 100 тыс. долларов, стоявшие на кону, – главный приз в чемпионате по компьютерной игре Quake III Arena, который проводила Cyberathlete Professional League, организация, надеявшаяся когда-нибудь стать своего рода Национальной футбольной лигой в кибер Все было устроено по принципу BYOC[2]. В подвале отеля Hyatt сотни компьютеров объединили в сеть: участникам предстояло провести за ними семьдесят два часа без перерыва. На огромном экране, на который выводилось то, что отображалось на мониторах игроков, проносились ракеты. Пыхающие сигарами космические десантники, грозные широкоплечие воины, забрызганные кровью клоуны-маньяки – все они гонялись друг за другом с ракетными установками и плазменными пушками с одной целью: убить как можно больше персонажей.
Участники соревнования были матерыми геймерами, проделавшими огромный путь. Больше тысячи человек приехали на машинах из далекой Флориды и даже Финляндии, привезя с собой собственные монитор, клавиатуру и мышку. Они бились до тех пор, пока не начинали падать в обморок или сползать под стол, чтобы поспать, подложив под голову коробку из-под пиццы. Одна парочка гордо заявилась с новорожденным младенцем, одетым в самодельную пижаму с надписью Quake. Двое парней выбрили на голове логотип Quake в виде когтя; их подружки кружили по конференц-залу с бритвами наготове, предлагая всем желающим сделать культовую прическу.
Подобные страсти было отнюдь не редкостью для Далласа – столицы ультражестких игр типа Quake или DOOM. Игры, в которых, как в пейнтболе, играешь от первого лица, положили начало новому жанру, известному как first person shooter[3]. Они входят в число самых успешно продаваемых франшиз в этой индустрии, оцениваемой в 10,8 миллиона долларов, и заставляют американцев тратить больше денег на видеоигры, нежели на билеты в кино{2}. В свое время они развитию вычислительной техники, расширив границы 3D-графики и задав стандарт онлайн-игр и сообществ. Вместе с тем из-за них так сильно накалилась социально-политическая обстановка, что их даже запретили в ряде стран, а в США признали, что именно они спровоцировали череду убийств, совершенных в 1999 году двумя фанатами в Колумбийском университете.
В результате сформировалось уникальное неформальное сообщество, высокотехнологичная Мекка, где совершенно безумных одаренных молодых геймеров награждали крупными призами. Самыми одаренными и безумными среди них оказались соавторы DOOM и Quake Джон Кармак и Джон Ромеро, или, как их все называли, Два Джона.
Для нового поколения Кармак и Ромеро стали олицетворением «американской мечты»: оба – профессионалы, сделавшие себя сами и превратившие личное увлечение в большой бизнес, новую форму искусства, культурный феномен. История их успеха сделала их самыми необычными антигероями как по мнению Fortune 500, так и по мнению компьютерных хакеров; их называли Ленноном и Маккартни видеоигр (хотя более лестным для них было бы, вероятно, сравнение с Metallica). Оба Джона оставили свои неблагополучные семьи, чтобы создать одни из самых значимых компьютерных игр в истории. Но так вышло, что они же стали причиной, по которой их пути разошлись. И вот теперь, спустя годы после разрыва, Кармаку и Ромеро предстояло вместе выйти к своим фанатам.
Они согласились рассказать о своих последних проектах: детище Кармака Quake Arena III, разработанном в компании id Software, которую они основали сообща, и долгожданной эпической игре Daikatana авторства Ромеро, появившейся на свет в его новом стартапе Ion Storm. Эти игры объединяли полярные различия, в свое время сплотившие Двух Джонов в столь динамичный дуэт, а ныне превратившие их в, казалось, абсолютно непримиримых соперников. Их отношения стали предметом изучения человеческой алхимии.
29-летний Кармак, программист-филантроп, вел монашеский образ жизни и в свободное время собирал мощные ракеты (по мнению Билла Гейтса, он входил в шорт-лист гениев); его игра, равно как и вся жизнь, сводилась в своем устройстве к элегантной продуманности компьютерного кода. 32-летний Ромеро – дерзкий дизайнер, чей имидж плохого парня превратил его в рок-звезду индустрии, – мог поставить на кон все, включая собственную репутацию, чтобы реализовать самые смелые проекты. Как сказал Кармак после их разрыва: «Ромеро нужна целая империя, я же всего лишь хочу писать хорошие программы»{3}.
var s, wd: string; i, j, m, n, pt, step: integer; Words, WordsSort: array[1..k] of string; InOrder: boolean;
begin Write('Введите строку: '); Readln(s); n := Length(s); pt := 1; m := 0; repeat // Пропускаем все символы до первого непробельного while pt <= n do if Ord(s[pt]) <= 32 then Inc(pt) else break; if pt <= n then begin // Выделяем очередное слово wd := ''; while pt <= n do if Ord(s[pt]) > 32 then begin wd := wd + s[pt];Inc(pt) end else break; if wd <> '' then begin Inc(m);Words[m] := wd end end until pt > n; // Теперь Words содержит все m слов. // Отсортируем их в массиве WordsSort методом Шелла for i := 1 to m do WordsSort[i] := Words[i]; step := m div 2; while step > 0 do begin for j := m - step downto 1 do begin i := j; while i <= m - step do begin if WordsSort[i] > WordsSort[i + step] then begin wd := WordsSort[i]; WordsSort[i] := WordsSort[i + 1]; WordsSort[i + 1] := wd end; i := i + step end end; step := step div 2 end; // Осталось поэлементно сравнить оба массива InOrder := true; i := 1; while InOrder and (i <= m) do begin InOrder := (Words[i] = WordsSort[i]); Inc(i) end; if m = 0 then Writeln('Строка не содержит слов') else if InOrder then Writeln('Cлова упорядочены') else Writeln('Cлова не упорядочены') end.
Введите строку: слово1 слово2 слово4 слово3 слово5 Cлова не упорядочены
"Современный" вариант решения на Паскале:
// PascalABC.Net 3.0, сборка 1064 var s:string; begin Write('Введите строку: '); Readln(s); var Delim:=Range(0,32).Select(x->Chr(x)).ToArray; var Words:=s.Split(Delim).Where(x->x<>''); var WordsSort:=Words.Sorted; if Words.SequenceEqual(WordsSort) then Writeln('Cлова упорядочены') else Writeln('Cлова не упорядочены') end.
Существовало две игры. Одна проигрывалась в жизни. Другая проживалась в игре. Естественно, однажды эти миры столкнулись, равно как и Два Джона.
Это случилось в апреле 2000 года в деловом районе Далласа{1}[1]. Поводом послужили 100 тыс. долларов, стоявшие на кону, – главный приз в чемпионате по компьютерной игре Quake III Arena, который проводила Cyberathlete Professional League, организация, надеявшаяся когда-нибудь стать своего рода Национальной футбольной лигой в кибер Все было устроено по принципу BYOC[2]. В подвале отеля Hyatt сотни компьютеров объединили в сеть: участникам предстояло провести за ними семьдесят два часа без перерыва. На огромном экране, на который выводилось то, что отображалось на мониторах игроков, проносились ракеты. Пыхающие сигарами космические десантники, грозные широкоплечие воины, забрызганные кровью клоуны-маньяки – все они гонялись друг за другом с ракетными установками и плазменными пушками с одной целью: убить как можно больше персонажей.
Участники соревнования были матерыми геймерами, проделавшими огромный путь. Больше тысячи человек приехали на машинах из далекой Флориды и даже Финляндии, привезя с собой собственные монитор, клавиатуру и мышку. Они бились до тех пор, пока не начинали падать в обморок или сползать под стол, чтобы поспать, подложив под голову коробку из-под пиццы. Одна парочка гордо заявилась с новорожденным младенцем, одетым в самодельную пижаму с надписью Quake. Двое парней выбрили на голове логотип Quake в виде когтя; их подружки кружили по конференц-залу с бритвами наготове, предлагая всем желающим сделать культовую прическу.
Подобные страсти было отнюдь не редкостью для Далласа – столицы ультражестких игр типа Quake или DOOM. Игры, в которых, как в пейнтболе, играешь от первого лица, положили начало новому жанру, известному как first person shooter[3]. Они входят в число самых успешно продаваемых франшиз в этой индустрии, оцениваемой в 10,8 миллиона долларов, и заставляют американцев тратить больше денег на видеоигры, нежели на билеты в кино{2}. В свое время они развитию вычислительной техники, расширив границы 3D-графики и задав стандарт онлайн-игр и сообществ. Вместе с тем из-за них так сильно накалилась социально-политическая обстановка, что их даже запретили в ряде стран, а в США признали, что именно они спровоцировали череду убийств, совершенных в 1999 году двумя фанатами в Колумбийском университете.
В результате сформировалось уникальное неформальное сообщество, высокотехнологичная Мекка, где совершенно безумных одаренных молодых геймеров награждали крупными призами. Самыми одаренными и безумными среди них оказались соавторы DOOM и Quake Джон Кармак и Джон Ромеро, или, как их все называли, Два Джона.
Для нового поколения Кармак и Ромеро стали олицетворением «американской мечты»: оба – профессионалы, сделавшие себя сами и превратившие личное увлечение в большой бизнес, новую форму искусства, культурный феномен. История их успеха сделала их самыми необычными антигероями как по мнению Fortune 500, так и по мнению компьютерных хакеров; их называли Ленноном и Маккартни видеоигр (хотя более лестным для них было бы, вероятно, сравнение с Metallica). Оба Джона оставили свои неблагополучные семьи, чтобы создать одни из самых значимых компьютерных игр в истории. Но так вышло, что они же стали причиной, по которой их пути разошлись. И вот теперь, спустя годы после разрыва, Кармаку и Ромеро предстояло вместе выйти к своим фанатам.
Они согласились рассказать о своих последних проектах: детище Кармака Quake Arena III, разработанном в компании id Software, которую они основали сообща, и долгожданной эпической игре Daikatana авторства Ромеро, появившейся на свет в его новом стартапе Ion Storm. Эти игры объединяли полярные различия, в свое время сплотившие Двух Джонов в столь динамичный дуэт, а ныне превратившие их в, казалось, абсолютно непримиримых соперников. Их отношения стали предметом изучения человеческой алхимии.
29-летний Кармак, программист-филантроп, вел монашеский образ жизни и в свободное время собирал мощные ракеты (по мнению Билла Гейтса, он входил в шорт-лист гениев); его игра, равно как и вся жизнь, сводилась в своем устройстве к элегантной продуманности компьютерного кода. 32-летний Ромеро – дерзкий дизайнер, чей имидж плохого парня превратил его в рок-звезду индустрии, – мог поставить на кон все, включая собственную репутацию, чтобы реализовать самые смелые проекты. Как сказал Кармак после их разрыва: «Ромеро нужна целая империя, я же всего лишь хочу писать хорошие программы»{3}.
// PascalABC.Net 3.0, сборка 1064
const
k = 100;
var
s, wd: string;
i, j, m, n, pt, step: integer;
Words, WordsSort: array[1..k] of string;
InOrder: boolean;
begin
Write('Введите строку: '); Readln(s);
n := Length(s); pt := 1; m := 0;
repeat
// Пропускаем все символы до первого непробельного
while pt <= n do
if Ord(s[pt]) <= 32 then Inc(pt) else break;
if pt <= n then begin
// Выделяем очередное слово
wd := '';
while pt <= n do
if Ord(s[pt]) > 32 then begin wd := wd + s[pt];Inc(pt) end
else break;
if wd <> '' then begin Inc(m);Words[m] := wd end
end
until pt > n;
// Теперь Words содержит все m слов.
// Отсортируем их в массиве WordsSort методом Шелла
for i := 1 to m do WordsSort[i] := Words[i];
step := m div 2;
while step > 0 do begin
for j := m - step downto 1 do begin
i := j;
while i <= m - step do begin
if WordsSort[i] > WordsSort[i + step] then begin
wd := WordsSort[i];
WordsSort[i] := WordsSort[i + 1];
WordsSort[i + 1] := wd
end;
i := i + step
end
end;
step := step div 2
end;
// Осталось поэлементно сравнить оба массива
InOrder := true; i := 1;
while InOrder and (i <= m) do
begin InOrder := (Words[i] = WordsSort[i]); Inc(i) end;
if m = 0 then Writeln('Строка не содержит слов')
else
if InOrder then Writeln('Cлова упорядочены')
else Writeln('Cлова не упорядочены')
end.
Тестовое решение:
Введите строку: слово1 слово2 слово3 слово4 слово5
Cлова упорядочены
Введите строку: слово1 слово2 слово4 слово3 слово5
Cлова не упорядочены
"Современный" вариант решения на Паскале:
// PascalABC.Net 3.0, сборка 1064
var
s:string;
begin
Write('Введите строку: '); Readln(s);
var Delim:=Range(0,32).Select(x->Chr(x)).ToArray;
var Words:=s.Split(Delim).Where(x->x<>'');
var WordsSort:=Words.Sorted;
if Words.SequenceEqual(WordsSort) then Writeln('Cлова упорядочены')
else Writeln('Cлова не упорядочены')
end.
Тестовое решение совпадает с вышеприведенным.