Twoim zadaniem jest, jak dyskretnie sugeruje tytuł, wykonanie złej animacji zanikania jednego słowa, zmieniając się naprawdę w drugie.
Czym dokładnie jest ta „animacja zanikania”, o którą możesz zapytać?
Aby stworzyć spektakularną (kiepską) animację zanikania, bierzesz dwa ciągi znaków, które będą zawierały tylko znaki ASCII do wydrukowania. Zaczynasz od wydrukowania łańcucha początkowego (pierwszego z dwóch). Następnie losowo wybierasz znak w oryginalnym słowie i zmieniasz go na odpowiedni znak w słowie, który chcesz animować. Gdy słowa są nierównej długości, ty musi pad je spacjami.
Robisz to dalej, dopóki wszystkie postacie nie zostaną zmienione, ale nie zmienisz postaci pod pewnym indeksem więcej niż jeden raz . Oto przykład we / wy:
Hey -> Peeps
Hey # original string
Hey s # replace char at index 4
Hey s # replace char at index 1
Pey s # replace char at index 0
Pee s # replace char at index 2
Peeps # replace char at index 3
Musisz napisać funkcję lub pełny program, który zmienia literę, a następnie drukuje nowy ciąg co 1 sekundę. Format wejściowy jest luźny, ale format wyjściowy jest ścisły.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
Niektóre przypadki testowe (Form:) init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Odwołanie do implementacji w Python 2:
import random
import time
def F(c,f):
print c # before we do stuff
if len(c)>len(f):f+=" "*(len(c)-len(f)) # add padding part 1
if len(f)>len(c):c+=" "*(len(f)-len(c)) # add padding part 2
c, f = list(c), list(f)
ai = [i for i in range(len(c))] # a list for keeping track
while len(ai) > 0: # of available indices
time.sleep(1) # 1 second pause...
i = ai.pop(random.randint(0,len(ai)-1)) # get a random index and remove
c[i] = f[i] # it from the list
print ''.join(c) # print the new string
Odpowiedzi:
Pyth -
2524 bajtówBędzie refaktoryzować.
Wypróbuj online tutaj .
źródło
MATL , 33 bajty
Wypróbuj w MATL Online . Może być konieczne odświeżenie strony i ponowne naciśnięcie przycisku „Uruchom”, jeśli nie działa.
Alternatywnie ta wersja ( 35 bajtów ) usuwa ekran przed wyświetleniem każdego nowego ciągu, co powoduje, że dane wyjściowe są „modyfikowane na miejscu”:
źródło
1Y.
to pauza w pętli. Działa dla mnie z mojego komputera z ChromePerl, 131 + 4 (
-F -l
) = 135 bajtówPotrzebuje
-F
i-l
flagi do uruchomienia, a także-M5.010
(lub-E
). Zauważ, że jeśli twoja wersja perla jest nieco stara, musisz dodać ją-an
w linii poleceń (którą dodam zbyt poniżej, aby ją pokazać, ale nie jest potrzebna). Na przykład :Jestem pewien, że może to być krótsze, ale nie mogłem się dowiedzieć, jak ... jeszcze! Mimo to nie sądzę, że to zła odpowiedź i mam nadzieję, że ktoś zostanie zainspirowany, aby ją skrócić (lub mieć zupełnie inny pomysł!).
źródło
Python 2,
171 169 168163 bajtówPrzypadki testowe są na ideone
źródło
C # 299 bajtów
Nie golfił
źródło
Perl,
10910899 bajtówObejmuje +3 za
-n
Podaj ciągi znaków na STDIN bez końcowej nowej linii
fade.pl
:Działa tak, jak pokazano, ale należy zastąpić
\xhh
literalnymi znakami, aby uzyskać wynik.Ten sposób korzystania
\K
jest nowy, myślę ...źródło
\K
Rzeczywiście niezłe wykorzystanie . Zauważ, że\0
w twoim kodzie są dwa,\xff
które można zastąpić odpowiednimi literalnymi znakami, więc liczba bajtów wynosi w rzeczywistości 108. Może i nie widziałeś tego, ale format wejściowy jest darmowy, więc prawdopodobnie jest coś sortującego niż `->` jako separator.Python 3, 214 bajtów
Ideone to!
źródło
Java,
456454437428 bajtówNie golfowany:
Edycja: minus 2 bajty przez CAD97
Edycja: minus 17 bajtów Kevin Cruijssen (nieznacznie zmieniłem sugestię, ponownie wykorzystując
j
zamiast tworzyć nową zmiennąx
do przechowywania wielkości)Edycja: minus 9 bajtów
źródło
Arrays::copyOf
połączeniachString[]s
ichar[]a
. Ponadto, można golf Twoja pierwsza dla pętli:for(;j<l;i.add(j++);
; Możesz go usunąćRandom r=new Random();
i używać bezpośrednionew Random().nextInt(i.size())
:; Możesz także dodać,x
do listy ints i spróbować pętli while do.while((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
Prawdopodobnie brakuje mi więcej golfa.PHP,
123121 bajtówzapisz jako plik, uruchom za pomocą
php <filename> <string1> <string2>
(lubphp-cgi
)awaria
źródło
CJam, 44 bajty
Wyjaśnienie:
Opóźnienie działa tylko przy użyciu interpretera Java, a nie w tłumaczu online.
Wypróbuj online (opóźnienie ustawione na 1 ms)
źródło
JavaScript (ES6) + HTML, 210 bajtów
Wywoływany przy użyciu składni curry:
f("from this")("to this")
.Oczyszczono JS
Test Snippet
Wymaga zamknięcia klamry
input
do pracy tutaj.źródło
Rubinowy, 106 bajtów
Wypróbuj online!
Oh, dobrze. Nigdy więcej rikowania w łączu Try It Online, jeśli to właśnie powoduje negatywne opinie. Jeśli nie, daj mi znać, co robię źle
źródło