Zadanie jest dość prostym wyzwaniem quine z niespodzianką, musisz wygenerować kod źródłowy w kształcie piramidy. Kształt piramidy zdefiniowano poniżej:
1
234
56789
ABCDEFG
HIJKLMNOP
QRSTUVWXYZa
bcdefghijklmn
......etc......
Głównym ograniczeniem tego wyzwania jest to, że twój quine musi zawierać dokładnie tyle bajtów, aby nie zakłócał wzoru piramidy. Na przykład działałyby następujące długości programów:
1-byter: 1st layer of the pyramid (not allowed by definition of a quine).
4-byter: 1st and 2nd layers of the pyramid.
9-byter: 1st, 2nd and 3rd layers of the pyramid.
etc...
Więc jeśli twój program to:
QWERTY
Nie byłby ważny, ponieważ miałby postać:
Q
WER
TY
Jeśli jednak twoim programem był QWERTYUIO, byłoby dobrze:
Q
WER
TYUIO
Zasady
- Standardowe luki są oczywiście niedozwolone, bez czytania własnego źródła.
- Piramida musi być wyśrodkowana, znaki końcowe są dozwolone, ale nie są wymagane.
- Ponadto, dowolna postać może być użyta do wyśrodkowania piramidy, nie musi tak być
(char)32
.
- Ponadto, dowolna postać może być użyta do wyśrodkowania piramidy, nie musi tak być
- Twój quine musi mieć kształt piramidy.
- Musi zachować oryginalną kolejność kodu źródłowego.
- Twój kod źródłowy NIE może zawierać znaku używanego do formatowania piramidy.
- EG, jeśli Twój kod źródłowy zawiera spację, będziesz potrzebować innego znaku dla tego formatu.
- Możesz użyć komentarzy w quine, aby „dopasować” do właściwego rozmiaru.
- Oczywiście muszą być one wyprowadzane jako część quine.
- Jeśli program zawiera znaki nowej linii / tabulatory, nie są one częścią quine i powinny zostać pominięte w danych wyjściowych.
- Kształt jest liczony w znakach, a nie bajtach; jeśli kształt jest zniekształcony, nie robisz tego dobrze.
Najniższy możliwy wynik powinien wynosić 4.
code-golf
ascii-art
restricted-source
quine
Urna Magicznej Ośmiornicy
źródło
źródło
Odpowiedzi:
05AB1E , 36 bajtów
Wypróbuj online!
Jeśli
trailing characters are allowed
także oznacza na końcu wyniku,0"D34çýā·<£.c"D34çýā·<£.c
oznacza, że warstwa jest krótsza o 25 bajtów.źródło
34ç
jest podstawą wszystkich quines 05AB1E, prawda? Poza tym nie jestem pewien, co sądzę o losowej liczbie końcowych znaków nowej linii ... Wolałbym, żeby ktoś inny wykonał to połączenie (jaka jest norma, że dozwolone jest 1 śledzenie / wyprzedzanie?), Co wydaje się super na krawędzi.ā·<
użyłem9ÅÉ
(w 25 bajtach, nie myślałem o końcowymJava 11,
324256227 bajtów-29 bajtów dzięki @JoKing .
Dane wyjściowe z wiodącymi spacjami do utworzenia trójkąta. (Uwaga: białe znaki między
var s
iint i
to tabulatory, a nie spacje).Wypróbuj online.
Wyjaśnienie:
quine -part:
var s
zawiera niesformatowany kod źródłowy String%s
służy do umieszczenia tego ciągu w sobies.format(...)
%c
,%1$c
I34
są wykorzystywane do formatowania cudzysłowia ("
)%%
służy do formatowania%
s.format(s,34,s)
łączy to wszystko razemCzęść wyzwania:
Co kończy się
java.lang.StringIndexOutOfBoundsException: begin 225, end 256, length 226
błędemString#substring(int,int)
metody, iteracja po wydrukowaniu wyniku ( co jest w porządku według meta ).źródło
s=s.format
rozstać, gdy możesz zamiast tego mieć format w pętli%%
ciąg znaków i tylko jeden%
w rzeczywistym kodzie, ale to oznacza, że komentarze są obowiązkowe///
w ciągu, więc ciąg jest wystarczająco długi, aby mógł przejść do oczekiwanej iteracji, aby wydrukować wszystko, zanim zatrzyma sięStringIndexOutOfBoundsException
na.substring
. I tylko dwa końcowe//
na końcu rzeczywistego programu, ponieważ drukuje tylko dwa końcowe//
. :)Python 2 , 81 bajtów
Wypróbuj online!
Eval quine, która używa spacji jako znaku wypełniającego.
źródło
;)
Perl 6 , 67 bajtów
Wypróbuj online!
Użyłem kilku znaków Unicode, aby wycisnąć tę dodatkową warstwę. Dane wyjściowe przy użyciu spacji:
Wyjaśnienie:
źródło
Python 2 , 169 bajtów
Zastosowania
0
do formatowania piramidy.Wypróbuj online!
Python 2 , 147 bajtów
Wykorzystuje to regułę Jeśli program zawiera znaki nowej linii / tabulatory, nie są one częścią quine i powinny zostać pominięte w danych wyjściowych.
Wypróbuj online!
źródło
Gol> <> , 36 bajtów
Wypróbuj online!
jeszcze młodsza wersja, 36 bajtów
Czuję się tak bliski skrócenia o jedną linię, grrrr ....
Wypróbuj online!
nawet młodsza wersja, 36 bajtów
Ten kod jest mniejszy, ale wciąż niestety wydaje się w tej samej ilości, komentarz zajmuje resztę miejsca.
Wypróbuj online!
nieco młodsza wersja, 36 bajtów
Wowza! Heh, właśnie tego użyłem, aby wypełnić trochę miejsca, ale program działa, aby grać w golfa, użyłem kilku gotowych wartości zamiast używać zmiennych!
Wypróbuj online!
Starsza wersja, 42 bajty
Ma on końcowy znak nowej linii i ma więcej znaków, niż chciałbym ...
Będę grał w ten surowo ...
Wypróbuj online!
źródło
Czysty , 256 bajtów
Wypróbuj online!
Praktycznie standardowy quine, dogodnie również szablon quine, z dodaną funkcją formatowania.
źródło
R ,
169144 bajtówWypróbuj online!
Udało się go skrócić, przechodząc do parsowanego łańcucha zamiast wyrażenia, które odeszło. Musiał jednak użyć redefinicji jednoargumentowego operatora, aby uzyskać go poniżej 144.
źródło
C # (interaktywny kompilator Visual C #) , 225 bajtów
Wykorzystuje
STX
znaku jako wypełnienia. Nie zdawałem sobie sprawy, że Kevin Cruijssen przesłał już dokładną kopię w java przed wysłaniem, dopóki nie skończyłem, ale postanowiłem to opublikować.Wypróbuj online!
źródło