.xX$$x.
        .x$$$$$$$x.
       d$$$$$$$$$$$
     ,$$$$$$$P' `P'
     $$$$$$P'   '
     $$$$$P    b     ,$$x     ,$$x    ,$$x
     Y$$$$'    `$.  $$$$$$.  $$$$$$  $$P~d$.
     `$$$$     ,$$ $$$$$$$b $$$P `$ $$$b.$$b
      `$$$    ,$$$,$$' `$$$ $$$'  ' $$P$XX$'
       `Y$b ,d$$$P `$b,d$P' `$$.    `$$.  ,
        `$$$$$$$'    $$$P'   `$$b    `$$$P

           .xX$$x.
        .x$$$$$$$x.
       d$$$$$x'x$$$              $
     ,$$$$$P    $P               x$
     $$$$$P    '                ,$$   ,$$x     ,$$x    ,$$x     ,$$x
     Y$$$$$$x'  $x   x$,$$$b,  ,$P   $$$$$$.  $$$$$$  $$P~d$.  $$$$$$
     $$$$$$$X'   $$ $$  $$  $$ $$'  $$$'`$$b $$$P `$ $$$b.$$b $$$P `$
     '$$$b        $$$   $$   $ $$'  $$' `$$$ $$$'  ' $$P$XX$' $$$'  '
       '$$b   .x $$ $$  $$  $$ $$L  `$b,d$P' `$$.    `$$.  ,  `$$.
         'x$$$$'x$   $x $$$$P   Y$$P' $$$P'   `$$b    `$$$P    `$$b
                        $$'
                        $$
Выпуск 2               $$
24/11/05
_______________________ $$
____________________________________________________
                        $P

Это второй выпуск "The Core Explorer", нового электронного журнала для
распостранения игры CoreWar среди новых игроков. Мы начнём с нуля и расскажем
много разных стратегий, трюков и финтов чтобы стать более продвинутым игроком.
Просим прощения за задержку. Журнал будет поститься в rec.games.corewar более
часто, но у большинства из нас заняло кучу времени подготовка к CSEC2005
(Corewar Single Elimination Cup 2005) оганизованный Кристианом Шмидтом
(Christian Schmidt), И поэтому не было времени писать статьи. Конечно нас
интересуют ваши статьи тоже и обратная связь от читателей. Если вы хотите
что-то прояснить, или получить какоё-нибудь совет по специфической теме,
вам стоит послать нам письмо и сообщить чего хочется. Мы надеемся, что темы
рассмотренные в этом выпуске будут для вас интересными. Читайте и получайте
удовольствие!

_____________________________________________________________________________
___ Roy's Top 10 Resources: _________________________________________________

Известно, что для новичков бывет сложно найти хорошие ресурсы в Сети.
Вот наш список из 10 самых популярных сайтов и туториалов

- The beginners guide to Redcode
- Steve Bailey's Guides
- Phillip Kendall
- The Core Warrior
- Steve Morrell
- Corewar Lexion
- Fizmo's CoreWar site
- John Metcalfs Library
- KOTH.org (Info Section)
- rec.games.corewar (+FAQ)

Также IRC:

Сервер:     irc.koth.org:6667
Канал:      #corewars

Мы что-ниудь забыли? Пишите нам!
_____________________________________________________________________________
_______изучая "камни" - основы_______________________________________________

Если вы новичек и читали хотя бы вступление к каим-нибудь документам
обьясняющим основы игры, вы наверняка натыкались на бойца Dwarf (Гном). Это
простой боец и не очень эффективный по современным стандартам, поэтому вы не
сможете использовать его чтобы атаковать (успешно) холм. Тем не менее это
пример обширной группы бойцов называемых "камнями" (stones).

Итак, что жет такое "камень". Как мы его определим? Принято называть бойца
камнем, если он атакует путем копирования некоторых инструкций по всей памяти
надеясь попасть во врага, и НЕ обращает внимание находится ли вражеский код
в том месте куда эти инструкции копируются. Бойцы которые испоьзуют более
интеллектуальный подход - сначала посмотреть где находится враг, а потом
активно атаковать - называются "сканерами" (scanners), и мы поговорим о них
более подробно в следующих выпусках.

