Twoim zadaniem jest napisanie programu o równej długości , który drukuje kwadrat ASCII-art (opisany poniżej), który zwiększa jego długość boku o 1 jednostkę za każdym razem, gdy oryginalny kod źródłowy jest wklejany w środku bieżącego kodu.
Bardzo trudno jest mi bardzo dobrze zdefiniować to zadanie, dlatego dam wam przykład:
Powiedzmy, że twój początkowy kod był
CODE
i że został wydrukowany:0
Następnie wstaw
CODE
w środku: kod staje sięCOCODEDE
i powinien zostać wydrukowany:00 00
Ponownie wstaw
CODE
w środku: kod staje sięCOCOCODEDEDE
i powinien zostać wydrukowany:000 000 000
I tak dalej. Twoja odpowiedź powinna teoretycznie zadziałać po dowolnej liczbie iteracji, ale rozumiem, czy z powodu ograniczeń wydajności językowej nie można rozsądnie przekroczyć określonego progu.
Niektóre zasady:
Możesz użyć dowolnego drukowalnego ASCII (32-127) jako znaku używanego dla twojego kwadratu. Twój wybór musi być stały (powinieneś używać tego samego znaku dla każdej iteracji).
Początkowy kwadrat wyjściowy musi mieć długość boku 1 .
Kwadrat ascii-art jest zdefiniowany jako ciąg z N liniami (oddzielonymi liniami N-1 linii / znaków nowej linii), a każda linia zawiera N kopii wybranego znaku.
Twoje dane wyjściowe nie mogą zawierać żadnych obcych znaków innych niż końcowy znak nowej linii.
Możesz użyć wartości domyślnych dla wejścia i wyjścia (programy lub funkcje są dozwolone, ale fragmenty nie są).
Środkowy o kodzie jest zdefiniowany jako punkt, gdzie kod źródłowy może być podzielona na dwie części tak, że dwie są równe.
Twoje odpowiedzi zostaną ocenione według długości oryginalnego programu , w bajtach. Wygrywa najniższa liczba bajtów. W przypadku remisu odpowiedź przesłana wcześniej wygrywa.
Możesz użyć tego programu do zastosowania wstawek bez konieczności robienia tego ręcznie.