Путешествие обратно в Куайн


12

Задача здесь проста, и вовсе не в счетчиках байтов. Ваша задача состоит в том, чтобы вывести первые 50 символов исходного кода предыдущей сущности, объединенные с вашими первыми 50 символами, начиная с 50 символов, которые я поместил ниже:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY

Итак, давайте возьмем пример здесь, если вы ответите в 05AB1E, решение просто вывести первые 50 байтов было бы:

ži50£

Что означало бы, что вам нужно вывести:

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYži50£

Если ваша программа короче, просто используйте первые x < 50символы. Если ваша программа длиннее, объедините только первые 50 символов, оканчивающиеся на 50-й символ. Затем следующий человек должен будет вывести первые 50 символов вашей квине, соединенные с их собственным кодом.

Ваш код может быть любого размера, но вы должны вывести только первые 50 символов кода, конкатенированных до конца первых 50 байтов кода предыдущего ответа.


Ограничения:

При этом используется определение правильного квайна и, в дополнение к этому, следующие вещи:

  • Комментарии полностью запрещены.
  • ОБРАТИТЕ ВНИМАНИЕ НА ЭТОМ РАЗДЕЛЕ, ЭТО МОЖЕТ РАЗВИТЬСЯ, ЕСЛИ ПРОХОДЯТ ВЗЯТНЫЕ ЛОФОЛЫ

Как разместить цепочечный ответ:

  1. Разместить заполнитель:
    • Укажите свой номер ответа и язык, который вы будете использовать.
  2. Сортировать по дате, если вы заметили, что кто-то еще разместил заполнитель за 1 миллисекунду до вас:
    • Удалите свою, дождитесь следующей возможности, извините.
  3. Если вы получили следующее место, ПОЖАЛУЙСТА, ОТВЕТЬТЕ В ТЕЧЕНИЕ 6 ЧАСОВ :
    • Если вы не можете ответить, удалите зарезервированное место.
  4. Если пространство было забито более 6 часов.
    • Проголосуйте, чтобы удалить зарезервированное место, я справлюсь с этим.

Ваш пост формат:

#[Answer #]:[Character Count] Characters, [Language Used]

{TIO MARKDOWN}

{LINE_SEPARATOR="---"}

{ADDITIONAL EXPLANATION OR INFORMATION}

Некоторые конкретные примечания (важно для простоты конкуренции):

  • Если человек перед вами включил в свой источник символы новой строки или символы, не входящие в ASCII, вы можете ПОЛОСИТЬ их. Это означает, что x="a\nb"становится ab, где x[0]=a;x[1]=b;.
    • Вы должны указать мутацию, которую вы применили к предыдущему источнику.
  • Все символы считаются одним символом, несмотря на кодовые страницы или языковую кодировку. Пожалуйста, не используйте счетчик байтов, используйте счетчик символов.

Принятый ответ будет 50thответом только потому, что; Я имею в виду, это в конце концов SE.


Почему комментарии запрещены? Кроме того, вместо переопределения байтов для символов, почему бы просто не использовать символы?
CalculatorFeline

@CalculatorFeline Я думаю, вы могли бы сделать несколько довольно неубедительных и неинтересных лазеек, используя комментарии, но это только я. Забронируйте первое место и докажите, что я не прав с комментарием, и я сниму бан.
Волшебная Осьминог Урна

5
Связанный мета-пост, определяющий правильные квины, не содержит упоминаний о том, что в нем нет несуществующего кода
Орджан Йохансен

1
Как вы определяете комментарий? Комментарий не очень четко определен.
Ad Hoc

1
Вы также, кажется, меняете термины «символ» и «байт», что немного сбивает с толку. Я не совсем уверен, что это первые 50 символов или байтов.
Ad Hoc

Ответы:


7

1: 96 символов, Хаскелл

abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY:z=['`'..'z']++'A':['C'..'Y']
main=putStr$z++z

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


Я чувствовал себя глупо и не видел ничего, запрещающего первую запись, начинающуюся с тех же 50 символов, что и исходная строка.

  • ['`'..'z']++'A':['C'..'Y']является выражением, вычисляющим строку этих символов с `добавлением префикса.
  • Результатом является сопоставление с шаблоном, что делает переменную abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYравной '`'и zравной 50 символам.
  • main=putStr$z+z затем делает фактический вывод.

Мне нравится, как этот вызов начался с a-zA-Z, и теперь это больше не алфавит. Хороший звонок по 1-й программе.
Волшебный Осьминог Урна

5

5:76 символов, смайлик

🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACD🔤😀🍪a🔤🏁🍇🍦a❌🔤🔤🔪a 0 45🍪🍉

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