Инструкции которые камень копирует надеясь поразить врага называют "бомба" и
мы так будем их называть с этого момента. Также будем говорить что камень
"кидает бомбы" по памяти вместо термина "копировать". Это общепринятая
практика среди редкодеров и к тому же эти тервины интуитивно понятны. Наиболее
часто камни используют DAT бомбы, так как они немедленно уничтожают процесс
выполнивший их (точнее, удаляют поток выполнения из списка потоков). Некоторые
камни испоьзуют другие бомбы, но мы поговорим о них позже. Давайте сначал
глянем на Гнома, чтобы напомнить себе как он работает. Вот код (по крайней
мере одна версия - я не уверен как выглядел оригинальный боец - существует
куча похожих спсобов написать его):

step equ 4

    org dwarf

dwarf   add.ab  # step, bomb
    mov.i   bomb,   @ bomb
    jmp     -2, 0
bomb    dat     0,  0

    end

Итак, как он работает? Он делает следующее, увеличивает Б-поле инструкции DAT
расположенной на метке bomb, а потом копирует DAT туда, куда это Б-поле
указывает. Потом прыгает на начло и цикл повторяется. Насколько увеличивается
Б-поле в метке bomb? В нашем случае - на 4. Будем называть это увеличение
"шагом" камня. Иллюстрация к выше описанному:

dwarf   add.ab  # step, bomb    ;Это только что выполнили
    mov.i   bomb,   @ bomb  ;эта инструкция сейчас выполнится
    jmp     -2,     0
bomb    dat     0,  step

и потом:

dwarf   add.ab  # step, bomb
    mov.i   bomb,   @ bomb  ;эта инструкция только что кинула бомбу
    jmp     -2,     0
bomb    dat     0,  step
    dat     0,  0   ;(step-1) пропусков
    dat 0,  0   ;..
    dat 0,  0   ;..
    dat     0,  step    ;бомба кинутая на один шаг

3-мя циклами позже:

dwarf   add.ab  # step, bomb
    mov.i   bomb,   @ bomb  ;эта инструкция только что кинула бомбу
    jmp     -2,     0
bomb    dat     0,  2*step
    dat 0,  0
    dat     0,  0
    dat 0,  0
    dat     0,  step    ;бомба кинутая на один шаг (3 цикла назад)
    dat 0,  0
    dat     0,  0
    dat 0,  0
    dat     0,  2*step  ;бобма кинутая только что на 2 шага

Это очень просто. Теперь у вас наверное возник вопрос: убьёт ли Гном себя
когда-нибудь(когда CORESIZE==8000)? Если вы запустите его в эмуляторе, вы
увидите что этого не случится. Почему? Из-за шага. Потому-что 8000 делится на
4 без остатка. Другими словами Гном будет бомбить 8000/4 мест в памяти, с
одинаковых интервалами:

    dat     0,  0
    dat     0,  0
    dat     0,  0
    dat     0,  n*step
    dat     0,  0
    dat     0,  0
    dat     0,  0
    dat     0,  (n+1)*step
    dat     0,  0
    dat     0,  0
    dat     0,  0
    dat     0,  (n+2)*step
    dat     0,  0
    dat     0,  0
    dat     0,  0
    dat     0,  (n+3)*step
    ...
    ...

Так как бомба расположена сразу за jmp -2, 0, то jmp, mov, и add не будут
повреждены если боец использует этот шаг. Как насчёт других шагов? Любй другой
шаг приводящий к такому же рисунку в памяти можно безопасно использовать. К
тому же некоторые другие значения шага использовать в этом случае лучше. Почему?
Например, 3044 даёт тот же результат по местам бомбления (проверьте!) (потому
что 4 = НОД(8000, 3044)) - но в общем случае лучше использовать именно 3044. На
данном этапе вы наверное ещё не знакомы с программами для вычисления
оптимального шага для камней, не так ли? Мы не будем проводить здесь утомительный
анализ, попробуем обьяснить в нескольких словах. Наша цель - убить врага. Мы не
знаем где он находится. Наш боец просто разбрасывает бомбы и надеется на удачу.
Тем не менее, значение шага очень важно. При разных значениях шага вероятность
попасть во врага за желаемый промежуток времени разная. Давайте прикинем. 4 и
3044 бомбят одни и те же места в памяти - то есть всё, что убьётся при шаге 4,
тоже убьётся при шаге 3044 и наоборот. К тому же они импользуются в одном и том
же коде и вбрасываются с одинаковой скоростью. Так где же разница? Перед тем как
продолжить - определения:
  - расстояние на котором в память были брошены две последовательные бомбы
    называется "gap" (промежуток?).
  - Если НОД(STEP, CORESIZE) = k, тогда говорим что значение STEP это mod-k в
    памяти размером CORESIZE.

