আমাকে একটি খারাপ বিবর্ণ অ্যানিমেশন করুন ... দয়া করে


15

আপনার কাজটি হ'ল শিরোনামের বিবেচনার সাথেই বোঝানো হয়েছে, সত্যই আপনার জন্য একটি শব্দের একটি দ্বিতীয় বিবৃতিতে পরিণত করার একটি খারাপ বিবর্ণ অ্যানিমেশন।

ঠিক কি হল এই "ফেইড অ্যানিমেশন" আপনি জিজ্ঞাসা করতে পারেন?

দর্শনীয় (লাই খারাপ) বিবর্ণ অ্যানিমেশন তৈরি করতে, আপনি দুটি স্ট্রিং নেন যা কেবলমাত্র মুদ্রণযোগ্য ASCII অক্ষর ধারণ করে। আপনি আপনার প্রারম্ভিক স্ট্রিং (দুটির মধ্যে প্রথম) মুদ্রণ করে শুরু করুন। তারপরে, আপনি এলোমেলোভাবে মূল শব্দের একটি অক্ষর বাছাই করুন এবং আপনি যে শব্দটি সঞ্চারিত করতে চান সেই শব্দটিতে এটি সংশ্লিষ্ট চরিত্রে পরিবর্তন করুন। শব্দগুলি যখন অসম দৈর্ঘ্যের হয় তখন আপনাকে অবশ্যই স্পেস দিয়ে প্যাড করতে হবে।

সমস্ত অক্ষর পরিবর্তন না হওয়া পর্যন্ত আপনি এটি চালিয়ে যান, তবে আপনি নির্দিষ্ট সূচীতে একাধিকবার অক্ষরটি পরিবর্তন করবেন না । এখানে 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

আপনাকে অবশ্যই একটি ফাংশন বা সম্পূর্ণ প্রোগ্রাম লিখতে হবে যা একটি চিঠি পরিবর্তন করে এবং তারপরে এক সেকেন্ডের ইনক্রিমেন্টে নতুন স্ট্রিং প্রিন্ট করবে। ইনপুট ফর্ম্যাটটি আলগা তবে আউটপুট ফর্ম্যাটটি কঠোর।

এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড।

কিছু পরীক্ষার কেস (ফর্ম init -> final:):

Stringy -> Blingy
Banana -> Republic
United -> States
Make America -> Tissue box
I like walls -> I have small hands
Hello, -> world!

পাইথন 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


অজগর কোডটি বৈধ বলে আমি মনে করি না? কারণ আপনারা আপোষহীন মন্তব্য করেছেন?
কনর ও'ব্রায়েন

স্ট্রিং দৈর্ঘ্যের উপর কোনও বিধিনিষেধ?
তিতাস

@ কনরোও ব্রায়ান, ওহ হ্যাঁ .... ওফস: পি
ড্যানিয়েল

@ টিটাস, আপনার ভাষা হ্যান্ডেল করতে পারে এমন কিছু কিছু আমি অনুমান করতে পারি
ড্যানিয়েল

উত্তর:



5

এমএটিএল , 33 বাইট

cn2/XKZ@!Oyhg*XR"GcK:@mK:Eq+)D1Y.

এ ব্যবহার করে দেখুন MATL অনলাইন । আপনার পৃষ্ঠাটি রিফ্রেশ করতে হবে এবং যদি এটি কাজ না করে তবে আবার "রান" টিপুন।

বিকল্পভাবে, প্রতিটি নতুন স্ট্রিং প্রদর্শিত হওয়ার আগে এই সংস্করণটি ( 35 বাইট ) স্ক্রিনটি মুছে ফেলবে, যার ফলস্বরূপ আউটপুট "জায়গায় পরিবর্তিত হবে":


এটির কি এক সেকেন্ড বিরতি রয়েছে? এটি আমার ফোনে চলে না।
ড্যানিয়েল

@ ডপাপ হ্যাঁ, চূড়ান্তটি 1Y.লুপের মধ্যে বিরতি। এটি ক্রোম ব্যবহার করে আমার কম্পিউটার থেকে আমার জন্য কাজ করে
লুইস মেন্ডো

