Perspektywa tego wyzwania jest:
- Jeśli twój program działa normalnie,
"
należy wydrukować cały kod ze znaków mowy ( - podwójne cudzysłowy). - Jeśli twój program jest owinięty podwójnymi cudzysłowami (z kolei odwracając znaki mowy), należy wydrukować kod, który zwykle nie jest w cudzysłowach.
Na przykład:
Powiedzmy, że masz następujący kod:
fancyStuff("myCode"); "I like".isGreat();
Gdybym go uruchomił, oczekiwałbym wyniku:
myCode
I like
Gdybym jednak zawinął go w cytaty, otrzymałbym:
"fancyStuff("myCode"); "I like".isGreat();"
Po uruchomieniu tego kodu oczekiwane dane wyjściowe to:
fancyStuff(
);
.isGreat();
Oczywiście powyższy przykład nie jest odpowiedzią funkcjonalną w żadnym języku. Twoim zadaniem jest napisanie kodu, który działa w ten sposób.
Zasady
- Obowiązują standardowe luki.
- Wartości drukowane, zarówno w formie cytowanej, jak i niecytowanej, muszą być niepuste lub składać się wyłącznie z białych znaków. Oznacza to również, że wszystkie programy muszą zawierać co najmniej jeden zestaw cytatów.
- Dopuszczalne jest jednak końcowe / poprzedzające białe znaki.
- Bez patrzenia na własny kod, wymagane nazwy plików itp.
- Niedopasowane cytaty są niedozwolone
- Jeśli istnieje wiele ciągów, można je wydrukować jako znaki nowej linii (jak w przykładzie) lub w inny sposób czytelny dla człowieka - bez tablic i obiektów
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
code-golf
restricted-source
quine
Geza Kerecsenyi
źródło
źródło
Odpowiedzi:
Python 2 , 20 bajtów
-7 bajtów dzięki tsh
Wypróbuj online!
Stara odpowiedź:
Python 2 , 27 bajtów
Wypróbuj online!
Ciąg myśli za tą odpowiedzią:
Zacznij od prostego wydruku, ponieważ musimy coś wydrukować .
Musimy również wydrukować coś w odwróconej obudowie, tj. wydrukować w cudzysłowie.
Nie odwrócona obudowa jest w tym momencie całkiem dobra. Skupmy się na odwróconej sprawie. Teraz zaczynamy od łańcucha
print
, po którym nie może nastąpić od razu instrukcja print. Naprawmy to za pomocą średnika.Dobry towar. Tyle że odwrócony kod nic tak naprawdę nie drukuje. Będziemy musieli wydrukować
print
na początku, ponieważ kończy się na cytatach, ale także wydrukować wszystko, co nastąpi po drugim cytacie, ponieważ kończy się również na cytatach. Oczywistym sposobem jest dodanieprint
i pomnożenie ostatniego ciągu przez 2.Teraz odwrócony kod działa dobrze, choć musimy uważać na to, że sekcja przed pierwszym cytatem i sekcja po drugim cytacie muszą pozostać takie same podczas przyszłych zmian. Jeśli chodzi o kod nieodwrócony, generuje błąd składniowy - po raz kolejny musimy wprowadzić średnik do oddzielnych wyrażeń.
Pythonowi nie podoba się wygląd tego samotnego średnika, więc musimy zaspokoić głód węża dwoma takimi samymi wyrażeniami braku op, wstawionymi przed pierwszym średnikiem i ostatnim średnikiem. Większość wyrażeń będzie działać poprawnie w pierwszym przypadku, ale w drugim przypadku musi następować
print";print 2*"
w nieodwróconym kodzie bez zepsucia czegokolwiek. Możemy użyć''
, który po prostu łączy się z poprzednim ciągiem.źródło
print(";print('print()');")
ma również 27 bajtów, a także Python 3.CSS, 66 bajtów
CSS nie może rozwiązać zbyt wielu pytań ...
źródło
body:after
działa również w niektórych implementacjach?:after
jest dostępny w większości przeglądarek z powodu kompatybilności wstecznejHQ9 + [patrz uwagi poniżej] , 1016 bajtów
Użyj implementacji na https://esolangs.org/w/index.php?title=HQ9%2B&oldid=59995 i skompiluj interpreter z MinGW GCC 5.3.0 w systemie Windows. Nie jestem pewien, czy działa z inną wersją kompilatora, ponieważ do zakończenia programu wymagane jest niezdefiniowane zachowanie C. Bufor ma długość 1000 bajtów. I kod źródłowy większy niż 1000 bajtów załatwia sprawę. Nie jestem pewien, jak to się stało.
źródło
05AB1E , 4 bajty
Wyjścia konkatenowane bez separatora.
Wypróbuj online lub wypróbuj online z otaczającymi cytatami .
Wyjaśnienie:
źródło
Japt , 4 bajty
Wypróbuj to bez cudzysłowu lub cytowania
P
jest zmienną Japt dla pustego łańcucha, as
metoda wycina łańcuch - bez żadnych argumentów nic nie robi.Lub jeszcze trochę mniej trywialne:
Wypróbuj to bez cudzysłowu lub cytowania
Pierwszy zawiera duże litery,
+
a drugi dołączau
do pustego ciągu.źródło
C # (interaktywny kompilator Visual C #) ,
1131121077064 bajtówZaoszczędzono 5 bajtów dzięki @negative seven
Nie cytowany i cytowany
Po chwili zdałem sobie sprawę, że moje rozwiązanie jest zbyt skomplikowane. Najnowszy program pokazany tutaj po prostu ukrywa resztę programu w komentarzu, aby uniknąć błędów, gdy jest zawinięty w cudzysłów.
Po zapakowaniu w cudzysłów
Write(
jest przekazywany do metody rozszerzenia, która drukuje go wraz z);
.źródło
Split()
->Trim()
ivar a
->_
Remove
iInsert
na niej, teraz mogę po prostu użyć metody rozszerzenia!Perl 6 , 11 bajtów
Wypróbuj online!
Drukuje
.say~
z końcowym znakiem nowej linii. Wydaje się to zbyt łatwe. Czy coś brakuje?Po zapakowaniu w cudzysłów tworzy
say
spację i znak nowej linii.źródło
Foo , 4 bajty
Wypróbuj online! Działa również w Japt.
5 bajtów (UTF-8)
Wypróbuj online! Działa również w 05AB1E.
9 bajtów
Wypróbuj online! Działa także w Runicznych Zaklęciach.
11 bajtów
Wypróbuj online! Działa również w Perlu 6.
20 bajtów
Wypróbuj online! Działa również w Python 2.
69 bajtów
Wypróbuj online! Działa również w CSS.
Hmm ... Foo to bardzo elastyczny język.
źródło
"a"b
1"2"
działa również w Foo. Jedyną odpowiedzią w tym wyzwaniu, która nie jest jak dotąd poliglotą Foo, jest w HQ9 +, ponieważ interpreter Foo ma również problem przepełnienia.> <> ,
189 bajtów-9 bajtów dzięki Jo King
Wypróbuj online! ( cytowany )
Wyjaśnienie
źródło
Befunge-98 (FBBI) , 12 bajtów
nienotowanego Cytowany
Oba przypadki są drukowane
<@,k4
. Zamiast nich@
można zastąpić jedno (lub oba)q
.źródło
Runiczne Zaklęcia , 9 bajtów
Wypróbuj online! i
""!""$;"$;"
Od Kevina Cruijssena, który zasadniczo naprawił moją pierwszą próbę, wykorzystując to, co zrobiłem w drugiej.
Schodząc w dół „fungoidy nigdy nie dorównywały cytatom„ gięcie reguł ”jest coś w tym, co nie powinno być OK”, wspomniałem w swoim własnym komentarzu:
7 bajtów
Wypróbuj online! i
"0".""$;"
W normalnych okolicznościach program ten wykonuje się jako
0".""$;0".""$;
wypychanie liczby całkowitej0
, następnie ciąg.
, konkatenuje$;0
, NOP, łączy pusty ciąg, drukuje górę stosu (ciąg.$;0
) i kończy. Zawijanie go w cudzysłów powoduje, że"0".""$;"
popycha ciąg0
, NOP, konkatenuje pusty ciąg, drukuje górę stosu i kończy (renderując poprzednio niezadrukowaną liczbę całkowitą0
w postaci ciągu). Ostatni"
pozostaje niewykonany (i nie jest częścią oryginału programu).Grzyby nie mają literałów łańcuchowych, mają polecenie, które przełącza tryb „czytaj własne źródło jako łańcuch”, a pewna forma „wskaźnika instrukcji osiągnęła granicę źródłową” (zwykle zawijanie krawędzi), więc ten sam kod źródłowy -positional-byte działa zarówno jako instrukcja „łańcucha początkowego”, jak i „łańcucha końcowego”, tworząc literał ciągu całego wiersza / kolumny (z wyłączeniem
"
samego).źródło
$;
na końcu w cytowanej wersji."$;
i""$;"
(Runiczne cytaty łączą się w pary).!.
(co jest poprawne), ale czy Twój program nie powinien generować cudzysłowów0$;
? PS: W ogóle nie znam Zaklęć Runicznych, ale potencjalna poprawka oparta na twoim obecnym układzie, która moim zdaniem jest poprawna, byłaby0"!""$;"$;
(które wyjścia!$;
są takie, jakie są, lub wyjścia,0$;
jeśli są otoczone cudzysłowami). EDYCJA: Właściwie myślę, że możesz upuścić0
wyjście!$;
i$;
.$
to „print top of stack” i;
kończy się. Ale w zasadzie masz prawidłową odpowiedź.Haskell, 31 bajtów
Wypróbuj online! Lub ujęte w cytaty: Wypróbuj online!
źródło
MathGolf , 4 bajty
Wypróbuj online!
;
Iq
mogą być wymieniane na wiele różnych poleceń, w tym nie-ops.źródło
Rubinowy , 8 bajtów
Wypróbuj online!
Zawija dane wyjściowe w cytaty, co może być nielegalne.
Rubinowy , 17 bajtów
Wypróbuj online!
źródło
JavaScript (SpiderMonkey) , 25 bajtów
Wypróbuj online!
Wypróbuj online!
Trywialne, ale funkcjonalne.
źródło
Japt , 4 bajty
Bez cudzysłowu konwertuje ciąg
P
na wielkie litery. Cytowany, drukujeu
.Spróbuj
Japt , 4 bajty
Bez cudzysłowu odwraca ciąg
P
. Cytowany, drukujew
.Spróbuj
źródło
Q
zamiastP
, to więcej meta! ;)R, 16 bajtów
Zauważ, że powyższy kod nie jest zawinięty w dodatkowe znaki cudzysłowu i ma zarówno spacje początkowe, jak i końcowe.
Wypróbuj (wersja bez opakowania)
źródło
AppleScript, 9 bajtów
Wyjaśnił:
Zacytowany:
źródło