あなたの仕事は、タイトルが慎重に示唆しているように、1つの単語が本当にあなたのために2番目の単語に変わるフェードアニメーションを作成することです。
正確に何であるあなたが求めることができる。この「フェードアニメーションは」?
壮観な(かなり悪い)フェードアニメーションを作成するには、印刷可能なASCII文字のみを含む2つの文字列を使用します。最初の文字列(2つのうちの最初の文字列)を印刷することから始めます。次に、元の単語の文字をランダムに選択し、アニメートする単語の対応する文字に変更します。言葉の長さが等しくないとき、あなたはスペースでパッドにそれらをしなければなりません。
すべての文字が変更されるまでこれを続けますが、特定のインデックスの文字を複数回変更することはありません。以下にI / Oの例を示します。
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
文字を変更し、1秒単位で新しい文字列を出力する関数または完全なプログラムを作成する必要があります。入力形式は緩やかですが、出力形式は厳密です。
これはcode-golfなので、バイト単位の最短コードが優先されます。
いくつかのテストケース(フォーム:)init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
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