Su tarea es, como sugiere discretamente el título, hacer una animación de una palabra que se convierta en una segunda palabra para la suya.
¿Qué es exactamente esta "animación de desvanecimiento" que puede preguntar?
Para hacer una animación de desvanecimiento espectacular (muy mala), toma dos cadenas que contendrán solo caracteres ASCII imprimibles. Empiezas imprimiendo tu cadena inicial (la primera de las dos). Luego, elige aleatoriamente un carácter en la palabra original y lo cambia al carácter correspondiente en la palabra que desea animar. Cuando las palabras son de longitud desigual, se debe a rellenar con espacios.
Sigue haciendo esto hasta que se hayan cambiado todos los caracteres, pero no cambiará el carácter en un determinado índice más de una vez . Aquí hay un ejemplo 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
Debe escribir una función o un programa completo que cambie una letra y luego imprima la nueva cadena en incrementos de un segundo. El formato de entrada es suelto, pero el formato de salida es estricto.
Esto es código golf , por lo que gana el código más corto en bytes.
Algunos casos de prueba (Formulario init -> final
):
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Implementación de referencia en 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
Respuestas:
Pyth -
2524 bytesWill refactorizará.
Pruébelo en línea aquí .
fuente
MATL , 33 bytes
Pruébalo en MATL Online . Es posible que deba actualizar la página y presionar "Ejecutar" nuevamente si no funciona.
Alternativamente, esta versión ( 35 bytes ) elimina la pantalla antes de que se muestre cada nueva cadena, lo que da como resultado que la salida se "modifique en su lugar":
fuente
1Y.
es la pausa dentro del bucle. Me funciona desde mi computadora usando ChromePerl, 131 + 4 (
-F -l
) = 135 bytesNecesidades
-F
y-l
banderas para ejecutar, así como-M5.010
(o-E
). Tenga en cuenta que si su versión de perl es un poco antigua, deberá agregarla-an
a su línea de comando (que agregaré demasiado abajo para mostrarla, pero no es necesaria). Por ejemplo :Estoy bastante seguro de que esto podría ser más corto, pero no pude descubrir cómo ... ¡todavía! Aún así, no creo que esta sea una mala respuesta, y espero que alguien se inspire para hacerlo más corto (¡o tenga una idea totalmente diferente!).
fuente
Python 2,
171 169 168163 bytesLos casos de prueba están en ideona
fuente
C # 299 bytes
Sin golf
fuente
Perl,
10910899 bytesIncluye +3 para
-n
Dar cadenas en STDIN sin nueva línea final
fade.pl
:Funciona como se muestra, pero reemplaza
\xhh
por los caracteres literales para obtener la puntuación reclamada.Esta forma de usar
\K
es nueva, creo ...fuente
\K
hecho. Tenga en cuenta que hay dos\0
en su código y\xff
que pueden reemplazarse por los caracteres literales correspondientes, por lo que el recuento de bytes es en realidad 108. Además, tal vez no lo haya visto, pero el formato de entrada es libre, por lo que probablemente haya algo más clasificador que `->` como separador.Python 3, 214 bytes
Ideone it!
fuente
Java,
456454437428 bytesSin golf:
Editar: menos 2 bytes por CAD97
Edición: menos 17 bytes por Kevin Cruijssen (modifiqué ligeramente la sugerencia reutilizando en
j
lugar de crear una nueva variablex
para contener el tamaño)Editar: menos 9 bytes
fuente
Arrays::copyOf
llamadasString[]s
ychar[]a
. Además, se puede jugar golf su primer ciclo for:for(;j<l;i.add(j++);
; Puede eliminarloRandom r=new Random();
y usarlo directamentenew Random().nextInt(i.size())
:; También puede agregar,x
a la lista de entradas, y arriesgar el ciclo while awhile((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
Y probablemente hay más en el golf que me estoy perdiendo.PHP,
123121 bytesguardar como archivo, ejecutar con
php <filename> <string1> <string2>
(ophp-cgi
)Descompostura
fuente
CJam, 44 bytes
Explicación:
El retraso solo funciona utilizando el intérprete de Java, no en el intérprete en línea.
Pruébelo en línea (retraso establecido en 1 ms)
fuente
JavaScript (ES6) + HTML, 210 bytes
Llamado usando la sintaxis de curry:
f("from this")("to this")
.JS limpiado
Fragmento de prueba
Requiere cerrar el aparato ortopédico
input
para trabajar aquí.fuente
Ruby, 106 bytes
Pruébalo en línea!
Oh, todo bien. No más rick rodando en el enlace Pruébelo en línea, si eso es lo que está causando los votos negativos. Si no, por favor avíseme qué estoy haciendo mal
fuente