Twoim zadaniem jest napisanie programu lub funkcji, która wypisze pierwszy znak kodu źródłowego, następnie drugi, a następnie trzeci ... przy każdym uruchomieniu.
Na przykład, jeśli twój program był foo
w języku bar
w pliku baz.bar
, powinieneś otrzymać wynik podobny do tego:
λ bar baz.bar
f
λ bar baz.bar
o
λ bar baz.bar
o
Twój program może zrobić wszystko po zakończeniu drukowania kodu źródłowego w ten sposób. Możesz zmodyfikować kod źródłowy pliku, ale pamiętaj, że kod źródłowy do wydrukowania to oryginalny kod źródłowy.
To jest golf golfowy, więc wygrywa najkrótszy program w bajtach.
Odpowiedzi:
Galaretka , 12 bajtów
To jest link niladyczny. Wypróbuj online! (Obejmuje kod do połączenia z linkiem dwanaście razy).
Jak to działa
Jako dodatkowy bonus, ponieważ rejestr będzie przechowywał pusty ciąg znaków po wywołaniu twelveth, jest to po raz kolejny fałsz, a link jest gotowy do rozpoczęcia od nowa. Wywołanie linku 24 razy spowoduje wyświetlenie kodu źródłowego dwa razy, wywołanie go 36 razy trzy razy itp.
źródło
¢
), funkcję tożsamości (¹
, która nie jest tak naprawdę potrzebna po pierwszym wywołaniu), ustaw wartość zwracaną na linefeed (⁷
domyślnie drukuje poprzednią wartość zwracaną), powtórz.¹
i⁷
oba są indeksami górnymi, ale nie są ze sobą powiązane. Zastąpiłem je mniej mylącymi¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢;¢
(zadzwoń, połącz, powtórz).JavaScript - 26 bajtów
Określa,
f()
że kod źródłowy zwraca znak po znaku.Zwraca niezdefiniowane po wyczerpaniu znaków.
źródło
skumulowane , niekonkurencyjne, 34 bajty
Odmiana standardowego quine. To jest pełny program. Służy
execCounter
do określenia, ile razy konkretnie ten program był uruchamiany. Błędy po wydrukowaniu wszystkiego.Wypróbuj tutaj!
źródło
Pip , 31 bajtów
Anonimowa funkcja. Przetestuj na TIO!
Wyjaśnienie
Zacznij od tego standardowego Pip Quine:
Zawiń to w nawiasy klamrowe, aby uczynić to funkcją. Teraz zamiast zwracać całe źródło, musimy się do niego indeksować. Użycie zmiennej globalnej dla indeksu i zwiększenie jej za każdym razem spełni wymóg „następny znak za każdym razem, gdy się nazywa”.
v
jest najlepszym kandydatem, ponieważ jest wstępnie zainicjowany-1
. Zwiększenie go za pierwszym razem daje indeks0
, następnym razem1
itp.Pip ma cykliczne indeksowanie, więc gdy funkcja wypisze ostatni znak, zacznie od początku.
źródło
Python, 90 bajtów
Rozszerzenie standardowej quine Python (mile widziane wskazówki dotyczące gry w golfa):
Jest to funkcja generatora python , co oznacza, że wykonujesz iterację, a każda iteracja zapewnia następny znak w kodzie źródłowym. Gdy wszystkie postacie zostały zwrócone, następuje awaria
IndexError
.Do testowania wystarczy dołączyć ten skrypt na końcu programu:
Lub wypróbuj online!
źródło
*> <> ,
1321 bajtówTworzy plik o nazwie
\n
umożliwiającej śledzenie indeksu.To może być więcej golfa, ale nic nie wyskakuje na mnie natychmiast ...
Wydajność
Wyjaśnienie
Oszukiwanie Przyrostowa Quine
Wyjaśnienie
źródło
g
instrukcji."your code goes here;
dla> <>, a następnie uzyskać dostęp do n-tego członka na stosieMathematica, 91 bajtów
Komentarze bardzo mile widziane; Wciąż uczę się lin o tym, jakie quines są odpowiednimi quinesami.
Definiuje funkcję wywoływaną wielokrotnie bez argumentów. Po 91. wywołaniu pojawia się duży błąd i zwraca nieocenioną wartość.
Do rozwiązania były dwa problemy: po pierwsze, chciałem po prostu użyć
StringTake[ToString[#0]<>"[]"]
, aleToString[]
wydaje się, że usuwam cudzysłowy; więc musiałem zastąpić"[]"
przezFromCharacterCode[{91, 93}]
. Po drugie, zmienne Mathematica zaczynają się od niezainicjowanej, więc nie mogę zadzwonić++q
wcześniej,q
jest zdefiniowane; dlategoIf[!NumberQ[q], q = 0]
potrzebna jest inicjał .Nieistotna koda: patrząc w górę
NumberQ
dowiedziałem się, że Mathematica ma funkcję o nazwieTrueQ
... która, tak, zwraca,True
jeśli argument jest,True
aFalse
argument jestFalse
! (Narzędzie polega na tym, że zwraca równieżFalse
wszystkie inne argumenty.)źródło
Microscript II,
4033 bajtówLiterał bloku kodu, najbliższy odpowiednik języka dla funkcji:
Po uruchomieniu ponownie włącza się,
x
aby ułatwić ponowne wywołanie.źródło
Bash (i zsh, ksh), 39 bajtów
Po wydrukowaniu programu nic nie jest drukowane.
Upewnij się,
0
że nie istnieje w bieżącym katalogu i uruchom:źródło