Sua tarefa é, como o título sugere discretamente, fazer uma animação desbotada de uma palavra se transformando em uma segunda palavra para a sua verdadeiramente.
O que exatamente é essa "animação fade" que você pode perguntar?
Para criar uma animação desbotada espetacular (péssima), use duas seqüências que conterão apenas caracteres ASCII imprimíveis. Você começa imprimindo sua sequência inicial (a primeira das duas). Em seguida, você escolhe aleatoriamente um caractere na palavra original e o altera para o caractere correspondente na palavra que deseja animar. Quando as palavras tiverem comprimento desigual, você deverá preenchê-las com espaços.
Você continua fazendo isso até que todos os caracteres tenham sido alterados, mas não o mudará em um determinado índice mais de uma vez . Aqui está um exemplo de E / S:
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
Você deve escrever uma função ou programa completo que altere uma letra e depois imprima a nova seqüência de caracteres em incrementos de um segundo. O formato de entrada está solto, mas o formato de saída é rígido.
Isso é código-golfe , então o código mais curto em bytes vence.
Alguns casos de teste (formulário:) init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Implementação de referência no 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
Respostas:
Pitão -
2524 bytesSerá refatorado.
Experimente online aqui .
fonte
MATL , 33 bytes
Experimente no MATL Online . Pode ser necessário atualizar a página e pressionar "Executar" novamente se não funcionar.
Como alternativa, esta versão ( 35 bytes ) exclui a tela antes que cada nova string seja exibida, o que resulta na saída "modificada no local":
fonte
1Y.
é a pausa dentro do loop. Funciona para mim no meu computador usando o ChromePerl, 131 + 4 (
-F -l
) = 135 bytesNecessidades
-F
e-l
sinalizadores para executar, bem como-M5.010
(ou-E
). Observe que, se a sua versão do perl for um pouco antiga, você precisará adicionar-an
na sua linha de comando (que eu adicionarei muito abaixo para mostrá-la, mas não é necessária). Por exemplo :Tenho certeza de que isso poderia ser mais curto, mas não consegui descobrir como ... ainda! Ainda assim, não acho que essa seja uma resposta ruim e espero que alguém seja inspirado a diminuí-la (ou ter uma idéia totalmente diferente!).
fonte
Python 2,
171 169 168 168163 bytesOs casos de teste são em ideone
fonte
C # 299 bytes
Ungolfed
fonte
Perl,
10910899 bytesInclui +3 para
-n
Dê strings no STDIN sem nova linha final
fade.pl
:Funciona como mostrado, mas substitua
\xhh
pelos caracteres literais para obter a pontuação reivindicada.Essa maneira de usar
\K
é nova, eu acho ...fonte
\K
fato. Observe que existem dois\0
no seu código e\xff
que podem ser substituídos pelos caracteres literais correspondentes, portanto, a contagem de bytes é na verdade 108. Além disso, talvez você não tenha visto, mas o formato de entrada é livre, portanto provavelmente há algo mais que `->` como separador.Python 3, 214 bytes
Ideone it!
fonte
Java,
456454437428 bytesUngolfed:
Editar: menos 2 bytes por CAD97
Edit: menos 17 bytes por Kevin Cruijssen (alterei ligeiramente a sugestão reutilizando em
j
vez de criar uma nova variávelx
para manter o tamanho)Editar: menos 9 bytes
fonte
Arrays::copyOf
chamadasString[]s
echar[]a
. Além disso, você pode golfe o seu primeiro loop for:for(;j<l;i.add(j++);
; Você pode removerRandom r=new Random();
e usá-lo diretamentenew Random().nextInt(i.size())
:; Você também pode adicionar,x
à lista de entradas e dar uma chance ao loop while parawhile((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
E provavelmente há mais no golfe que estou perdendo.PHP,
123121 bytessalve como arquivo, execute com
php <filename> <string1> <string2>
(ouphp-cgi
)demolir
fonte
CJam, 44 bytes
Explicação:
O atraso funciona apenas usando o interpretador Java, não no interpretador online.
Experimente online (atraso definido para 1 ms)
fonte
JavaScript (ES6) + HTML, 210 bytes
Chamado usando a sintaxe de curry:
f("from this")("to this")
.JS limpo
Snippet de teste
Requer chave de fechamento no
input
para trabalhar aqui.fonte
Ruby, 106 bytes
Experimente online!
Oh tudo bem. Não há mais rick rolling no link Try It Online, se é isso que está causando os votos negativos. Caso contrário, informe-me o que estou fazendo de errado
fonte