Napisz kompletny program, który przyjmuje logiczną lub nieujemną liczbę całkowitą. To musi:
- Wyprowadza własny kod źródłowy, jeśli wartością wejściową jest fałsz
- Wysyła własny kod źródłowy w odwrotnej kolejności, jeśli wartość wejściowa jest zgodna z prawdą
Twój program nie może być palindromiczny ani w żaden sposób nie może odczytać własnego kodu źródłowego.
To jest golfowy kod - wygrywa najkrótszy kod w bajtach.
Odpowiedzi:
Gol> <> , 9 bajtów
Czuję się trochę niezręcznie, publikując to, ponieważ mamy już odpowiedzi> <>, Vitsy i Minkolang. Jedynymi dodatkami do standardowego quine są
I
(odczyt wejściowy liczby całkowitej),?
(wykonaj następną, jeśli prawda) ir
(odwrotny stos).Wypróbuj online .
źródło
sP#Hr?I"
CJam,
1716 bajtówSprawdź to tutaj.
Dość prosta modyfikacja standardowego quine. Inne rozwiązania dla 17 bajtów:
Jeśli mogę założyć, że wejście to tylko 0 lub 1 (jako stand-in dla wartości logicznej, dla której nie ma dedykowanego typu w CJam), otrzymuję 15, pomijając
g
:Wyjaśnienie
źródło
g
.Pyth, 17 bajtów
Prosta modyfikacja standardowej quiny Pyth.
źródło
> <>, 17 bajtów
Wymaga flagi -v (+1 bajt) do wypychania danych wejściowych na stos (lub do wcześniejszego umieszczenia danych wejściowych na stosie w tłumaczu online).
Możesz wykonać poniższe czynności dla tej samej ilości bajtów (bez flagi), jeśli dozwolone są tylko wartości całkowite (tj. 0 dla fałszu, 1 dla prawdy).
Wypróbuj online
Prawda / fałsz dla> <> oznaczają odpowiednio nie 0 i 0.
źródło
Vitsy , 15 bajtów
... ja ... biję CJam! (krzyczy) Mamo! Słuchaj mamo!
Wyjaśnienie:
Nowsza wersja Vitsy , 11 bajtów
źródło
JavaScript (ES6), 42 bajty
To jest modyfikacja mojej Bling Quine . To też dwa razy dłużej.
źródło
prompt()
jest to konieczne, chyba że przejdziemy na Node.JS. Wierzę, że$=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())
działa poprawnie, choć może można by go bardziej zagrać w golfa.Burleska, 40 bajtów
Wyjaśnienie:
Burlesque ma zaawansowane wbudowane funkcje manipulacji stosami i kodami. W rzeczywistości nie można uzyskać dostępu do kodu źródłowego programu, ale można uzyskać dostęp do pozostałego kodu, który ma zostać wykonany w przyszłości. Oznacza to,
#Q
że zwróci cały kod, który następuje po nim, dlatego musimy dodać wszystko#Q
do tego kodu, co robimyri#Q
.++1 2
jest technicznie nielegalnym kodem, ponieważ jest oparty na stosie. Ale możemy manipulować kodem, aby działał jako1 2++
:Praca z tymi wbudowanymi funkcjami jest niezwykle trudna i nikt jeszcze ich nie wykorzystał do niczego produktywnego oprócz rzeczy związanych z quine. Jeśli się odwrócisz
++1 2
, otrzymasz to,2 1++
co wytworzy,21
a nie wyprodukuje12
. Powodem, dla którego powyższy kod12
jest generowany, jest#Q
także to, że<-
w rezultacie wykonujemy o wiele więcej niż tylko2 1++
: p. W końcu wykonujemy to,2 1++#q<-
co produkuje12
.Możemy faktycznie zastąpić rzeczy w naszym kodzie, na przykład ten kod zastępuje wszystkie wystąpienia
?+
w sobie?*
Stosowanie:
źródło
Haskell,
126118108 bajtówOczekuje
0
lub1
jako dane wejściowe.źródło
Minkolang 0,10 , 13 bajtów
Wypróbuj tutaj.
To jest dokładnie tak jak standardowy Quine'a wyjątkiem tych czterech znaków:
n,?r
.n
pobiera z wejścia liczbę całkowitą,,
odwraca ją, więc?
przeskakuje,r
jeśli dane wejściowe są zgodne z prawdą. W przeciwnym razier
stos jest odwracany, tak aby był wyprowadzany w odwrotnej kolejności.źródło
Python 2, 51 bajtów
źródło
Java 10 (pełny program), 282 bajty
Wypróbuj online.
Java 10 (jako funkcja lambda), 154 bajtów
Wypróbuj online.
Wyjaśnienie:
wyjaśnienie quine :
var s
Zawiera kod źródłowy niesformatowany%s
służy do umieszczenia tego ciągu w sobies.format(...)
%c
,%1$c
i34
służą do formatowania podwójnych cudzysłowóws.format(s,34,s)
łączy to wszystkoA następnie
new StringBuffer(s).reverse()
służy do odwrócenia ciągu quine-String, jeśli to konieczne, na podstawie logiki wejściowej.źródło
05AB1E , 21 bajtów
Wypróbuj online.
Modyfikacja domyślnego quine
0"D34çý"D34çý
przez dodanie‚sè
.Wyjaśnienie:
PS: Automatycznie drukuje końcowy znak nowej linii. Jeśli to również powinno zostać odwrócone, zamiast tego ma 23 bajty:
Wypróbuj online. (
?
jest wyraźnym drukiem bez nowej linii )źródło