W tym wariancie quine twój program musi wysyłać swój kod źródłowy transponowany po przekątnej od lewego górnego rogu do prawego dolnego rogu. Na przykład:
twój program na cztery linie
wyjścia
yof
ono
u u
r r
p l
r i
o n
g e
r s
a
m
Biała spacja na wyjściu nie jest dowolna. Spacje pojawiają się w dwóch sytuacjach: gdy w oryginale jest spacja (np. Między r
i l
w czwartej kolumnie) i gdzie konieczne jest wypełnienie znaków (np. Wszystkie spacje w pierwszej kolumnie). Obie są wymagane, a spacje nie mogą się nigdzie pojawiać jeszcze w wyjściu.
Pojedynczy znak nowej linii na wyjściu można opcjonalnie zignorować. Końcowe znaki nowej linii w kodzie źródłowym nie mają wpływu na wynik, a wiodące znaki nowej linii w kodzie źródłowym muszą być obsługiwane jak w powyższym przykładzie. Załóżmy, że każdy znak, który nie jest znakiem nowej linii, ma szerokość jednej kolumny i wysokość jednego wiersza, chociaż w przypadku znaków takich jak tab może to prowadzić do brzydkich wyników.
Twoje rozwiązanie musi zawierać co najmniej dwa wiersze z co najmniej dwoma znakami nie będącymi nowymi wierszami i nie może być własną transpozycją (wynik nie może być identyczny ze źródłem).
Oszukiwanie quinesów, które odczytują z pliku zawierającego kod źródłowy, pobierają dane z adresu URL, używają wbudowanych funkcji quining i tak dalej, nie są dozwolone.
To jest kod golfowy: wygrywa najkrótszy kod w bajtach.
Odpowiedzi:
CJam, 14 bajtów
Sprawdź to tutaj.
Choć krótszy, prawdopodobnie nieco mniej interesujący niż rozwiązanie Fission.
Wyjaśnienie
źródło
Rozszczepienie , 17 bajtów
Nadal moim ulubionym językiem quines ...
Wypróbuj online!
Wyjaśnienie
Jest to dość podobne do podstawowej quiny rozszczepienia . W rzeczywistości, jeśli nie było za „musi mieć co najmniej dwie linie z co najmniej dwa znaki nowej linii nie każdy” reguły, po prostu, że mogło być transponowane i wymienić
R
zD
. Ta zasada sprawia, że rzeczy są nieco bardziej interesujące, ponieważ musimy wydrukować inną linię.Przepływ kontrolny zaczyna się
D
od jednego atomu zmierzającego na południe. Ponieważ uderzy"
, zawinie się i wydrukujedo STDOUT, podobnie jak w normalnym quine.
'!
następnie ustawia masę atomu na kod znaku!
.0
Jest teleport który transportuje atomem, do drugiej kolumny, gdzie nadal się na południe.Z
+
zwiększamy masę tego pyłku do wartości"
.!N!
drukuje cytat, podawanie linii, cytat. STDOUT wygląda teraz tak:Po owinięciu atom uderza w inny
"
i teraz drukuje dosłownie drugą linię:Skończyliśmy teraz. Atom ponownie wykorzystuje teleporter i ląduje w tym,
;
który go niszczy, a tym samym kończy program.Podejrzewam, że najładniejszym fragmentem jest umieszczenie jednego
"
na dole, a drugiego na górze, dzięki czemu mogę wydrukować je za jednym razem, bez konieczności!
ponownego ustawiania wartości (ponieważ zostałby zastąpiony przez ponowne wejście w tryb string).źródło
JavaScript ES6, 90 bajtów
Nieźle nieźle.
Wyjaśnienie
Oto standardowe ramy quine:
Aby zmodyfikować, po prostu podzieliłem ciąg znaków quine wzdłuż znaków nowej linii i znaków, aby utworzyć macierz znaków, transponowanych przy użyciu 2 funkcji mapy i połączonych w celu utworzenia wyniku.
źródło
Stax , 23 bajty
Wypróbuj online!
Dostosowanie
"34bL"34bL
quine, oparte na pomyśle używanym w quines w wielu językach.źródło
Befunge-93 , 57 bajtów
Działa to poprzez umieszczenie każdego znaku w pierwszej kolumnie na stosie (oprócz samego cytatu), a następnie wydrukowanie każdego elementu ze stosu. Następnie drukuje cytat, drukuje nowy wiersz, a następnie przechodzi do drugiej kolumny. Robi to samo bez drukowania nowej linii.
Możesz to przetestować w linku w tytule, ale musisz samodzielnie skopiować i wkleić kod do okna. Jeśli naciśniesz przycisk „wolny”, pokaże ci ścieżkę, którą podąża wskaźnik i stos w danym momencie.
źródło
"
tylko jeden raz, abyś mógł przenieść kod z pierwszej kolumny do drugiej.Python 2,
917569 bajtówWypróbuj online
Wyjaśnienie:
Wykorzystuje to modyfikację standardowego quine:
Po modyfikacji:
Wystarczyłoby, gdyby dozwolona była jedna linia. Następnie dodałem dwa znaki do drugiej linii, aby spełnić to wymaganie. Te
#
znaki na drugiej linii można zastąpić niczym, tak długo, jak je zmienić w pierwszej linii, zbyt, a to sprawia, że program składniowo poprawny.Aby wydrukować teraz poprawnie, muszę wydrukować
#
na końcu dwóch pierwszych wierszy. Więc usuwam pierwsze dwa znaki z łańcuchas
i drukuję je#
przed drukowaniems%s
. Umieszczam jeden z#
początku,s
aby zaoszczędzić trochę bajtów, usuwając literał nowego wiersza.źródło