Zadanie
Otrzymasz ciąg wejściowy składający się tylko ze znaków od a
do z
, tzn. Dane wejściowe będą pasować do wyrażenia regularnego /^[a-z]*$/
.
Twój wynik powinien być kompletnym programem w tym samym języku, którego kod źródłowy zawiera dane wejściowe i jest poprawnym quine.
Przykład
Twój program otrzyma dane wejściowe abc
i wyjściowe:
...abc...
Powyższe powinno być kompletnym programem w tym samym języku, który nie wymaga żadnych danych wejściowych i wyjściowych:
...abc...
tzn. wyprowadza się sam.
Punktacja
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
Odpowiedzi:
Python 3,
5761 bajtówWykonuje podstawowe python 3 Quine'a od tu i zastępuje nazwę zmiennej z wejścia.
Uwaga: Jak podkreślił Hyper Neutrino w komentarzach, to nie działa dla zastrzeżonych słów kluczowych, takich jakfor
,if
itpRozwiązuje to dodanie znaku, którego żadne z zastrzeżonych słów kluczowych nie kończy się na takim
'x'
lub innym numerze (Ørjan Johansen).źródło
"for"
ani inne zastrzeżone słowa w Pythonie.'x'
.Galaretka , 9 bajtów
Generator
Wypróbuj online!
Jak to działa
Quine
Jeśli dane wejściowe to
quine
, generowany jest następujący program.Wypróbuj online!
Jak to działa
To jest standardowa galaretka. Pierwszy,
ustawia lewy argument i zwracaną wartość do łańcucha
"quine\nØv"
.Następnie
Ṙ
drukuje reprezentację ciągu (kod z poprzedniego bloku) i zwraca niezmieniony ciąg.Następnie
v
pobiera lewy argument i przekazuje go jako dane wejściowe do programu JellyWe wszystkich programach Jelly wykonywany jest tylko główny link (zdefiniowany w ostatnim wierszu), więc pierwszy wiersz jest całkowicie ignorowany.
Na koniec
Øv
ustawia wartość zwracaną na"Ṙv"
, która jest drukowana domyślnie po zakończeniu programu zewnętrznego.źródło
Haskell , 51 bajtów
q
pobiera ciąg i zwraca ciąg.Wypróbuj online!
Przykładowe dane wyjściowe dla
putStr$q"test"
:Wypróbuj online!
fst
do wyodrębnienia głównego tekstu.show
aby zmienić całą krotkę w ciąg.mappend
do połączenia dwóch poprzednich funkcji. Dogodniemappend
w przypadku dwóch funkcji daje funkcję, która stosuje każdą funkcję do argumentu i łączy wyniki zmappend
typem wyniku (tutaj konkatenacja ciągów).źródło
Niedociążenie , 14 bajtów
Wypróbuj online!
Użyj jako
(test)(~aSaS(:^)S):^
- który sam jest quine.Jak to działa
(test)
i(~aSaS(:^)S)
są literałami ciągów, więc umieszczaj się na stosie, z tym ostatnim na górze.:
duplikuje(~aSaS(:^)S)
ciąg na górze stosu, a następnie^
uruchamia jego zawartość jako podprogram.~
zamienia dwa górne elementy na stosie, więc teraz(test)
jest najwyższy.a
zawija się(test)
w dodatkowe nawiasy.S
bierze ciąg((test))
na wierzch stosu i wypisuje go bez zewnętrznych nawiasów (które są dosłowną składnią).aS
drukuje pozostałe(~aSaS(:^)S)
na stosie w podobny sposób (w nawiasach).(:^)S
drukuje finał:^
.źródło
)(
Myślę, że tak naprawdę nie działa jako wejście.a
-z
.Niedociążenie , 14 bajtów
Wypróbuj online!
Inne podejście niż inne odpowiedzi niedociążenia; zamiast być quine, konstruuje quine. Co ciekawe, wychodzi na tę samą liczbę bajtów. Jest to funkcja, która przenosi swój argument ze stosu i wyświetla na standardowe wyjście.
Wyjaśnienie
Wynikowa funkcja wygląda następująco:
Innymi słowy, wypisuje literał łańcuchowy zawierający sam, a następnie
:^
. Jest to wyraźnie quine (ponieważ to, co właśnie wydrukowaliśmy, jest tym samym, co kod, który wykonaliśmy, aby go uruchomić).źródło
a
, o ile nie przeszkadza ci błąd błędu segmentacji drukowany na stderr, gdy dane wejściowe zawierająa
.(
bycia znakiem, który pojawia się na wejściu, wszystkie programy koniecznie nic nie zrobią ani się nie zawieszą. Nawet nie sądzę, że jest to specyficzne dla TIO; program jest nieprawidłowy, ale w momencie awarii już wygenerował pożądany wynik.V , 9 bajtów
Wypróbuj online!
To modyfikacja standardowej litery V i jestem dumny, że jest to tylko jeden bajt dłużej.
Hexdump:
Wyjaśnienie:
Następnie nagrywanie domyślnie zatrzymuje się i jest odtwarzane. Spowoduje to wygenerowanie następującego wyniku:
Ponieważ
j
odtwarzanie makra zostanie przerwane, nicHello
się nie uruchomi.źródło
Python 2, 38 bajtów
Chociaż dane wejściowe są wymagane tylko do obsługi
a-z
, powinny działać z każdym wejściem jednokreskowym, który nie zawiera bajtów NUL.Wypróbuj online
Na wejściu
abc
powstały Quine jest:Wypróbuj online
źródło
RProgN 2 , 15 bajtów
Wyjaśniono
Korzystanie z formatu
gdzie
%q
jest qouted input, buduje quine smakuktóry jest standardową quine RProgN2,
{']C'.}]C
która przed zakończeniem dołącza i niszczy wprowadzony ciąg.Wypróbuj online!
źródło
Siatkówka oka , 14 bajtów
Liczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
W przypadku danych wejściowych dane
x
wyjściowe:Wyjaśnienie
Wyjście jest niewielką modyfikacją standardowego quine . Po prostu używamy wyrażenia regularnego
|x
zamiast pustego wyrażenia regularnego. Ponieważ|
nadal pozwala (i priorytety) i puste dopasowanie, nie ma to wpływu na samą funkcjonalnośćx
będzie zawierać tylko litery, gwarantuje się, że sama jest poprawna składnia wyrażenia regularnego.Drukowanie tego faktycznie używa techniki, która jest podobna do samego quine. Aby uniknąć duplikacji quine, wstawiamy
¶\(*S1`|
tylko raz na początku łańcucha. To dokładnie połowa kodu źródłowego. Aby wydrukować go dwa razy bez wysuwu wiersza, używamy konfiguracji\(\
, która otacza cały program w grupę i sprawia, że zarówno sam stolik, jak i grupa zawierająca go wypisują wynik bez wysuwu wiersza.źródło
Japt , 14 bajtów
Przetestuj online! Dla wejścia
abc
, wyjśćktóra sama się wyprowadza. Przetestuj online!
Wyjaśnienie
Jest to rozszerzenie standardowej, przystosowanej do ładunku bazy Japt:
Jedyną różnicą jest to, że dodajemy
ª`abc
na końcu, co w JavaScript jest w zasadzie||"abc"
. Ponieważ wynikiem pierwszej części jest zawsze niepusty ciąg (prawda),||
nigdy się nie uruchamia.Istnieje kilka alternatywnych wersji tej samej długości:
źródło
CJam ,
1614 bajtówWypróbuj online!
Jak to działa
Które generuje coś podobnego
"`_~\"test\";"`_~"test";
.źródło
JavaScript, 21 bajtów
źródło
Perl 5 , 35 bajtów
Wypróbuj online!
źródło