Исходный код GO!


18

Давайте использовать дополненную реальность для охоты на маленьких существ, спрятанных в исходном коде. Напишите программу quine, которая выводит собственный источник кода, за исключением 5 последовательных символов, которые будут изменены и которые будут отображать PCG-mon :(^_^)

Пять последовательных символов могут быть расположены в любом месте исходного кода (от позиции 0до n-5, nявляющейся длиной исходного кода). Исходный код должен иметь минимальную длину 5 символов. Строка (^_^)или любая ее подстрока длиной> = 2 не должна появляться в исходном исходном коде, только в выходных данных.

Пример правильного представления:

  • исходный код my source code, выводmy (^_^)e code

Инвалид:

  • исходный код (^_^) copy;, вывод(^_^) (^_^)

Критерии победы

Самый короткий код в байтах побеждает.


5
Не быть чрезмерно отрицательным, но это обобщенная квинна и задача без проблем. На языке с общим методом цитирования это довольно скучно. Вы также не указали, что должно произойти, если ваш исходный код составляет 5 байт или меньше.
FryAmTheEggman

@ Фрай Я не думаю, что возможно отобразить 5 символов (^_^)с исходным кодом, содержащим менее 5 символов? может быть, с определенной кодировкой ...
Арно

3
Хотя я не уверен, что это возможно в этом случае, довольно просто создать программу, которая печатает больше байтов, чем содержит. Например, программа Pyth Gпроизводит вывод abcdefghijklmnopqrstuvwxyz.
FryAmTheEggman

3
Я бы порекомендовал, чтобы программы были длиной не менее 6 символов, так что никто не пытается, скажем, Bubblegum .
Sp3000 13.09.16

2
@FryAmTheEggman Граница между унылой и интересной обобщенной квинной довольно хорошая. Мой мета-ответ в основном касается квазин, где единственное жизнеспособное решение - получить строку, представляющую весь исходный код, и затем обработать эту строку. Если есть решения, которые в какой-то момент могут обойтись без создания полного исходного кода, я думаю, что обычно уже учитываются интересные решения (например, ведущий в настоящее время ответ CJam). Что касается do X без Y, ограничение на подстроки представляется необходимым, чтобы избежать тривиальных (quine) решений.
Мартин Эндер

Ответы:


14

Javascript ES6, 44 байта

$=_=>`$=(\^\_\^\)${($+'').slice(5)};$()`;$()

Выход:

$=(^_^)=(\^\_\^\)${($+'').slice(5)};$()`;$()

Все еще работает над игрой в гольф, но пока работает.


12
+1 для того, чтобы иметь другое лицо:=_=
Cyoce

2
Не можете ли вы сделать это $=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(на самом деле это выглядит даже лучше, потому что теперь похоже, что ты просыпаешься спящим лицом). :)
Мартин Эндер

10

Vim, 33 , 27 нажатий клавиш

qqqqqS(<C-v>94_<C-v>94)q@q<esc>hh"qPq@q

Обратите внимание, что <C-v>означает ctrl + v, и является байтом, 0x16и <esc>является escape-символом, и является байтом 0x1B.

Это просто использует слегка модифицированную версию моего Гольфа, который вам очень нравится! ответ.

Выходы:

(^_^)S(^V94_^V94)q@q^[hh"qPq@q

Это действительно так, поскольку ^Vvim представляет <C-v>и ^[представляет vim <esc>.

Основная идея состоит в том, чтобы просто вводить текст с (^_^)помощью его кодовых точек, чтобы мы могли избежать помещения этих символов в исходный код. В режиме вставки <C-v>numberбудет вставлен символ ASCII «число». Тем не менее, так как задача говорит:

Строка (^_^)или любая ее подстрока длиной> = 2 не должна появляться в исходном исходном коде, только в выходных данных.

Это ответ на злоупотребления «подстроки» правило только ввод кодовых из ^символов, и ввод (, _и )непосредственно.

Вот рисунок, который позволяет вам увидеть это решение в действии и поместить для сравнения исходный код и вывод:

введите описание изображения здесь


довольно подлый, используя ^контрольный символ ... +1
Rɪᴋᴇʀ





3

JavaScript (ES6), 91 байт

Там уже есть ответ JavaScript, но нет ответа JS без чтения источника:

a="a=%s;co%s.log(a,uneval(a),`(${'^'}_${'^'})`)";console.log(a,uneval(a),`(${'^'}_${'^'})`)

Это основано на моем неискушенном ответе на Golf, который вам очень понравился! , Выходы

a="a=%s;co%s.log(a,uneval(a),`(${'^'}_${'^'})`)";co(^_^).log(a,uneval(a),`(${'^'}_${'^'})`)

Это можно легко изменить, перемещаясь вокруг второй %sстроки. Например,

a="a=%s;console.log(a,uneval(a),`($%s_${'^'})`)";console.log(a,uneval(a),`(${'^'}_${'^'})`)

выходы

a="a=%s;console.log(a,uneval(a),`($%s_${'^'})`)";console.log(a,uneval(a),`($(^_^)_${'^'})`)

2

Желе , 22 байта

“4094959441b³ỌØV”ṘVabc

Доступно в TryItOnline

Использует встроенную полезную нагрузку quine. “ØV”ṘV
В abcконце просто заменяемый заполнитель
преобразует целое число в основание 100, что приводит к [40,94,95,94,41]
приведению к символам, в (^_^)
результате чего получается весь результат.“4094959441b³ỌØV”(^_^)


2

C # 5.0, 715 байт

Я знаю, это огромно. Просто хотел добавить решение C #.

/*^()_*/using System.CodeDom;namespace System{class P{static void Main(){var b="/*^()_*/using System.CodeDom;namespace System{{class P{{static void Main(){{var b={0};var f=new string(new[]{{b[3],b[2],b[5],b[2],b[4]}});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider(\"CSharp\").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace(\"[4]}}}}}}}}\",f),w);Console.ReadKey();}}}}}}";var f=new string(new[]{b[3],b[2],b[5],b[2],b[4]});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace("[4]}}}}",f),w);Console.ReadKey();}}}

Выход:

/*^()_*/using System.CodeDom;namespace System{class P{static void Main(){var b="/*^()_*/using System.CodeDom;namespace System{{class P{{static void Main(){{var b={0};var f=new string(new[]{{b[3],b[2],b[5],b[2],b[4]}});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider(\"CSharp\").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace(\"[4]}}}}}}}}\",f),w);Console.ReadKey();}}}}}}";var f=new string(new[]{b[3],b[2],b[5],b[2],b[4]});var w=new IO.StringWriter();CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp").GenerateCodeFromExpression(new CodePrimitiveExpression(b),w,null);Console.WriteLine(b.Replace("(^_^)}}",f),w);Console.ReadKey();}}}

Доступно на Ideone.com


1

MATL , 14 байтов

')_`_*i't&Dwqh

Производит вывод ')_`_*i'(^_^)h.

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

объяснение

')_`_*i'  % Push this string
t&D       % Duplicate and get string representation (i.e. enclose with quotes)
w         % Swap
q         % Subtract 1. Transforms ')_`_*i' into the code points of '(^_^)h'
h         % Concatenate. Automatically casts code points to chars. Implicitly display

1
Моя первая попытка куайна!
Луис Мендо

1

Баш, 178 байт

Q='#(8_8)
printf "Q=\47"
echo -n "$Q"|sed -r "s~(_|\()8~\1^~g"
echo -e "\x27"
tail<<<"$Q" -n4'
printf "Q=\47"
echo -n "$Q"|sed -r "s~(_|\()8~\1^~g"
echo -e "\x27"
tail<<<"$Q" -n4

Пффф, я не очень хорош в квинах: / Любое предложение поиграть в гольф это более чем приветствуется! :-)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.