Było kilka wyzwań związanych z podwojeniem kodu źródłowego: tu i tutaj . Zadanie, które tu mamy, jest nieco trudniejsze, ale powinno być wykonalne w prawie każdym języku.
W tym wyzwaniu przyjmiesz dowolną liczbę całkowitą dodatnią. Twój program musi podwoić liczbę całkowitą dwukrotnie . Kiedy kod źródłowy zostanie podwojony, przyjmie dodatnią liczbę całkowitą i wyśle go do kwadratu .
Jak podwoić swój kod źródłowy? Cóż, możesz mieć to na swój sposób . Oznacza to, że możesz podzielić swój kod źródłowy na ciągi bajtów lub znaków (lub tokenów w tokenizowanych językach) o dowolnej żądanej długości i powtarzać każdą porcję dwa razy z rzędu.
W przypadku programu początkowego ABCDEFGHIJKL
(długość 12) wszystkie możliwe programy podwojone:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Zauważ, że oznacza to, że programy liczb pierwszych można podwoić tylko na dwa sposoby: podwoić każdą postać lub cały program powtórzyć dwukrotnie.
Zasady:
- Kod musi być pełnym programem lub funkcją.
- Standardowe luki są zabronione.
- Standardowe metody we / wy są dozwolone.
- Wszystkie znaki / bajty, w tym białe znaki i znaki nowej linii, są liczone w długości kodu i przyczyniają się do fragmentów.
- Państwo może zakładać, że wejście i jej kwadrat może być reprezentowany przez typ int / całkowitej Twojego języka.
- Nie możesz zakładać końcowego znaku nowej linii lub innego znaku.
- Podaj wielkość porcji w nagłówku po liczbie bajtów.
- To jest golf golfowy , więc krótsze programy są lepsze! Jeśli dwa programy mają tę samą długość, wygrywa ten, który używa mniejszej długości porcji. (Jeśli masz dłuższy program, który używa mniejszej długości fragmentu, również warto go opublikować!)
- Jeśli twój program wymaga drugiego wejścia / linii, możesz nie przyjmować żadnych założeń co do jego wartości. W szczególności twój program powinien działać, jeśli drugie wejście jest puste, takie samo jak pierwsze lub inna liczba całkowita. Jeśli twój program nie wymaga drugiego wejścia / linii, możesz zignorować to ograniczenie.
5 -> 10
:; podwójny Kod: 5 -> 25 25
.
.0
na końcu)?