Сделайте радиационно-упрочненную лозу

14

Прошлой ночью я искал вызов Радиационной закаленной Куайне, но не смог его найти. Оказывается, никто еще не спросил об этом! Итак, вот оно:

Ваша задача состоит в том, чтобы создать quine, непустую компьютерную программу, которая печатает свой собственный источник, не читая его. Кроме того, если вы удалите какой-либо один байт из исходной программы, новая программа должна напечатать исходный текст вашей исходной программы.

Это поэтому ответы оцениваются в байтах, причем меньше байтов лучше.

Пост Рок Гарф Хантер
источник
Связанные
Джо Кинг
Также связано (дублирование вместо удаления)
JungHwan Мин
1
Разве это не спрашивалось, оставалось без ответа в течение 1,5 лет, а затем было удалено, поскольку учетная запись пользователя была удалена или что-то еще? Не говорю, что я не хочу один, хотя +1. Клянусь, я видел это.
Волшебная Осьминог Урна
@MagicOctopusUrn Я думал, что это существовало. Я хотел ответить, но не смог найти. Если кто-то найдет старый, я бы с радостью забил это сам.
Пост Рок Гарф Хантер
Я тоже не могу его найти. Должно быть, я медленно схожу с ума.
Волшебная урна осьминога

Ответы:

7

Gol> <> , 49 45 байт

<<H~Kla}\`q%2l}}ss2"<\
<<H~Kla}\`q%2l}}ss2"<\

Попробуйте онлайн!

Проверка!

Я сделал это в Gol> <>, а не> <>, потому что у первого есть удобный Kоператор, который копирует верхние nэлементы в стеке, что упрощает дублирование чистой копии исходного кода.

Объяснение:

Это работает, имея две копии исполняемого кода и перенаправляя на второй, если первый поврежден. Это терпит неудачу, когда \удаляется последний или средний символ новой строки, оба из которых компенсируются позже.

<<                       Redirect left 
                    <\  Switch to other source code if this line is irradiated
                   "     Push source with wrapping string literal
                ss2      Push quote
              }}         Move "< to end
          q%2l           If the length of the stack is not right
        \`               Push an extra \
       }                 Move the \ to the end
      a                  Newline
    Kl                   Duplicate the stack
   ~                     Pop the extra newline
  H                      Halt and print stack
Джо Кинг
источник
Я забил 2 байта !!!
KrystosTheOverlord
tio.run/##S8/PScsszvj/38bGo67aO6c20V41Oae2tqi42KhIySaGC4f4//8A Вот ссылка!
KrystosTheOverlord
Я только что понял, что сделал это совершенно неправильно, извините, есть один набор символов, который, если они отсутствуют, программа просто не работает ...
KrystosTheOverlord
@KrystosTheOverlord Вы можете использовать программу проверки для проверки своих программ
Джо Кинг,