W tym pytaniu poprosiłem cię o odgadnięcie quinu anagramowego na podstawie jego wyników. Wygląda jednak na to, że nie mamy jeszcze pytania, aby zagrać w golfa na anagramie. Twoim zadaniem będzie stworzenie możliwie najkrótszego quine'a z anagramami.
Co to jest anagram quine?
Anagram quine to niepusty program, który drukuje anagram swojego kodu źródłowego, inny niż oryginalne źródło.
Oto przykład quinu anagramowego w Pythonie 2:
print`'`print`*2'*2`
Nie powinieneś czytać własnego źródła tego wyzwania.
code-golf
quine
permutations
Kreator pszenicy
źródło
źródło
Odpowiedzi:
Pyth , 2 bajty
Wyjścia
Wypróbuj online!
źródło
()
odkryłeś, że jest to quine znacznie krótszy niż dobrze znanyjN*2]"jN*2]
?V , 4 bajty
Wyjścia:
Wypróbuj online!
źródło
i2
?2 -> do the next thing twice
i -> insert the following
> <> ,
987 bajtówGrał w golfa 1 bajt dzięki @WheatWizard za pomocą
!
i zwiększając go, aby uzyskać"
Grał w golfa 1 bajt dzięki @ ConorO'Brien, używając
#
zamiast<!
Wypróbuj online!
Wyjścia
"#o>-1:
.Wyjaśnienie
źródło
":1+>o<!
jest nieco krótszy.":1->o#
Brainfuck, 158 bajtów
Wypróbuj online!
To może nie być najkrótsza wersja, ale przynajmniej działa.
Ciekawostką jest , że kod wyjściowy może być faktycznie wykonany (i się kończy).
Wydajność
Wyjaśnienie
źródło
Python 3, 32 bajty
Wydruki
p"r"i"n"t"2(")*p"r"i"n"t"2(")*\n
, posortowane dane wyjściowe:\n""""""""""""(())**22iinnpprrtt
źródło
Rubinowy , 8 bajtów
Wypróbuj online!
To drukuje
Wyjaśnienie
Działa to podobnie do odpowiedzi na python w pytaniu. Spowoduje to utworzenie ciągu,
p*2p*2
a następnie użycie rubyp
wydrukuje reprezentację ciągu.źródło
p
zamiastputs
?! Tyle zmarnowanego czasu ...p x
jest równoważne zputs x.inspect
JavaScript (ES6),
4032 bajtówNie ma też problemu z Function.toString. Jako bonus, kod wewnątrz łańcucha wygląda prawie legalnie. Edycja: Zapisano 8 bajtów, używając
+
zamiastrepeat(2)
.źródło
*2
zamiast.repeat(2)
, czy to nie działa?*
ciągów znakówKlein , 7 + 6 = 13 bajtów
Oto odpowiedź oparta na odpowiedzi > <> .
Wypróbuj online!
To wychodzi
źródło
Japt ,
109 bajtówZnalazłem lepszy sposób :-)
Wyjścia
"Q+2çQ+2ç
. Przetestuj online!Wyjaśnienie
Mógłby też być
Qi2ç"Qi2ç
, który drukujeQi2çQi2ç"
. Ten jest bliższy standardowemu Quine Japt:Ale nie wierzę, że istnieje jakikolwiek prosty sposób na zaklinowanie cudzysłowu na środku ciągu 9-bajtowego quine.
źródło
Q+"+Q² " ²
Ruby, 20 bajtów
To wychodzi
Wykorzystanie
%q(...)
składni napisów Ruby , która obsługuje zagnieżdżone nawiasy.źródło
Siatkówka , 8 bajtów
Wypróbuj online!
Wydruki
Oba zawierają jeden
_
, dwan
, dwa$
i trzy kanały.Zauważ, że wysuw wiersza, po którym następuje prawie jakikolwiek inny znak, jest trywialnym rozwiązaniem, ale wątpliwe jest, czy jest poprawny, ponieważ drugi znak tylko koduje się sam, a wysuw wiersza tak naprawdę nie koduje żadnego znaku wyjściowego.
Wyjaśnienie
Zamień puste dane wejściowe na
_
.Dopasuj pusty ciąg, który dzieje się zarówno przed, jak i po,
_
i wstaw linefeed ($n
), ann
i a$
. Odkąd po raz pierwszy to wstawiliśmy_
, dodaje to każdy z tych znaków dwa razy, więcn
i$
uwzględniają$n
i otrzymujemy dwa z trzech kanałów, których potrzebujemy w danych wyjściowych. Trzecie podawanie linii jest drukowane, ponieważ Retina domyślnie drukuje końcowe podawanie linii.Na
n$n$
tym etapie moglibyśmy również użyć , aby wydrukować:źródło
Python Repl, 4 bajty
To moje pierwsze rozwiązanie Code Golf, więc mam nadzieję, że będzie zgodne z zasadami. W interaktywnym tłumaczu Python 2 lub 3:
Dane wyjściowe są anagramem danych wejściowych.
Inne:
W Python 2:
W Python 3:
Aktualizacja 2017-06-15: Jeszcze jedno:
źródło
Haskell ,
3839 bajtówWypróbuj online! Wydajność:
Edycja: bajt +1, ponieważ wcześniej zapomniałem o niejawnej końcowej linii nowego
print
.Alternatywnie: (ta sama liczba bajtów, ale nie zawiera ASCII-owl)
Wypróbuj online!
Wydajność:
źródło
Groovy,
2420 bajtów-4 dzięki Kalkulatorowi, białe znaki nie były wcale potrzebne!
Wydajność:
Wyjaśnienie:
Anonimowe zamknięcie, które po wywołaniu zwraca
{""*""2""}
dwa razy (konkatenowane).źródło
*2
jako dopełniania między cudzysłowami:{"""{""*""2""}"""*2}
05AB1E , 10 bajtów
Wypróbuj online!
Wydajność:
Wyjaśnienie:
źródło
CJam , 6 bajtów
Wypróbuj online!
Wydruki
Wyjaśnienie
źródło
Bash, 36 bajtów
To wychodzi
(i tworzy plik
f
jako efekt uboczny, ale jest to dozwolone na meta .)Zarówno program, jak i wynik mają końcowy znak nowej linii.
Proces myślowy: doszedłem do wniosku, że najprostszym sposobem na dwukrotne wyprowadzenie ciągu, oprócz przypisania go do zmiennej, było zrobienie
Ciąg musi być cytowany, ponieważ będzie zawierał spacje i
<
znaki, więc miałemco prawie działa, z wyjątkiem tego, że nie wyświetla cudzysłowów. Na szczęście Bash obsługuje dosłowne łączenie łańcuchów znaków, po prostu umieszczając je obok siebie, więc dołączenie
"''"
do tustringu i wstawienie""
do części pojedynczego cytatu daje to rozwiązanie.źródło
PHP , 44 bajty
Wypróbuj online!
źródło
CJam , 8 bajtów
Wypróbuj online!
Wyjaśnienie
Podobne do przykładu Python w pytaniu
Dane wyjściowe to
"2*`2*`"
.źródło
Befunge, 11 bajtów
Wydruki:
Wyjaśnienie:
źródło
"
. Jakie jest dokładnie to ograniczenie?"
uważa się to za czytanie własnego źródła, to po prostu dosłowny ciąg znaków.g
jednak rażąco czyta własne źródło.":1+>:#,_@!
also works but its not shorter.' 2+"8k,@
for 9 bytesQBIC, 8 bytes
I just figured out how to do a proper quine in QBIC. Making an anagram out of it is done by simply switching around the characters in the string literal. There are 24 possible anagrams this way.
źródło
Befunge-98, 8 bytes
Try it online!
źródło
Ohm, 14 bytes
Try it online!
Output:
Explanation
źródło
JavaScript (ES6), 15 bytes
Outputs:
Snippet:
Show code snippet
źródło
Fission 2,
9 86 bytesTry it online!
Explanation
An atom is created at
R
, which moves right. This atom then comes across a"
, which starts printing mode. In printing mode, all characters (until the matching"
) are printed. This means it prints'!+OR
in this case. Then, all that is left is printing"
, which is done by the remaining characters.'!
sets the atom's mass to the character code of!
, and+
increments it to the character code of"
. Then, the character code is output byO
and the atom is destroyed, ending the program.(Actually, this is just a rotation of the shortest quine)
źródło
R"'!+O
, untested).Mathematica, 2 bytes
Output:
A number starting with a decimal point such as
.123
is interpreted as0.123
, so.0
is interpreted as0.0
. Since the part of the number after the decimal point is zero, Mathematica does not print it.źródło
.
encodes itself, but I don't think the0
does? A 0 beyond the decimal point can't sanely be seen as encoding a leading zero before the decimal point, the latter's a side effect of printing a float. So under the old quine rules, there's no problem here. (I'm not sure whether the new rules have come into force yet.)JavaScript (yet another one), 11 bytes
Called with
f()
, outputsShow code snippet
źródło
Python 3, 31 bytes
źródło
Stax,
84 bytesRun and debug online!
A direct port of this answer.
Old version, 8 bytes
Run and debug online!
Alternative version with a pretty cheap trick that can be applied to proper quines in almost any language.
Run and debug online!
Because
"34bL"34bL
is a proper quine in Stax.Yet another version, using only single-char string literals.
Run and debug online!
Explanation
źródło
05AB1E, 13 bytes
Outputs:
Try it online!
źródło