Вы наверное догадались как мы будем вычислять эти шаги. Если наибольший gap в
памяти в момент времени t равняется m, то ни один боец с длиной кода более m
не смог выжить к этому моменту (точнее, не был не атакован - ygrek). То есть,
чем меньше gap, тем больше шансов уничтожить соперника. Мы также наблюдаем
изменение среднего значения gap со временем и отклонение (дисперсию?) в
значениях всех gap в памяти.

Если вы хотите, можете разработать свой собственный алгоритм вычисления
оптимальных значений шага для камней. Можете использовать свою формулу. Но
вернёмся к теме. Наибольший gap при использовании шага 4 НАМНОГО больше чем
при шаге 3044. Таким образом, 3044 лучше по этой мере. Пожалуй мы рассказали
достаточно про оптимизацию длины шага на этом этапе. Нам следует написать
какого-нибудь боёца сначала :) Давайте посмотрим на более прокачанный камни.

Во-первых следует немного подумать. Что стоит изменить в Гноме? Что мы хотим
добавить? Мы хотим увеличить скорость (если размер при этом не сильно
увеличивается, это обычно хорошая идея). Также хотим добавить несколько
процессов, чтобы сделать его более устойчивым к атакам листков (подробнее про
это дальше в тексте). И наконец хотим добавить "coreclear" фазу - копировать
DATы по всей памяти, делая последний удар по врагу. В следующих выпусках мы
обсудим другие типы бомб, и ещё кое-какие трюки. Но на сейчас хватит.

Итак, зачем делать камень с более чем одним процессом в цикле? Почему он будет
более устойчив к атакам листков? Мы собираемся обьяснить стратегические идеи
позже, а сейчас скажем, без обьяснения (если вы хотите его получить, всегда
можете пропустить несколько строк), что большинство камней легко побеждаются
дистками (репликаторами). Теперь вспомните что мы говорили в прошлом выпуске.
Как работает копирование шёлка? Если не помните, просмотрите ещё раз. Это важно.
Понаблюдайте что происходит когда листок рисуется поверх камня (или любого
другого бойца). При каких условиях соперник сможет пережить это событие? Ответ
прост: если у него достаточно процессов чтобы использовать атаку листка для
своих дальнеёших атак. То есть если используется 6-процессовое шёлковое
копирование, у камня должно быть по крайней мере 6 процессов в том же месте,
если он хочет пережить перезапись копией листка. Дальше мы увидим, что
многопоточность важна в некорых других случаях тоже, не только при дуэли с
листком. Сейчас запомните что обычно хорошо иметь много процессов в цикле,
если они правильно взаимодействуют - чтобы не портить производительность камня.

Хватит болтать. Время для нашего следующего примера!

;redcode
;name CE_example_stone_1
;assert CORESIZE == 8000

step equ 3039
val1 equ step
val2 equ val1+step

    org stone

stone   spl     # 2*step,> 2*step
    mov     } val1,  val2
    add.f   stone,   -1
dstr    djn.f   -2,  < -2200

    end

