Biorąc pod uwagę ciąg takich znaków ASCII (to nie jest grafika ASCII, ale wystarczy na przykład):
abc
d e
fgh
Zmieszaj go tak, jakby był wyświetlany na ekranie z jednym znakiem w wierszu, tak:
a
b
c
d
e
f
g
h
Wydrukuj wynik, odczekaj sekundę ± 0,5 sekundy przed wyczyszczeniem terminala i wydrukuj to samo, ale z 2 znakami wyświetlanymi w wierszu zamiast 1. Zasadniczo szerokość wyświetlacza zmienia się z 1 na 2.
ab
c
d
e
fg
h
Zwróć uwagę na miejsce po d
. Powtórz czekanie, a następnie drukuj z dodatkowym znakiem w wierszu, aż zostanie wyprowadzony wprowadzony tekst.
Jeśli uderzysz w koniec wiersza podczas próby drukowania znaków, wstawisz nowy wiersz i wydrukujesz resztę zgodnie z tą regułą. Na przykład dane wejściowe:
abcdefg
ab
Wydrukowałby następujące, gdy długość wyświetlania wynosi 4.
abcd
efg
ab
Efekt zmiany rozmiaru terminala można znaleźć tutaj: https://repl.it/GoeU/1 . Uruchom program, a następnie przeciągnij rzecz oddzielającą terminal od edytora tekstu tam iz powrotem.
Wyjaśnienie:
Gdy linia pojawi się dokładnie tak, jak została wprowadzona, możesz pozostawić tę linię w spokoju, aby w przyszłości liczba znaków była większa.
abc
ab
powinien wydrukować
ab
c
ab
gdy długość zdania = 2.
To jest golf golfowy , więc wygrywa najmniej bajtów!
Zasady:
- Należy wydrukować do STDOUT jako jedynego wyjścia.
- Musisz wyczyścić terminal lub stworzyć iluzję czyszczenia terminala, dodając około 150 pustych linii.
- Potrafi przyjmować dane wejściowe standardowymi metodami.
- Obowiązują domyślne luki.
- Śledzenie tekstu z tekstem NIE JEST OK.
Ten pomysł przyszedł mi do głowy, gdy zmieniałem rozmiar terminala ze grafiką ASCII. Wyglądało to interesująco, więc postanowiłem podjąć wyzwanie.
Przypadki testowe:
Ponieważ pokazanie każdego kroku indywidualnie dla każdego przypadku testowego byłoby zbyt pracochłonne, przejrzę każdą odpowiedź, aby upewnić się, że jest poprawna. Upewnij się, że odpowiedź może obsłużyć przypadki testowe.
______ ______ __ __ __ ______ __ __ ______
/\ == \ /\ == \ /\ \ /\ "-.\ \ /\__ _\ /\ "-./ \ /\ ___\
\ \ _-/ \ \ __< \ \ \ \ \ \-. \ \/_/\ \/ \ \ \-./\ \ \ \ __\
\ \_\ \ \_\ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \ \_\ \ \_____\
\/_/ \/_/ /_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/
__/\__
\ /
__/\__/ \__/\__
\ /
/_ _\
\ /
__/\__ __/ \__ __/\__
\ / \ / \ /
__/\__/ \__/\__/ \__/\__/ \__/\__
Pyton 3,5 (
238233229225223222 bajtów)- Działa dobrze w terminalu Windows; nie jestem pewien co do innych platform, z powodu specyficznej dla systemu komendy os.system („cls”).
- Przekazany ciąg powinien być oznaczony \ n dla nowych linii, np .: „abc \ nd efgh \ n”
źródło
z=print
u góry, a następnie zmieniając wszystkie inne wystąpieniaprint()
naz()
.print
zrange
i zamiastrange(0,3)
użyciarange(3)
.sleep(0.5)
można przepisać jako zwykłysleep(.5)