Tugas Anda adalah, seperti judulnya sarankan, buat animasi fade buruk dari satu kata menjadi kata kedua untuk Anda.
Apa sebenarnya adalah ini "fade animasi" Anda mungkin bertanya?
Untuk membuat animasi fade yang spektakuler (buruk), Anda mengambil dua string yang hanya akan berisi karakter ASCII yang dapat dicetak. Anda mulai dengan mencetak string awal Anda (yang pertama dari keduanya). Kemudian, Anda secara acak memilih karakter di kata aslinya dan mengubahnya ke karakter yang sesuai di kata yang ingin Anda animasikan. Ketika kata-kata memiliki panjang yang tidak sama, Anda harus memberi mereka spasi.
Anda terus melakukan ini sampai semua karakter telah diubah, tetapi Anda tidak akan mengubah karakter pada indeks tertentu lebih dari sekali . Berikut ini adalah contoh 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
Anda harus menulis fungsi atau program lengkap yang mengubah huruf dan kemudian mencetak string baru dengan penambahan satu detik. Format input longgar, tetapi format outputnya ketat.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Beberapa test case (Formulir:) init -> final
:
Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!
Implementasi referensi dalam 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
Jawaban:
Pyth -
2524 byteAkan refactor.
Cobalah online di sini .
sumber
MATL , 33 byte
Cobalah di MATL Online . Anda mungkin perlu me-refresh halaman dan tekan "Run" lagi jika itu tidak berhasil.
Atau, versi ini ( 35 byte ) menghapus layar sebelum setiap string baru ditampilkan, yang menghasilkan output yang "dimodifikasi di tempat":
sumber
1Y.
adalah jeda di dalam loop. Ini berfungsi untuk saya dari komputer menggunakan ChromePerl, 131 + 4 (
-F -l
) = 135 byteKebutuhan
-F
dan-l
bendera untuk dijalankan, serta-M5.010
(atau-E
). Perhatikan bahwa jika versi perl Anda agak lama, Anda perlu menambahkan-an
pada baris perintah Anda (yang saya akan tambahkan terlalu bawah untuk menunjukkannya, tetapi itu tidak diperlukan). Contohnya :Saya cukup yakin ini bisa lebih pendek, tetapi saya tidak bisa mengetahui caranya ... belum! Namun, saya tidak berpikir ini adalah jawaban yang buruk, dan mudah-mudahan seseorang akan terinspirasi untuk membuatnya lebih pendek (atau punya ide yang sama sekali berbeda!).
sumber
Python 2,
171 169 168163 byteKasus uji ada di ideone
sumber
C # 299 Bytes
Tidak disatukan
sumber
Perl,
10910899 byteTermasuk +3 untuk
-n
Berikan string pada STDIN tanpa baris terakhir
fade.pl
:Bekerja seperti yang ditunjukkan, tetapi ganti
\xhh
dengan karakter literal untuk mendapatkan skor yang diklaim.Cara menggunakan
\K
ini baru saya pikir ...sumber
\K
memang bagus. Perhatikan bahwa ada dua\0
dalam kode Anda dan juga\xff
yang dapat diganti oleh karakter literal yang sesuai, sehingga jumlah byte sebenarnya 108. Juga, mungkin Anda tidak melihatnya, tetapi format inputnya gratis, jadi mungkin ada penyortir sesuatu dari `->` sebagai pemisah.Python 3, 214 byte
Ide itu!
sumber
Java,
456454437428 byteTidak Disatukan:
Sunting: minus 2 byte oleh CAD97
Sunting: minus 17 byte oleh Kevin Cruijssen (Saya sedikit mengubah saran dengan menggunakan
j
alih-alih membuat variabel barux
untuk menampung ukuran)Sunting: minus 9 byte
sumber
Arrays::copyOf
panggilan AndaString[]s
danchar[]a
. Juga, Anda dapat golf pertama Anda untuk loop:for(;j<l;i.add(j++);
; Anda dapat menghapusRandom r=new Random();
dan menggunakannya secara langsungnew Random().nextInt(i.size())
:; Anda juga dapat menambahkan,x
ke daftar ints, dan kebetulan loop sementara kewhile((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}
Dan mungkin ada lebih banyak golf yang saya lewatkan.PHP,
123121 bytesimpan sebagai file, jalankan dengan
php <filename> <string1> <string2>
(atauphp-cgi
)kerusakan
sumber
CJam, 44 byte
Penjelasan:
Penundaan hanya berfungsi menggunakan interpreter Java, bukan dalam interpreter online.
Cobalah online (tunda disetel ke 1 ms)
sumber
JavaScript (ES6) + HTML, 210 byte
Disebut menggunakan sintaks kari:
f("from this")("to this")
.Membersihkan JS
Cuplikan Tes
Membutuhkan brace penutup
input
untuk bekerja di sini.sumber
Ruby, 106 byte
Cobalah online!
Oh baiklah. Tidak ada lagi rick yang bergulir di tautan Try It Online, jika itu yang menyebabkan downvotes. Jika tidak, tolong beri tahu saya apa yang saya lakukan salah
sumber