Этот камень получился быстрее. Почему? Ведь у него также 3 рабочих инструкции
в главном цикле (мы не считаем SPL поскольку это не сильно влияет на скорость),
и мы атакуем два места за раз, вместо одного в прошлом примере. Сначала мы
используем "}" - постинкремент А-поля, потом бомбим ту ячейку, куда это А-поле
указывает. Откуда мы знаем, что мы вброим именно DAT бомбу? А мы и не знаем.
Просто в большинстве случаев в начале игры, пока память не заполнена кодом
противника и своим вперемшку, так оно и будет. Так, если мы обозначим скорость
заполнения N мест за N тактов как "c" (скорость света), то у "Гном"а скорость
0,33с , а у этого камня - 0,66c и даже чуть-чуть быстрее. Почему быстрее? Так
как у него есть, то что называют DJN-потоком (djn stream) Посмотрите что делает
инструкция dstr. Попробуйте. Она декрементит поля соседних инструкций и делает
это до тех пор пока не остановится попаданием в саму себя. Впрочем, боец сам не
умрёт поскольку в начале его есть инструкция SPL. Вот обьяснение почему:

# - непосредственная адресация воспринимается как "0" при выполнении. То есть
SPL #x, y работает точно так же, как SPL 0, 0. Он постоянно создаёт новые
процессы и придерживает один для себя для повторени.

Теперь зачем мы использовали ">" в Б-поле SPL. Это необязательно, но может
повредить соперника, а мы ничего не теряем если включим этот код.

3039 это mod-1 шаг. И не только. Это НАИЛУЧШИЙ mod-1 шаг согласно подсчётам. То
есть если ыв ищете наилучший шаг, это довольно хороший вариант. Впрочем это не
значит, что это оптимальный шаг именно для вашего бойца. Надо прогнать несколько
тестов, перед тем как выбрать окончательно.

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

;redcode
;name CE_example_stone_2
;assert CORESIZE==8000


step equ 3351
ini equ (2*step+1)
ds equ 3800

    org stone

stone   spl     # 2*step, < 2*step
    mov     ini,      ini+step
    mov     sbomb,    * -1
    add.f   stone,    @ -1      ;сюда позднее попадёт бомба чтобы
    djn.f   @ -2,     < ds      ;начать coreclear
sbomb   dat     > -1,     > 1

    end

Перед тем как начать анализировать, попробуем отметить некоторые важные детали.
Загоните этого бойца в эмуляторе. Поставьте маленькую скорость и понаблюдайте.
Смотрите внимательно. В каком поядке выполняются команлы? Противоположно тому
как вы предполагали, не так ли? Снизу вверх! Вот тчо случается когда у вас есть
SPL в начале кода. Я не буду пытаться обьяснить почему так, но я уверен что вы
сами всё поймёте если посмотрите и попробете самостоятельно.

Теперь будем анализировать каждую инструкцию.

    spl #2*step, < 2*step

Мы видели как это работает, поэтому не будем тратить время. Теперь смотрим все
инструкции в порядке снизу вверх.

    djn.f @-2, < ds

Инструкция организации цикла. Она запускает DJN-поток. Куда она прыгает? На
одну команду ниже чем SPL. Почему же было не записать просто DJN.F -3, < ds?
Мы могли:). Попробуйте и посмотрите - есть ли разница.

    add.f stone, @-1

Нечего особенно обьяснять. Изменяет инструкции атаки.

    mov sbomb, *-1

Первая атака. Таким образом в обе атакуемые ячейки попадает настоящая DAT бомба
в отличие от предыдущего примера, где мы портили только одно место с помощью
постинктремента. Это так же гарантирует что мы кинем DAT бомбу в следующее место.

    mov ini, ini+step

Ещё одна атака. Там, куда указывает А-поле уже лежит копия sbomb. И мы кидаем
её ещё раз на step ячеек далее. Вот почему позднее мы увеличиваем на 2*step.

Теперь посмотрим на бомбу. Она выглядит немного странно... Мы ещё не говорили
про coreclear, поэтому я не смогу полностью обьяснить в чём дело. Сейчас
запомните что это хорошая бомба и может причинить много неприятностей для
coreclear - наиболее вероятно - убить их.

