Votre tâche consiste à, comme le titre le suggère discrètement, faire une mauvaise animation de fondu d'un mot se transformant en un deuxième mot pour le vôtre.
Quelle est exactement cette "animation de fondu" que vous pouvez demander?
Pour créer une animation de fondu spectaculaire (vraiment mauvaise), vous prenez deux chaînes qui ne contiendront que des caractères ASCII imprimables. Vous commencez par imprimer votre chaîne de départ (la première des deux). Ensuite, vous choisissez au hasard un caractère dans le mot d'origine et le remplacez par le caractère correspondant dans le mot que vous souhaitez animer. Lorsque les mots sont de longueur inégale, vous devez les garnir d'espaces.
Vous continuez ainsi jusqu'à ce que tous les personnages aient été modifiés, mais vous ne changerez pas le personnage à un certain index plus d'une fois . Voici un exemple d'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
Vous devez écrire une fonction ou un programme complet qui modifie une lettre, puis imprime la nouvelle chaîne par incréments d'une seconde. Le format d'entrée est lâche, mais le format de sortie est strict.
C'est le code-golf , donc le code le plus court en octets l'emporte.
Quelques cas de test (formulaire:) init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Implémentation de référence dans 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
Réponses:
Pyth -
2524 octetsWill refactoriser.
Essayez-le en ligne ici .
la source
MATL , 33 octets
Essayez-le sur MATL Online . Vous devrez peut-être actualiser la page et appuyer à nouveau sur "Exécuter" si cela ne fonctionne pas.
Alternativement, cette version ( 35 octets ) supprime l'écran avant que chaque nouvelle chaîne ne soit affichée, ce qui a pour résultat que la sortie est "modifiée sur place":
la source
1Y.
est la pause dans la boucle. Cela fonctionne pour moi depuis mon ordinateur en utilisant ChromePerl, 131 + 4 (
-F -l
) = 135 octetsBesoins
-F
et-l
indicateurs à exécuter, ainsi que-M5.010
(ou-E
). Notez que si votre version de perl est un peu ancienne, vous devrez l'ajouter-an
sur votre ligne de commande (que j'ajouterai trop ci-dessous pour l'afficher, mais ce n'est pas nécessaire). Par exemple :Je suis sûr que cela pourrait être plus court, mais je n'ai pas pu savoir comment ... pour le moment! Pourtant, je ne pense pas que ce soit une mauvaise réponse, et j'espère que quelqu'un sera inspiré pour le raccourcir (ou avoir une idée totalement différente!).
la source
Python 2,
171 169 168163 163 octetsLes cas de test sont sur idéone
la source
C # 299 octets
Non golfé
la source
Perl,
10910899 octetsComprend +3 pour
-n
Donner des chaînes sur STDIN sans nouvelle ligne finale
fade.pl
:Fonctionne comme indiqué, mais remplacez-le
\xhh
par les caractères littéraux pour obtenir le score revendiqué.Cette façon d'utiliser
\K
est nouvelle je pense ...la source
\K
effet. Notez qu'il y en a deux\0
dans votre code et que\xff
ceux-ci peuvent être remplacés par les caractères littéraux correspondants, donc le nombre d'octets est en fait 108. De plus, vous ne l'avez peut-être pas vu, mais le format d'entrée est libre, donc il y a probablement quelque chose de plus que `->` comme séparateur.Python 3, 214 octets
Ideone it!
la source
Java,
456454437428 octetsNon golfé:
Modifier: moins 2 octets par CAD97
Edit: moins 17 octets par Kevin Cruijssen (j'ai légèrement modifié la suggestion en réutilisant
j
au lieu de créer une nouvelle variablex
pour contenir la taille)Modifier: moins 9 octets
la source
Arrays::copyOf
appelsString[]s
etchar[]a
. En outre, vous pouvez jouer au golf votre première boucle for:for(;j<l;i.add(j++);
; Vous pouvez le supprimerRandom r=new Random();
et l'utiliser directementnew Random().nextInt(i.size())
:; Vous pouvez également ajouter,x
à la liste des ints et tenter la boucle while.while((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
Et il y a probablement plus au golf que je manque.PHP,
123121 octetsenregistrer en tant que fichier, exécuter avec
php <filename> <string1> <string2>
(ouphp-cgi
)panne
la source
CJam, 44 octets
Explication:
Le délai ne fonctionne qu'en utilisant l'interpréteur Java, pas dans l'interpréteur en ligne.
Essayez-le en ligne (délai réglé sur 1 ms)
la source
JavaScript (ES6) + HTML, 210 octets
Appelé en utilisant la syntaxe de curry:
f("from this")("to this")
.JS nettoyé
Extrait de test
Nécessite un renfort de fermeture sur le
input
pour travailler ici.la source
Rubis, 106 octets
Essayez-le en ligne!
Ah très bien. Plus besoin de rouler dans le lien Try It Online, si c'est ce qui cause les downvotes. Sinon, faites-moi savoir ce que je fais mal
la source