Вихідний код GO!


18

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

У 5 послідовних символів можуть бути розташовані в будь-якому місці в вихідному коді (від позиції 0до n-5, nбудучи довжиною вихідного коду). Вихідний код повинен мати мінімальну довжину 5 символів. Рядок (^_^)або будь-яка його підрядка довжиною> = 2 не повинні відображатися в початковому вихідному коді, лише у вихідному.

Приклад дійсного подання:

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

Недійсний:

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

Критерії виграшу

Виграє найкоротший код у байтах.


5
Не бути надмірно негативним, але це узагальнена квінька і до x без проблеми. У мові із загальним методом квінінгу це досить нудно. Ви також не вказали, що має статися, якщо ваш вихідний код становить 5 байт або менше.
FryAmTheEggman

@Fry Я не думаю, що можна відобразити 5 символів (^_^)із вихідним кодом менше 5 символів? можливо, з конкретним кодуванням ...
Арно

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

3
Я рекомендую, щоб у програмах було не менше 6 символів, тільки щоб ніхто не намагався, скажімо, Bubblegum .
Sp3000

2
@FryAmTheEggman Межа між тьмяною та цікавою узагальненою квінкою досить тонка. Моя мета відповідь здебільшого стосується лайків, де єдиним життєздатним рішенням є отримання рядка, що представляє весь вихідний код, а потім його обробка. Якщо є рішення, які можуть піти, не будуючи повного вихідного коду в якийсь момент, я думаю, що зазвичай вже передбачені цікаві рішення (наприклад, провідна відповідь CJam на даний момент). Що стосується do X без Y, обмеження на підрядки видається необхідним, щоб уникнути тривіальних (квіневих) рішень.
Мартін Ендер

Відповіді:


14

Javascript ES6, 44 байти

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

Вихід:

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

Все ще працюю над гольфом, але це працює зараз.


12
+1 за інше обличчя:=_=
Cyoce

2
Хіба ти не можеш це зробити $=_=>`(\^\_\^\)${($+'').slice(3)};$()`;$()(це насправді виглядає навіть приємніше, бо зараз схоже на те, що ти прокидаєшся сплячого обличчя). :)
Мартін Ендер

10

Вім, 33 , 27 натискань клавіш

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

Зауважте, що <C-v>означає ctrl + v, і є байтом, 0x16і <esc>є символом втечі, і є байтом 0x1B.

Це просто використовує трохи модифіковану версію мого Гольфу. відповідь.

Виходи:

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

Це справедливо, оскільки ^Vце спосіб представлення vim <C-v>та ^[спосіб представлення vim <esc>.

Основна ідея - просто ввести текст (^_^)його кодовими точками, щоб ми могли уникнути введення цих символів у вихідний код. У режимі <C-v>numberвставки вставить символ ASCII "числа". Однак, оскільки виклик говорить:

Рядок (^_^)або будь-яка його підрядка довжиною> = 2 не повинні відображатися в початковому вихідному коді, лише у вихідному.

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

Ось подарунок, який дозволяє вам бачити це рішення в дії і ставить вихідний код та вихідний бік поруч для порівняння:

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


досить підлий, використовуючи ^керуючий
знак


3

Пітон, 115 111 107 байт

def f():s='def f():s=%r;print s%%s.replace(s[:5],"^".join("(_)"))';print s%s.replace(s[:5],"^".join("(_)"))

Виклик f()і вихід:

def f():s='(^_^)():s=%r;print s%%s.replace(s[:5],"^".join("(_)"))';print s%s.replace(s[:5],"^".join("(_)"))

Частиною надихнула ця відповідь на подібне запитання .


Ласкаво просимо на сайт!
DJMcMayhem


3

Перехід (голанг), 131 байт

На цей виклик має бути відповідь у програмі Go!

package main;import"fmt";func main(){a:="package main;import\"fmt\";func(%c_%[1]c)(){a:=%q;fmt.Printf(a,94,a)}";fmt.Printf(a,94,a)}

Спробуйте в Інтернеті!


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

Використовує вбудований корисного навантаження , здатної Куайном на кінці тільки наповнювач повинен бути замінений Перетворює ціле число в базу 100, в результаті чого зліпків до символів, в результаті Таким чином, весь результат“ØV”ṘV
abc
[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.