А теперь посмотрим как именно работает coreclear. Ещё раз, советую запустить
код в эмуляторе и внимательно посмотреть, после того как боец перейдётв фазу
coreclear - включите пошаговый режим, и вы поймёте идею моментально. В любом
случае попробую обьяснить это на пальцах. Через некоторое время боец попадает
своей бомбой в себя. Вот как это выглядит:

    t = t0

    spl     # 6702, < 6702
    mov     4651,   2
    mov     3,  * -1
    dat     > -1,   > 1
    djn.f   @ -2,   < 3800
    dat     > -1,   > 1

    1 такт после t0 :

    spl #6702,  < 6702
    mov     4651,   2
    mov     3,  * -1
    dat     > -1,   > 1
    djn.f   @ -2,   < 3800
    dat     > -1,   > 1

    DJN выполнилось, и декрементило ячейку где-то в коде
        перед нами в коде никаких изменения не было

    2 такта после t0 :

    spl     # 6702, < 6702
    mov     4651,   2
    mov     3,  *0
    dat     > -1,   > 1
    djn.f   @ -2,   < 3801
    dat     > -1,   > 1

    3, 4, 5 тактов после t0, ничего не меняется MOV 3, *0
    на самом деле ничего не делает, MOV 4651, 2 так же.
    То же самое касается DJN . После этого время для DAT >-1, >1

    6 тактов после t0 :

    spl     # 6702, < 6702
    mov     4651,   2
    mov     3,  * 1
    dat     > -1,   > 1
    djn.f   @ -2,   < 3801
    dat     > -1,   > 1

    MOV 3, *1 перепишет себя как DAT >-1, >1 теперь:

    7 тактов после t0 :

    spl     # 6702, < 6702
    mov     4651,   2
    dat     > -1,   > 1
    dat     > -1,   > 1
    djn.f   @ -2,   < 3801
    dat     > -1,   > 1

Теперь всё готово для запуска coreclear. Посмотрим на первые три команды.

    spl     # 6702, < 6702
    mov     4651,   2
    dat     > -1, > 1

Верхний SPL постоянно производит новые процессы и наш боец не умрёт пока.
После того как процесс выполняет MOV он попадает на DAT и увеличивает Б-поле
инструкции MOV . Таким образом MOV буде кидать бомбу на одну ячейку далее
каждый раз, пока вся памяь не бует очищена. Конечно, он убьёт себя, но мы
надеемся что противник умрёт раньше. Если у противника тоже камень или сканер
скорее всего так и случится. А вот бумаги преставляют проблему.

Конечно же, мы могли где-то ошибиться в тектсе, поэтому не доверяйте нам :)
Вы должны всё проверить самостоятельно. Невозможно научиться corewar просто
читаю тексты и туторы. Поэтому запускайте эмулятор и экспериментируйте. Холм
ждёт вас. НА конец этой статьи приведём результаты тестов бойцов-примеров этого
выпуска - при запуске на 400 раундов и также после посылания их на холм 94b.

Example_stone_1 vs Dwarf3044        W% 61.5  L%  5.8  T% 32.8
Example_stone_2 vs Dwarf3044        W% 60.5  L% 10.0  T% 29.5
Example_stone_2 vs Example_stone_1  W% 44.0  L% 23.3  T% 32.8

Если это не убедило вас что мы правы, ничто не убедит :).

На 94b:

Dwarf4      51,8        W% 12.9  L% 74.0  T% 13.1
Dwarf3044   72,7        W% 19.7  L% 66.7  T% 13.6
Example1    102,0       W% 23.2  L% 44.4  T% 32.4
Example2    104,6       W% 31.8  L% 58.9  T%  9.4

Похоже мы сделали гигантский шаг вперёд. Иы начали с этого дохлого "Гном"а, а
теперь у нас есть такие классные камни. Мы их используем ещё в этом выпуске.

_____________________________________________________________________________
_______Немного советов по стратегии_________________________________________

