मुझे एक बुरा फीका एनीमेशन बनाओ ... कृपया


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

MATL , 33 बाइट्स

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

इसे MATL ऑनलाइन पर आज़माएं । यदि यह काम नहीं करता है, तो आपको पृष्ठ को ताज़ा करने और "रन" को फिर से दबाने की आवश्यकता हो सकती है।

वैकल्पिक रूप से, यह संस्करण ( 35 बाइट्स ) प्रत्येक नई स्ट्रिंग प्रदर्शित होने से पहले स्क्रीन को हटा देता है, जिसके परिणामस्वरूप आउटपुट को "जगह में संशोधित" किया जाता है:


क्या यह एक दूसरा ठहराव है? यह मेरे फोन पर नहीं चलता है।
डैनियल

@ डोप्प्प हां, अंतिम 1Y.लूप के भीतर ठहराव है। यह मेरे कंप्यूटर से क्रोम
लुइस मेंडो सेप

@Dappapp आप किस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं?
Suever

@Suever, iOS 9.
डैनियल

1
@ डोप्प हम अभी भी कुछ मुद्दों पर काम कर रहे हैं तो हमें बताएं कि क्या आपके पास कोई और है।
सूवर

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

पायथन 2, 171 169 168 163 बाइट्स

import time,random as r
def f(a,b):
 d=len(a)-len(b);a+=' '*-d;b+=' '*d;o=range(len(a));r.shuffle(o);print a
 for i in o:time.sleep(1);a=a[:i]+b[i]+a[i+1:];print a

टेस्ट केस आइडियन पर हैं


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

एसटीडीआईएन पर अंतिम नई रूपरेखा के बिना तार दें

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मेरे सोचने का तरीका नया है ...


हमेशा की तरह, Awsome! मुझे यह जानने में थोड़ा समय लगा कि यह कैसे काम करता है! \Kवास्तव में अच्छा उपयोग । ध्यान दें कि \0आपके कोड में दो हैं और साथ ही साथ \xffइसे संबंधित शाब्दिक वर्णों द्वारा प्रतिस्थापित किया जा सकता है, इसलिए बाइट्स की गिनती वास्तव में 108 है। इसके अलावा, शायद आपने इसे नहीं देखा है, लेकिन इनपुट प्रारूप मुफ़्त है, इसलिए संभवतः एक विभाजक के रूप में `->` की तुलना में कुछ सॉर्टर।
दादा

@ दादा आह ठीक है। धन्यवाद। विकसित होने के दौरान मैं कभी भी शाब्दिक वर्णों का उपयोग नहीं करता, इसलिए बाइट काउंट को समायोजित करते समय चीजों को याद रखना आसान होता है। एक और विभाजक वास्तव में 3 बाइट्स तक प्राप्त कर सकता है, लेकिन यह एक
निर्बाध

हाँ बिलकुल। मैं आपके सभी समाधानों को याद नहीं करता हूं, लेकिन केवल जब मैं उन पर प्रयोग करता हूं, और उस स्थिति में इसने मुझे उन 4 बाइट्स को देखा है जिन्हें आपको नहीं गिनना चाहिए था;)
दादा

1

पायथन 3, 214 बाइट्स

import time,random
o,f=list(input()),list(input())
F=len(f);O=len(o);o+=[" "]*(F-O);f+=[" "]*(O-F);p=-1;l=[p]
while o!=f:
 while p in l:p=random.randrange(max(F,O))
 l+=[p];o[p]=f[p];print(''.join(o));time.sleep(1)

Ideone यह!


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 ने कहा, आप कुछ अनावश्यक व्हाट्सएप हटा सकते हैं; सरणियों में भी: String[]sऔर char[]a। इसके अलावा, आप गोल्फ के लिए लूप अपने पहले कर सकते हैं: for(;j<l;i.add(j++);; आप Random r=new Random();इसे सीधे निकाल और उपयोग कर सकते हैं new Random().nextInt(i.size()):; आप भी ,xकिलों की सूची में जोड़ सकते हैं , और एंड-लूप टू while((x=i.size())>0){...j=(int)i.remove(new Random().nextInt(x));...}एंड को मौका दे सकते हैं और संभवत: गोल्फ के लिए और अधिक है कि मैं गायब हूं।
केविन क्रूज़सेन

0

PHP, 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

CJam, 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

जावास्क्रिप्ट (ईएस 6) + एचटीएमएल, 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}}

इसे ऑनलाइन आज़माएं!

अच्छा ठीक है। अगर यह डाउनवोट्स का कारण बन रहा है, तो ऑनलाइन प्रयास करें लिंक में कोई अधिक रिक रोलिंग नहीं। यदि नहीं, तो कृपया मुझे बताएं कि मैं क्या गलत कर रहा हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.