Решения Дэна для Exapunks
GHub Platform · Гайд · 0 ответов · 17 просмотров

Всем привет. Я Дэн. У меня степень магистра компьютерных наук и около 6 лет опыта работы разработчиком. Но, честно говоря, это не имеет большого значения; и это не кулинарный рецепт, поэтому мне не нужно рассказывать историю своей жизни. Exapunks — это игра-головоломка, связанная с ассемблером. Знание кодирования полезно, но игра хорошо начинает медленно и усложняется. Мои видеорешения будут делать то же самое, объясняя основные инструкции по кодированию в начале, но почти не рассматривая строки кода в конце и сосредотачиваясь на подходе. Exapunks измеряет ваши решения по трем показателям: Циклы. Время, необходимое для запуска вашего кода. Обычно это один цикл на строку кода, поэтому более короткие блоки кода должны иметь меньшее количество циклов. (Это будет не всегда так). Оценка циклов для вашего решения будет основана на наибольшем количестве циклов в 100 тестовых случаях, а не на среднем значении. Размер. Количество строк кода, которое занимает ваше решение. Довольно просто. Все задания имеют ограничение на количество строк. Если ваше решение превышает это число, вы все равно можете запустить и протестировать свои решения, но ваши результаты не будут отправлены в таблицу лидеров, пока вы не достигнете размера в пределах ограничения. Активность. Общее количество выполненных инструкций LINK и KILL. Мне этот вариант кажется более произвольным. Не существует реального ущерба для большего количества инструкций LINK и KILL, но если вы хотите попытаться минимизировать этот показатель, сделайте это. Критерии Ваша первая работа по программированию в Exapunks. Вот ваши цели: Переместить файл 200 в папку «Исходящие». Не оставляйте следов. Цель «Не оставлять следов» присутствует в большинстве вакансий. Для этого необходимы следующие критерии: Все агенты выполнения остановлены во всей сети. Никакие файлы, созданные пользователем, не присутствуют ни в одной сети, кроме вашего локального хоста (Rhizome), если не указано иное. Никакие существующие файлы не были изменены или перемещены, если не указано иное. Ни один исполнительный агент NPC не был прекращен, если не указано иное. Примечания и выводы. В моем решении вы заметите, что я выполняю как инструкции DROP, так и HALT. На самом деле они не нужны. Если мы отрежем обе эти инструкции, то как только мы выполним вторую ССЫЛКУ, агент выдаст ошибку «НЕТ ИНСТРУКЦИЙ» и завершит свою работу, удалив все хранящиеся в нем файлы. Код LINK 800 GRAB 200 LINK 800 DROP HALT Видеопояснение Обратите внимание, что это видеообъяснение охватывает все 4 обучающие миссии, а не только первую. Критерии Вторая работа знакомит с манипуляциями с файлами. Это будет очень распространенная вещь, которую вам придется делать, поэтому постарайтесь понять, как работает регистр F. Добавьте правильное значение в конец файла 200. Переместите файл 200 в папку «Исходящие». Не оставляйте следов. Примечания и выводы Возможно, существует способ изменить способ чтения файла, чтобы быстрее выполнять арифметические операции... Есть идеи? Код LINK 800 GRAB 200 COPY F X ADDI X F X MULI X F X SUBI X F X COPY X F LINK 800 Критерии Третья задача представляет использование регистра M для связи между EXA. Это также будет основой ваших решений, поэтому изучите его как следует. Создайте указанный файл в папке «Исходящие». Удалить файл 199. Не оставлять следов. Примечания и выводы Когда EXA пытается выполнить чтение или запись из регистра M, он будет ждать, пока в регистре M не появится что-то для чтения/записи, возможно, навсегда. Похоже, что и здесь есть что улучшить... Что мы можем сделать, чтобы минимизировать время, в течение которого XB ожидает чтения из регистра M? Код XA LINK 800 LINK 799 GRAB 199 COPY F X COPY F M COPY X M WIPE HALT XB MAKE LINK 800 LINK 800 COPY M F COPY M F DROP HALT Критерии Последняя учебная миссия знакомит с концепцией циклов. Циклы используются, когда у вас есть повторяющаяся задача, которую необходимо выполнить. Поскольку это представлено здесь в руководстве, вы также можете предположить, что эта концепция будет иметь жизненно важное значение. Создайте указанный файл в папке «Исходящие». Удалить файл 200. Не оставлять следов. Notes and Insights JUMP всегда выполняет переход к указанному маркеру. FJMP выполнит переход только в том случае, если регистр T равен 0. TJMP выполнит переход только в том случае, если регистр T не равен 0. В нашем решении вы заметите, что мы ведем обратный отсчет с использованием регистра X и запускаем функции TEST и FJMP, чтобы определить, когда наш цикл закончится. Возможно, есть способ сделать это быстрее? Может быть, только с регистром Т? Код LINK 800 GRAB 200 COPY F X WIPE MAKE MARK LOOP COPY X F SUBI X 1 X TEST X = -1 FJMP LOOP LINK 800 Критерии Пришло время для вашей первой работы по программированию, не связанной с обучением! Ваша задача довольно проста: возьмите заказ на пиццу (находится в файле 300) и скопируйте его в конец списка заказов (файл 200). Ваш заказ состоит из нескольких строк, поэтому вам нужно будет передать несколько значений из одного файла в другой. Добавьте свой заказ в конец списка заказов. Не оставляйте следов. Примечания и информация Чтобы надежно найти файловый курсор в начале или конце файла, вы можете запустить `SEEK -9999` или `SEEK 9999`. Хотя список заказов меняется в зависимости от тестовых случаев, похоже, что наш заказ на пиццу абсолютно одинаков для всех 100 запусков. Можно ли это как-то использовать? Код XA LINK 800 GRAB 200 SEEK 9999 MARK LOOP COPY M F NOOP NOOP TEST MRD TJMP LOOP HALT XB GRAB 300 MARK LOOP COPY F M TEST EOF FJMP LOOP HALT Видео-пояснение Критерии Помните ту часть истории о том, как наше тело медленно превращается в бесполезные схемы? Ну, похоже, одна из наших рук капризничает. Но мы можем взломать эту схему и заставить ее вести себя так, как должна наша рука. Нам нужно преодолеть разрыв между центральной нервной системой (ЦНС) и нервом в левой руке. Передайте все нервные сигналы, как указано. (0/30) Примечания и выводы Это ваша первая работа без цели «Не оставлять следов». Код XA LINK 800 MARK LOOP COPY #NERV X TEST X > 50 FJMP COPY COPY 50 M JUMP LOOP MARK COPY COPY X M JUMP LOOP XB LINK 800 LINK 1 LINK 1 LINK 1 LINK 1 MARK LOOP COPY M X TEST X < -120 FJMP COPY COPY -120 #NERV JUMP LOOP MARK COPY COPY X #NERV JUMP LOOP Видео-пояснение Критерий Эмбер хочет, чтобы мы удалили арахис из рецепта «Арахисовый взрыв». Почему? Правда, только она знает. Итак, нам нужно прочитать список ингредиентов (файл 237) и удалить из него слово «Арахис» (находится в файле 300). Измените рецепт, как описано. Не оставляйте следов. Примечания и выводы Рецепт будет меняться в зависимости от тестовых случаев, поэтому слово «АРАХИС» может находиться в любом месте списка ингредиентов. Код XA LINK 800 LINK 800 GRAB 237 COPY M X MARK LOOP TEST F = X FJMP LOOP SEEK -1 VOID F XB GRAB 300 COPY F M Видео Пояснение Критериа Гаст, человек, стоящий за журналом, сообщил группе, что его долг перед копировальной мастерской не позволяет ему продолжать работу над журналом. Поскольку мы все равно занимаемся хакерством, Эмбер хочет, чтобы мы оказали Гасту услугу и погасили его долг. Файл 300 содержит идентификатор клиента Гаста в магазине. Файл 200 содержит текущие долги каждого клиента по идентификатору. Файл 201 содержит список транзакций. Обнулите баланс Гаста. Создайте соответствующий платеж. Не оставляйте следов. Примечания и информация Текущую дату можно найти в регистре #DATE хоста CLOCK. Код XA LINK 800 GRAB 200 COPY M X MARK LOOP TEST F = X SEEK 2 FJMP LOOP SEEK -2 COPY F M COPY F M SEEK -2 COPY 0 F COPY 0 F XB GRAB 300 COPY F X COPY X M DROP LINK 800 LINK 801 COPY #DATE T LINK -1 GRAB 201 SEEK 9999 COPY T F COPY X F COPY M F COPY M F Видео Пояснение Критерии Эмбер решила проверить, как она может влиять на людей в мире. Она хочет начать со взлома электронного дорожного знака, чтобы на нем отображались различные туманные сообщения. Напишите сообщение на знаке шоссе. Не оставляйте следов. Примечания и выводы Чтобы очистить знак текущего отображения, вам необходимо записать значение
ИсточникGHub Platform · автор02.08.2026, 18:40:31
Всем привет. Я Дэн. У меня степень магистра компьютерных наук и около 6 лет опыта работы разработчиком. Но, честно говоря, это не имеет большого значения; и это не кулинарный рецепт, поэтому мне не нужно рассказывать историю своей жизни. Exapunks — это игра-головоломка, связанная…
Войдите, чтобы писать в группе