Вы наверное уже не раз слышали о аналогии Камень-Ножницы-Бумага. Я попробую
немного разьяснить. По крайней ту часть, которая касается противостояния камня
и бумаги, так как мы уже рассматривали немного эти типы бойцов. Как и в
оригинале - бумага кроет камень, камень тупит ножницы, и ножницы режут бумагу.
Так, репликаторы(бумага) бьют камни. Почему? Это не так уж сложно понять.
Бумаги делают много и быстро свои копии. Камни с DAT бомбами попросту не могут
убивать их с такой скоростью. Поэтому камни не используются в чистом виде, чаще
выступая одной из частей более сложного и большого бойца. Если использовать их
в чистом виде, то стоит использовать бомбы похитрее, оптимизировать итп. Новичку
будет сложно добиться хороших очков используя камень без защиты от бумаги и
бойцов использующих бумагу. Один из способов доюиться результат - камень+бумага.
Мы покажем этот способ ниже. В последнее время камни/бумаги неплохо себя
чувствуют на холмах. Камни помогаю бумаге против ножниц, а бумага помогает
камням выжить против других камней.

_____________________________________________________________________________
_______Core Explorer Warrior #2______________________________________________

Как упоминалось выше, это будет простой камен/бумага. Многие подобные бойцы
реализуют продвинутые приколы, типа quickscan, но мы этого делать не будем пока.
Для тех кто захочет разобраться - есть quickscan туториал на сайте Jens Gutzeit.

Мы обьеденим бумагу из прошлого выпуска и камень из этого. Результат должен
улучшиться :)

Обьяснения были ранее, поэтому тут только код и короткие комментарии.

;redcode-94b
;name CoreExplorerWarrior #2
;author Core Explorer staff
;assert CORESIZE==8000
;strategy an example of a stone/paper
;strategy boot, no qscan
;strategy paper from the previous issue


pStep1 equ 2341
pStep2 equ 2421
pStep3 equ 3241
bStep equ 100

step equ 3351
ini equ (2*step+1)
ds equ 3800

sbd equ 2831
pbd equ 873

    org boot
    for 56
    dat 0, 0
    rof
