Ihre Aufgabe ist es, wie der Titel diskret andeutet, aus einem Wort eine schlechte Fade-Animation zu machen, die sich in ein zweites Wort für Sie verwandelt.
Was genau ist diese "Fade-Animation", die Sie vielleicht fragen?
Um eine spektakuläre (ziemlich schlechte) Fade-Animation zu erstellen, verwenden Sie zwei Zeichenfolgen, die nur druckbare ASCII-Zeichen enthalten. Sie beginnen, indem Sie Ihre Startzeichenfolge (die erste der beiden) drucken. Anschließend wählen Sie zufällig ein Zeichen im ursprünglichen Wort aus und ändern es in das entsprechende Zeichen im Wort, zu dem Sie animieren möchten. Wenn die Wörter ungleich lang sind, müssen Sie sie mit Leerzeichen auffüllen.
Sie machen so weiter, bis alle Zeichen geändert wurden, aber Sie werden das Zeichen an einem bestimmten Index nicht mehr als einmal ändern . Hier ist ein Beispiel 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
Sie müssen eine Funktion oder ein vollständiges Programm schreiben, das einen Buchstaben ändert, und dann die neue Zeichenfolge in Schritten von einer Sekunde drucken. Das Eingabeformat ist locker, aber das Ausgabeformat ist streng.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
Einige Testfälle (Formular:) init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Referenzimplementierung in 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
Antworten:
Pyth -
2524 BytesWird umgestalten.
Probieren Sie es hier online aus .
quelle
MATL , 33 Bytes
Probieren Sie es bei MATL Online aus . Möglicherweise müssen Sie die Seite aktualisieren und erneut auf "Ausführen" klicken, wenn dies nicht funktioniert.
Alternativ löscht diese Version ( 35 Bytes ) den Bildschirm, bevor jeder neue String angezeigt wird, was dazu führt, dass die Ausgabe "an Ort und Stelle geändert" wird:
quelle
1Y.
ist die Pause innerhalb der Schleife. Es funktioniert für mich von meinem Computer mit ChromePerl, 131 + 4 (
-F -l
) = 135 ByteNeeds
-F
und-l
Flags laufen, sowie-M5.010
(oder-E
). Beachten Sie, dass Sie, wenn Ihre Version von Perl ein bisschen alt ist,-an
Ihre Befehlszeile hinzufügen müssen (die ich zu unten anfügen werde, um sie anzuzeigen, aber sie wird nicht benötigt). Zum Beispiel :Ich bin mir ziemlich sicher, dass dies kürzer sein könnte, aber ich konnte nicht herausfinden, wie ... noch! Trotzdem halte ich dies nicht für eine schlechte Antwort und hoffe, dass jemand dazu inspiriert wird, sie zu verkürzen (oder eine ganz andere Idee zu haben!).
quelle
Python 2,
171 169 168163 BytesTestfälle sind auf ideone
quelle
C # 299 Bytes
Ungolfed
quelle
Perl,
10910899 BytesBeinhaltet +3 für
-n
Gib Strings auf STDIN ohne letzte Newline
fade.pl
:Funktioniert wie abgebildet, wird jedoch
\xhh
durch die Buchstaben ersetzt, um die angeforderte Punktzahl zu erhalten.Diese Art der Nutzung
\K
ist meiner Meinung nach neu ...quelle
\K
Tat. Beachten Sie, dass\0
Ihr Code zwei enthält und\xff
dass diese durch die entsprechenden Literalzeichen ersetzt werden können, sodass die Anzahl der Bytes 108 beträgt. Vielleicht haben Sie es auch nicht gesehen, aber das Eingabeformat ist frei, also wahrscheinlich Etwas Sortierbareres als "->" als Trennzeichen.Python 3, 214 Bytes
Ideone es!
quelle
Java,
456454437428 BytesUngolfed:
Edit: minus 2 Byte von CAD97
Edit: minus 17 Byte von Kevin Cruijssen (Ich habe den Vorschlag leicht geändert, indem ich ihn wiederverwendete,
j
anstatt eine neue Variablex
zu erstellen , um die Größe zu halten)Edit: minus 9 Byte
quelle
Arrays::copyOf
AnrufenString[]s
undchar[]a
. Sie können auch Ihre erste For-Loop spielenfor(;j<l;i.add(j++);
:; Sie können entfernenRandom r=new Random();
und verwenden Sie es direkt:new Random().nextInt(i.size())
; Sie können auch,x
die Liste der Ints erweitern und die while-Schleife zuwhile((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
und es gibt wahrscheinlich mehr zu Golf, die ich vermisse.PHP,
123121 Bytesals Datei speichern, mit
php <filename> <string1> <string2>
(oderphp-cgi
) ausführenNervenzusammenbruch
quelle
CJam, 44 Bytes
Erläuterung:
Die Verzögerung funktioniert nur mit dem Java-Interpreter, nicht mit dem Online-Interpreter.
Online ausprobieren (Verzögerung auf 1 ms eingestellt)
quelle
JavaScript (ES6) + HTML, 210 Byte
Genannt Curry - Syntax:
f("from this")("to this")
.JS aufgeräumt
Testschnipsel
Erfordert eine schließende Klammer
input
, um hier zu arbeiten.quelle
Rubin, 106 Bytes
Probieren Sie es online!
Oh, alles klar. Kein Wackeln mehr im Try It Online-Link, wenn das die Ablehnung verursacht. Wenn nicht, lassen Sie mich bitte wissen, was ich falsch mache
quelle