Объяснение:

🏁🍇		👴 start
  🍦 a 🔤...🔤	👴 define variable a as that string
  😀    	👴 print:
    🍪		👴 combine those strings:
      a		👴 a, and:
      🔤🏁🍇🍦a❌🔤🔤	👴 string literal. the ❌🔤 works like \"
      🔪a 0 45	👴 between indexes 0 and 45 of a
    🍪
🍉		👴 end

1
Алфавит медленно исчезает: O.
Волшебная Урна Осьминога

Подсказка о форматировании: используйте <pre><code>и </code></pre>, затем вы можете использовать &#9;для вкладок, которые выровнены, как и предполагалось, даже с символами переменной ширины, такими как эмодзи. Кстати, я думал о том, как сделать в Emojicode quine, а затем прокрутил вниз ...
NieDzejkob

@NieDzejkob хорошая идея, спасибо.
Betseg

@betseg для меня это немного странно, но в любом случае более читабельно. Рад, что вам понравилось
NieDzejkob

@NieDzejkob несколько? с моим шрифтом отключена только команда строкового литерала, потому что она длинная, где еще на вашем конце?
Betseg

4

2: 119 символов, Javascript

alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXY'+`alert(eval(c=${JSON.stringify(c).substr(0,37)}`"))

Попробуйте онлайн (использует console.logвместо alertвывода)

На основании этого JS Quine.

Старая версия (читает исходный код):

f=_=>`abcdefghijklmnopqrstuvwxyzACDEFGHIJKLMNOPQRSTUVWXYf=${(f+"").substr(0,48)}`;alert(f())

На основании этого JS Quine


Это не правильный quine, так как функция ссылается на себя.
Лохматый

@ Shaggy Я добавил действительный
SuperStormer

1
@ Shaggy Само-ссылочные функции действительны по нашему определению.
ATaco


2

3:56 Персонажи, SOGL

"alert(eval(c="'abcdefghijklmnopqrstuvwxyzACDEFGHIJ”1#Οj

Попробуй здесь!

Объяснение:

"...”      push the first 50 bytes of the previous answer
     1#Ο   wrap a quote around with that
        j  take the last letter off, as my answer has one more byte for the starting quote.

В ответе Javascript есть цитата, поэтому мне пришлось добавить начальную цитату, но, поскольку это не код-гольф, это не имеет значения.



2

7: 137 символов, Java 8

v->{String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";return t+("v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}

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

Объяснение:

v->{        // Method with empty unused parameter and String return-type
  String t="⛽as=:'\"alert(eval(c=\"''abcdefghijklmnopqrstuvwxyzA";
            //  String containing the first 50 characters of the previous answer
  return t  //  Return those first 50 characters
   +"v->{String t=\""+t.replace("\"","\\\"")).substring(0,50);}
            //  Concatted with the first 50 characters of my answer
            //  with correct escape-slashes

Ага! Я полагал, что Эмодзи убил этот вызов навсегда. Хороший.
Волшебный Осьминог Урна

@MagicOctopusUrn Я только сейчас замечаю ваше правило о том, что « если человек, который раньше вас включил в свой источник символы новой строки или символы, не входящие в ASCII, вы можете ПОЛЬЗОВАТЬ их». Таким образом, ответ может избавиться от смайликов, если они захотят. Для моего ответа это не имеет значения в любом случае, так как мы все равно считаем символы вместо байтов.
Кевин Круйссен

Честно говоря, речь идет не о количестве персонажей, и да, я забыл об этом правиле (более того, забыл про вызов в целом).
Волшебный Осьминог Урна

Честно говоря, если подумать, это действительно не проблема, не так ли?
Волшебный осьминог Урна

@MagicOctopusUrn Это вроде как. Вы в основном получаете первые 50 символов своей квинны. В Java кайны обычно формируются путем помещения неформатированного исходного кода в строку, а затем правильного форматирования / экранирования двойных кавычек и слешей. Просто базовая лямбда-функция quine в Java 8 уже составляет 88 байт ( попробуйте онлайн ), поэтому в Java эта задача намного короче без использования полного quine. Хотя я могу представить, что quine - лучший подход в большинстве языков.
Кевин Круйссен

1

6: 70 символов, эмодзи

⛽as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzAC🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡

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

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

Объяснение:

⛽ ... 🚘	String literal
👥		Duplicate
💬⛽💬		Push ⛽ as a string
🔀		Swap the top two strings. Stack: [long literal] "⛽" [long literal]
👫		Concatenate.
💬0💬📥💬-1💬📥✂	Remove the last character
👫		Concatenate.
➡		Print.