@ ডুপ্প আপনি কোন অপারেটিং সিস্টেম ব্যবহার করছেন?
Suever

@ স্যুভার, আইওএস 9.
ড্যানিয়েল

1
@ ডপঅ্যাপ আমরা এখনও কিছু বিষয় নিয়ে কাজ করছি যাতে আপনার আর কোনও সমস্যা আছে কিনা তা আমাদের জানান।
Suever

2

পার্ল, 131 + 4 ( -F -l) = 135 বাইট

@T=@F if!$i++}$T[$_]||=$",$F[$_]||=$"for 0..$#F,0..$#T;say@T;{$==rand@T;redo if$h{$=}++;$T[$=]=$F[$=];sleep 1;say@T;redo if++$v!=@T

চালানোর জন্য প্রয়োজন -Fএবং -lপতাকা, পাশাপাশি -M5.010(বা -E)। মনে রাখবেন যে আপনার পার্লের সংস্করণটি যদি কিছুটা পুরানো হয় তবে -anআপনার কমান্ড লাইনে আপনাকে যুক্ত করতে হবে (যা আমি এটি দেখানোর জন্য খুব নীচে যুক্ত করব, তবে এটির প্রয়োজন নেই)। এই ক্ষেত্রে :

$ cat fade.pl
@T=@F if!$i++}$T[$_]||=$",$F[$_]||=$"for 0..$#F,0..$#T;say@T;{$==rand@T;redo if$h{$=}++;$T[$=]=$F[$=];sleep 1;say@T;redo if++$v!=@T
$ perl -F -anl -M5.010 fade.pl <<< "Hey
Peeps"
Hey  
Pey  
Pee  
Pee s
Pee s
Peeps

আমি নিশ্চিত যে এটি আরও কম হতে পারে তবে আমি কীভাবে ... এখনও জানতে পারি না! তবুও, আমি এটি একটি খারাপ উত্তর বলে মনে করি না এবং আশা করি কেউ এটিকে সংক্ষিপ্ত করার জন্য অনুপ্রাণিত হবে (বা একেবারে আলাদা ধারণা আছে!)।



2

সি # 299 বাইট

void f(string a,string b){var m=Math.Max(a.Length,b.Length);var t=new Collections.Generic.HashSet<int>();while(t.Count<m)t.Add(new Random().Next()%m);var s=a.PadRight(m).ToCharArray();Console.WriteLine(s);foreach(var x in t){Threading.Thread.Sleep(1000);s[x]=b.PadRight(m)[x];Console.WriteLine(s);}}

Ungolfed

void f(string a, string b)
{
    var m = Math.Max(a.Length, b.Length);
    var t = new Collections.Generic.HashSet<int>();
    while(t.Count < m) t.Add(new Random().Next()%m);
    var s=a.PadRight(m).ToCharArray();

    Console.WriteLine(s);
    foreach (var x in t)
    {
        Threading.Thread.Sleep(1000);
        s[x] = b.PadRight(m)[x];
        Console.WriteLine(s);
    }
}

2

পার্ল, 109 108 99 বাইট

জন্য +3 অন্তর্ভুক্ত -n

চূড়ান্ত নিউলাইন ছাড়াই STDIN এ স্ট্রিং দিন

echo -n "Make -> Tissue box" | perl -M5.010 fade.pl

fade.pl:

#!/usr/bin/perl -n
/ -> /;$_=$`^$`^$'^$';{$==rand(y/\x00//)+sleep say+($`&~$_|$'&$_)=~y/\x00/ /r;s%(.*?\K\x00){$=}%\xff%&&redo}

প্রদর্শিত হিসাবে কাজ করে, তবে \xhhদাবি করা স্কোর পেতে আক্ষরিক অক্ষর দ্বারা প্রতিস্থাপন করুন ।

ব্যবহারের \Kএই পদ্ধতিটি আমার মনে হয় নতুন ...


অসাধারণ, বরাবরের মতো! এটি কীভাবে কাজ করে তা বোঝার জন্য আমাকে কিছুক্ষণ সময় লাগল! \Kসত্যিই দুর্দান্ত ব্যবহার । মনে রাখবেন যে \0আপনার কোডে দুটি রয়েছে পাশাপাশি \xffএটি যথাযথ অক্ষর দ্বারা প্রতিস্থাপন করা যেতে পারে, তাই বাইটস গণনাটি আসলে 108 হয় Also এছাড়াও, সম্ভবত আপনি এটিটি দেখেন নি তবে ইনপুট ফর্ম্যাটটি নিখরচায় রয়েছে তাই সম্ভবত সেখানে রয়েছে বিভাজক হিসাবে `-> than এর চেয়ে আরও শক্ততর কিছু।
দাদা

@ দাদা আহ ঠিক আছে। ধন্যবাদ। বিকাশের সময় আমি কখনই আক্ষরিক চরিত্রগুলি ব্যবহার করি না, তাই বাইট গণনাটি সামঞ্জস্য করার সময় জিনিসগুলি মিস করা সহজ। অন্য বিভাজক 3 টি বাইট বাড়িয়ে নিতে পারে তবে এটি একটি উদ্বেগজনক পরিবর্তন, তাই আমি কেবল এটি ছেড়ে দেব
টন হসপেল

হ্যাঁ অবশ্যই আমি আপনার সমস্ত সমাধানের বিবরণ দিচ্ছি না, তবে কেবলমাত্র আমি যখন সেগুলি পরীক্ষা করেছি এবং সে ক্ষেত্রে এটি আমাকে সেই 4 বাইটগুলি দেখতে পেয়েছিল যা আপনার গণনা করা উচিত নয়;)
দাদা


0

জাভা, 456 454 437 428 বাইট

import java.util.*;public class c{public static void main(String[]s)throws Exception{char[]a=s[0].toCharArray(),b=s[1].toCharArray();int l,j=0;if(a.length<b.length){l=b.length;a=Arrays.copyOf(a,l);}else{l=a.length;b=Arrays.copyOf(b,l);}Vector i=new Vector();for(;j<l;i.add(j++));System.out.println(s[0]);while(l>0){Thread.sleep(1000);j=(int)i.remove(new Random().nextInt(l--));a[j]=b[j];System.out.println(String.valueOf(a));}}}

Ungolfed:

import java.util.*;

public class c
{

public static void main(String[] s) throws Exception
{
    char[] a = s[0].toCharArray(), b = s[1].toCharArray();
    int l, j = 0;
    if (a.length < b.length)
    {
        l = b.length;
        a = Arrays.copyOf(a, l);
    }
    else
    {
        l = a.length;
        b = Arrays.copyOf(b, l);
    }

    Vector i = new Vector();

    for (; j < l; i.add(j++));

    System.out.println(s[0]);

    while (l > 0)
    {
        Thread.sleep(1000);
        j = (int) i.remove(new Random().nextInt(l--));
        a[j] = b[j];
        System.out.println(String.valueOf(a));
    }
}
}

সম্পাদনা করুন: CAD97 দ্বারা বিয়োগ 2 বাইট

সম্পাদনা করুন: কেভিন ক্রুইজসেনের বিয়োগ 17 বাইট (আকার ধারণের জন্য আমি jনতুন ভেরিয়েবল তৈরির পরিবর্তে পুনরায় ব্যবহার করে পরামর্শটি সামান্য পরিবর্তন করেছি x)

সম্পাদনা: বিয়োগ 9 বাইট


আপনার দুটি Arrays::copyOfকলে আপনার অপ্রয়োজনীয় সাদা স্থান রয়েছে
CAD97

@ CAD97 যেমন বলেছে, আপনি কিছু অপ্রয়োজনীয় শ্বেতস্পেস সরিয়ে ফেলতে পারেন; এছাড়াও অ্যারে: String[]sএবং char[]a। এছাড়াও, আপনি প্রথম লুপের জন্য গল্ফ করতে পারেন:for(;j<l;i.add(j++); ; আপনি অপসারণ করতে পারেন Random r=new Random();এবং এটি সরাসরি ব্যবহার করুন: new Random().nextInt(i.size()); এছাড়াও আপনি যোগ করতে পারেন ,xints এর লিস্টে, এবং যখন লুপ সুযোগ while((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}আর আমি অনুপস্থিত করছি গলফ সম্ভবত বেশি।
কেভিন ক্রুইজসেন

0

পিএইচপি, 123 121 বাইট

<?=$a=$argv[1];for($b=str_split(str_pad($argv[2],strlen($a)));$b;print"
$a"){$a[$i=array_rand($b)]=$b[$i];unset($b[$i]);}

ফাইল হিসাবে সংরক্ষণ করুন, php <filename> <string1> <string2>(বা php-cgi) দিয়ে চালিত করুন

ভাঙ্গন

<?=$a=$argv[1];                         // 0. print original
for(
    $b=str_split(                       // 2. split to array of single characers
        str_pad($argv[2],strlen($a))    // 1. pad 2nd argument to length of 1st argument
    );
    $b;                                 // 3. while $b has characters left
    print"\n$a"                         // 6. print altered string
){
    $a[$i=array_rand($b)]=$b[$i];       // 4. pick random index from $b, copy character to $a
    unset($b[$i]);                      // 5. remove character from $b
}

0

সিজেম, 44 বাইট

q~{_,@\Se]s}2*1$peemr{es{_es-zA3#<}g;~t_p}/;

ব্যাখ্যা:

q~                                            get input
  {_,@\Se]s}2*                                pad each string to the length of the other
              1$p                             print starting string
                 eemr{                   }/   for each randomly shuffled enum of target string
                      es{_es-zA3#<}g;         1 second waiting loop    
                                     ~t_p     replace one character and print new string
                                           ;  clear stack

বিলম্ব কেবল জাভা ইন্টারপ্রেটার ব্যবহার করে কাজ করে, অনলাইন দোভাষী হিসাবে নয়।

 java -jar cjam.jar badfade.cjam <<< '"banana" "republic"'

এটি অনলাইনে চেষ্টা করুন (দেরি 1 এমএসে সেট করুন)


0

জাভাস্ক্রিপ্ট (ES6) + এইচটিএমএল, 210 বাইট

s=>e=>{s=[...s],e=[...e],d=e[k="length"]-s[k],(d>0?s:e).push(..." ".repeat(d>0?d:-d)),a=[...e.keys()],u=_=>{O.value=s.join``,s[i=a.splice(Math.random()*a[k]|0,1)[0]]=e[i],i+1&&setTimeout(u,1e3)},u()}
<input id=O

কারি সিনট্যাক্স ব্যবহার করে বলা হয়েছে: f("from this")("to this")

পরিষ্কার করেছেন জেএস

s => e => {
    s = [...s],
    e = [...e],
    d = e[ k="length" ] - s[k],
    (d>0 ? s : e).push(..." ".repeat(d>0 ? d : -d)),
    a = [...e.keys()],
    u = _ => {
        O.value = s.join``,
        s[ i = a.splice(Math.random()*a[k]|0, 1)[0] ] = e[i],
        i+1 && setTimeout(u, 1e3)
    },
    u()
}

পরীক্ষার স্নিপেট

inputএখানে কাজ করার জন্য বন্ধনী বন্ধনী প্রয়োজন ।

f=
s=>e=>{s=[...s],e=[...e],d=e[k="length"]-s[k],(d>0?s:e).push(..." ".repeat(d>0?d:-d)),a=[...e.keys()],u=_=>{O.value=s.join``,s[i=a.splice(Math.random()*a[k]|0,1)[0]]=e[i],i+1&&setTimeout(u,1e3)},u()}
<style>*{font-family:Consolas;}</style>
Starting String: <input id="A" type="text"><br>&nbsp;
Ending String: <input id="B" type="text">
<button onclick="f(A.value)(B.value)">Run</button>
<br><br>

<input id=O>


-1

রুবি, 106 বাইট

->a,b{puts a=a.ljust(l=[a.size,b.size].max);b=b.ljust l
[*0...l].shuffle.map{|i|sleep 1;a[i]=b[i];puts a}}

এটি অনলাইন চেষ্টা করুন!

ওহ ঠিক আছে. ট্রাই ইট অনলাইন লিঙ্কে আর কোনও রিক রোলিং হচ্ছে না, যদি এটাই হ'ল ডাউনটি। যদি তা না হয় তবে দয়া করে আমাকে জানান যে আমি কী ভুল করছি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.