boot    spl 1, {-522
    spl 1, {-811
    spl 1, {-938
    mov < sgo, {sgo
sgo spl sbomb+1+sbd, sbomb+1
    spl *sgo, {-1133
    mov < pgo, {pgo
pgo jmp bomb+1+pbd, bomb+1
    for 10
    dat 0, 0
    rof
fsilk1      spl @0, }pStep1
        mov.i }fsilk1, >fsilk1
fsilk2      spl @0, >pStep2
        mov.i }fsilk2, >fsilk2
        mov.i bomb, < bStep
        mov.i {fsilk2, {bsilk1
bsilk1      jmp pStep3, 0
bomb        dat.f < 1, {1
    for 10
    dat 0, 0
    rof
stone   spl #2*step, < 2*step
    mov ini, ini+step
    mov sbomb, *-1
    add.f stone, @-1
    djn.f @-2, < ds
    dat 0, 0
    dat 0, 0
sbomb   dat >-1, >1
    end

Заметьте что бумага немного изменилась. Мы добавили ещё атаки изменив SPL. Как
это работает? Изменилось только одно. Перед тем как бумага копирует себя в место
куда она послала процессы ожидать, те ячейки портятся инкрементами/декреметами.
Это немного повысит счёт.

Мы также передвинули sbomb немного далбше оттела камня. Зачем? Если кто-то
будет нас искать, это затруднит обнаружение. Это не сильно увеличит счёт, так
как sbomb переместилась всего на две ячейки. Тем не менее, такой финт ушами
часто используется в хороших бойцах.
Ещё один важный момент. Зачем мы дважды split'имся в камне перед тем как
переключится на бумагу? В противном случае бумага бы отьедала слишком много
процессов и камень бы приносил очень мало очков. Если ваша цель выживаемость,
а не W% то достаточно разделться один раз. Но это отричательно скажется на
счёте. Альтернативный вариант - поставить два SPL в начале кода камня, чтобы
увеличить скорость создания "каменных" процессов. Оба трюка использовались
в хороших бойцах, поэтому сложно сказать какой из них лучше. Первый чаще
встречается сегодня.

Основная хитрость всегда в том чтобы правильно сбалансировать составляющие камня
и бумаги. Наш воин не очень хорошо оптимизирован. Он мог бы наверное выступить
лучше, если бы мы уделили больше внимания оптимизации.

Зачем мы копируем код от начальной позиции (наз. "booting")? На случай если
кто-нибудь сканит память, мы оставляем ложный след, а используем копию. Плохой
идеей также было бы держать камень близко к бумаге в начале. Почему? Если кто-то
будет делать coreclear или атаковать близкие позиции в памяти, он мог бы убить
обе компоненты. Поэтому мы их разделяем - в случае потери одной, вторая скорее
всего выживет :)

Теперь посмотрите на загрузочную часть. Зачем нам Б-поля такого вида - {x . Это
просто. Мы можем повредить врага, и нам это ничего не стоит. Можно было бы
использовать пустые Б-поля взамен, но толку? А так мы можем надеяться на случай
и несколько дополнительных очков в результате.

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

Теперь, закинем его на холм 94b... И счёт... :

26.CoreExplorerWarrior #2   125,0       W% 22.2  L% 19.4  T% 58.3

Это неплохо. 25-ое место получило 126,1. Поэтому можно взять этот код и немного
поиграться с константами. Если вы сможете улучшить его немного, вы окажетесь
на холме :).

Кстати, этот warrior выступил получше чем бумага в прошлый раз и намного лучше
чем камень из этого выпуска. Камень+бумага по настоящему рулит. Прична
непопадания на холм в большом числе ничьих против других бумаг.

Мы также потеряли очки из-за отсутствия qscan'а. Этот warrior мог запросто
получить +8 на холме.

_____________________________________________________________________________
_______94b hill report_______________________________________________________

Холм не сильно изменился с прошлого раза - только 8 успешных новичков. И это за
более чем месяц с прошлого выпуска. Надо лучше стараться! Поэтому ситуация не
сильно изменилась и всё что говорилось в прошлый раз - подходит и в этом случае.
Вы видели как делать камень/бумагу. Можно попробовать камень/имп если вы умеете.
В этот раз холм более разнообразен, поэтому большее число стратгий будет
успешными. Экспериментируйте. Посмотрите на код некоторых бойцов, их можно
найти на бесконечном холму Koenigstuhl. Посмотрите на Svarog, Yatima, Blur2.
Если для вас холм слишком сложен, не отчаивайтесь. Он скоро изменится. В конце
года введут ограничение по возрасту. И все старые ветераны уйдут, оставив место
для молодежи. Дерзайте!

Текущее состяние:

# %W/ %L/ %T Name Author Score Age
1 33.5/ 24.8/ 41.7 Yatima v2.0.5 Jens Gutzeit 142.2 80
2 41.4/ 41.7/ 16.9 Svarog Nenad Tomasev 141.1 112
3 40.7/ 43.1/ 16.2 test Andreas Scholta 138.4 11
4 28.8/ 19.2/ 52.0 D'n'B [v0.3] inversed 138.4 16
5 40.0/ 42.1/ 17.9 Dragonfly S.Fernandes 138.0 9
6 39.5/ 41.0/ 19.5 QSCAN!!! Daniel Rivas 138.0 2
7 29.4/ 21.4/ 49.2 Kompaktor inversed 137.3 3
8 26.0/ 15.4/ 58.6 Snare_Rush_v0.7 Inversed 136.6 17
9 39.3/ 42.7/ 18.0 Xenocitrum_v0.8 inversed 136.0 24
10 41.3/ 47.4/ 11.3 Star Sascha Zapf 135.1 243
11 28.8/ 23.4/ 47.8 Blotter inversed 134.2 13
12 39.1/ 44.1/ 16.8 Unknown Neo 134.2 198
13 27.4/ 21.9/ 50.7 stealthbomb Fizmo and Neutrino 132.8 111
14 30.6/ 28.6/ 40.8 3[sm]md v0.2 inversed 132.7 10
15 30.3/ 28.5/ 41.1 The Silent Death Anonymous 132.1 94
16 37.9/ 44.7/ 17.4 Blur 2 Anton Marsden 131.0 8
17 36.0/ 41.5/ 22.5 Planter datagram 130.5 1
18 25.1/ 19.9/ 55.0 Biomass_v0.8 inversed 130.2 27
19 25.8/ 22.5/ 51.8 Barkosta[v0.3] inversed 129.0 26
20 29.1/ 29.3/ 41.6 ptest Sascha Zapf 128.8 4
21 27.6/ 27.9/ 44.5 Tom David Moore 127.2 226
22 36.7/ 46.5/ 16.9 dx42e inversed 126.9 20
23 36.8/ 47.1/ 16.0 think twice v.2 (optiMAXe el kauka 126.6 53
24 21.8/ 17.3/ 60.9 Everybody must get STONED madjester 126.3 148
25 36.8/ 47.5/ 15.7 Blindfolded Miz 126.1 22

_____________________________________________________________________________
_______EXTRA EXTRA: Interview with datagram__________________________________

> Q1: Please, tell the readers something about yourself. What is your name,
> where do you live, how did you learn about corewar, etc.

My name is datagram, and I live on the west coast of the USA. I
learned about Corewar because I have played games like roothack...a
few links later and I found Fizmo's page ( http://corewar.info ).

> Q2: What is your current skill level in corewar? For how long do you play?

I consider myself a beginner in the game; I have only been playing
since late August-September 2005.

> Q3: Do you have any favourite strategies at this point? Favourite warriors?

Yes and no. Most people know what my favorite strategy is, but in the
tournament I played all the different strategies. As for warriors...I
don't have enough warriors for there to be a favorite. Simon is on 94m
and has stayed there for a while, but nothing particularly special. He
was my first warrior and I am glad that he has done OK on that
hill...but that hill is pure chaos. Planter got onto 94b, but did not
place very high. I think as more stones come to flush out the scanners
on that hill that his position might improve (he has a paper component
in his p-switcher that is anti stone/imp).

> Q4: You took part at CSEC2005 tournament and have been successful, right?
> You must be happy about it. Was it hard? Would you recommend it to other
> unexperienced players, as well?

I got 7th overall, I believe. Not bad for a newbie who only wrote one
warrior before the tournament? I think I mised quite a bit of the
tournament, and I think Jens got the bracket that I was supposed to
get (apologies!). It was hard because I had only played on standard
core sizes without crazy restrictions. I'd recommend it, even if you
get out the first round.

> Q5: Was CSEC2005 a useful experience? Did you learn something in the
> process of making warriors for different challenges there?

Yes, I think anyone who plays expands their warrior writing skills
because you have to adapt to different conditions and your favorite
type of warrior won't work in all rounds; you have to write all types
of warriors, and learn to write them all well.

> Q6: Will you take part in the tournament next year? Do you plan on
> participating in the future rounds of Redcoders Frenzy tournament, as well?

Yes, of course. I told Fizmo that I'd host a tournament once so that
he could participate in it instead. He just might take me up on that
offer for CSEC2006! I wanted to participate in RCF24, but I had only
just learned to Redcode when the deadline was nearing, so I did not
create a warrior for that. Upcoming RCF tournaments I should be able
to participate in, though.

> Q7: Do you feel that the gap between beginners and more experienced players
> is big or small?

I think it's fairly small, but it depends on where you want to gauge
it. The tournaments offer a good way for beginners to have a generally
level playing ground because of unexplored and crazy core settings
which take away people's favored strategies and make people come up
with new ideas and techniques. But the hills are a different story. It
will still probably take me a while to get onto 94 draft because those
are all good players with well optimized, well written warriors.

> Q8: What are your first impressions about Core Explorer?

I like CE, I am more advanced than pure beginner now, so all the
articles I might already understand, but it is very nice to see
current corewar information. I think most players notice the pre 2000
dates on most of the Corewar pages, and they think this game is dead
;).

> Q9: What is, in your opinion, the most significant source of information
> for beginners while they are learning how to make good warriors? What
> would you recommend?

Corewar.info has many great links, and The Introduction to Redcode v
1.21 is also very good. Those coupled with the open source Koenigstuhl
hills and any beginner should be able to understand strategy and
coding tricks and shortcuts.

_____________________________________________________________________________
Вопросы? Статьи? Пожелания? Комплименты? Пишите!
Авторы: Nenad <tomasev at nspoint.net>, Roy <roy_van_rijn at gmail>

----
 Перевёл yGREK heretix <ygrekheretix at gmail dot com>
 18/12/2005