Разве это не должно быть ⛽🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx🚘👥💬⛽💬🔀👫💬0💬📥💬-1💬📥✂👫➡вместо этого? Emojicode ответ betseg не начинается с, as=:'"alert(eval(c="''abcdefghijklmnopqrstuvwxyzACа с 🏁🍇🍦a🔤s=:'"alert(eval(c="''abcdefghijklmnopqrstuvwx.
Кевин Круйссен

@KevinCruijssenIf the person before you has included newlines or non-ASCII characters in their source, you may STRIP them.
NieDzejkob

Ах, я пропустил это правило .. В таком случае я обновлю свой ответ.
Кевин Круйссен

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

@KevinCruijssen Это было полгода назад. Я не помню
NieDzejkob

1

12: 202 персонажа, Ruby

puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7).gsub('0','>').gsub('1','+').gsub('2','-').gsub('3','<').gsub('4','[').gsub('5','.').gsub('6',']')+'puts "21ipdgmtwkkke7ynvzpcnlzt7kl".to_i(36).to_s(7'

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


Кодирует первые пятьдесят символов предыдущего ответа в базе семь

  • 0:>
  • 1: +
  • 2: -
  • 3: <
  • 4: [
  • 5:
  • 6:]

Затем преобразует его в базу 36, чтобы получить «21ipdgmtwkkke7ynvzpcnlzt7kl»


0

9: 55 символов, желе

“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefg”;”“;

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


Я удалил не-ASCII символ из выходных данных, так как это разрешено, и Jelly игнорировал его.

объяснение

Это начинается со строкового литерала первых 50 символов (минус ) предыдущего ответа, затем добавляет к нему символ, а ;”“затем добавляет исходный строковый литерал в конец снова с окончанием ;. Так как символ был удален, первые 50 символов моего исходного кода - это 49 из предыдущего ответа с впереди, что позволяет этой программе быть такой короткой. (Да, я понимаю, что это не но почему бы не сыграть в гольф, если можно?)


0

10: 116 символов, Python 3

print('''“"v->{String t=`"as=:'\`"alert(eval(c=\`"''abcdefgprint(\'\'\'“"v->{String t=`"as=:'\`"alert(eval(c=\`"''')

Просто печатает строку, состоящую из первых 50 символов ответа 9, за которыми следуют первые 50 символов собственного источника. Нет необходимости в хитросплетении, потому что экранированные кавычки ( \'\'\') появляются после 50-го символа и, следовательно, не должны воспроизводиться в выходных данных.

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


0

11: 723 Персонажи, Брейнф ***

+[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.[[-]<]++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

Раздетый непечатный символ. Почти полностью сгенерирован Brainfuck Text Generator . Может быть так же лениться, верно?

TIO

Print [print('''"v->{String t=`"as=:'\`"alert(eval(c=\`"] +[------->++<]>++.++.---------.+++++.++++++.+[--->+<]>+.-...-----------.++++++.[----->++<]>++.--[++>---<]>-.---[-->+++<]>-.[->++<]>-.[--->++<]>+.[--->+<]>+++.--.---------.+++++.-------.-[--->+<]>--.---[->++++<]>.[-->+<]>+++.+++[-->+++<]>.[->+++<]>++.+[--->+<]>.--[--->+<]>--.+[-->+<]>+++.---.-[--->++<]>+.+[------>+<]>.++++.[->+++<]>++.+[--->+<]>.+++++++++++.-------.+++++++++++++.++.+[--->+<]>+.+[--->+<]>++.[--->+<]>-.[->+++<]>-.+++++++++++.[--->+<]>++++.+[--->+<]>.[--->++<]>-----.+[-->+++<]>-.++++.[->+++<]>++.
Clear all cells to left until first empty cell [[-]<]
Print [+[------->++<]>++.++.---------.+++++.++++++.+[--->] ++[------>+<]>.++[->++<]>+.-[-->+<]>.......---[-->+++<]>-.+[--->++<]>+..+[----->+<]>.++[-->+++<]>.[--->++<]>.+[--->++<]>+..+++.---..+++.-.........+.---.....+++.---......+++.---.++[->++<]>+.-[-->+<]>...---[-->+++<]>-.

Похоже, вы печатаете со 2-го по 51-й символы вашего ответа в Brainfuck вместо первых 50 (он пропускает первый >): попробуйте онлайн. Кроме того, вы можете удалить символ, так как ваш ответ Brainfuck в настоящее время выводит его как непечатный ``.
Кевин Круйссен,

В >начале, кажется, было случайным дополнением, и я бросил персонажа. Основываясь на других ответах, я думаю, что это означает, что мне нужно напечатать только первые 49 символов.
Panda0nEarth
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.