मेरी हैलोवीन सजावट में मेरी मदद करें


13

हैलोवीन हम पर है, और मैंने अभी तक अपने घर को सजाया नहीं है, इसलिए मुझे इस कार्य को करने के लिए आपकी सहायता की आवश्यकता है

इनपुट
इनपुट 4 अंकों की संख्या की एक सूची होगी, जहां प्रत्येक अंक सजावट के एक हिस्से का प्रतिनिधित्व करता है:

EMBU
||||
|||+-upper decoration
||+-bottom decoration
|+-mouth/nose
+-eyes

आंखें:
0 - °
1 - ¯
2 - -
3 - ^
4 -'

मुंह / नाक
0 - v
1 - w
2 - o
3 - _
4 --

नीचे की सजावट
0 - कुछ नहीं
1 - कंकाल
2 - कद्दू

ऊपरी सजावट
0 - कुछ भी नहीं
1 - फ़्लाइंग बैट
2 - रेस्टिंग बैट
3 - स्पाइडर

उत्पादन

कंकाल:
(EME)
​ _|_ ​
/[|]\
​ | ​ ​
​ / \ ​

कद्दू
​ , ​
(EME)

उड़ता हुआ बल्ला
​ ​
​ ^"^ ​

आराम करने वाला बल्ला
​ ​ () ​
​ ​ ´` ​

मकड़ी
​ | ​
​ .|. ​
​ :": ​

  • प्रत्येक सजावट में 5 वर्ण की चौड़ाई होती है
  • ऊपरी सजावट ऊपर से शुरू होती है
  • निचली सजावट नीचे से शुरू होती है
  • यदि मकड़ी कद्दू के ऊपर है या कोई नीचे की सजावट नहीं है, तो वेब की लंबाई 3 होगी, अगर यह कंकाल के ऊपर है, तो वेब की लंबाई 1 होगी
  • जब नीचे की सजावट होती है 0तो पहले 2 अंक अप्रासंगिक होते हैं
  • प्रत्येक सजावट के बीच एक खाली कॉलम होगा

उदाहरण
इनपुट
3123 ??02 1021 0310
आउटपुट

   |     ()             ​
​   |     ´`   ^"^       ​
​  .|.              (°_°)
​  :":               _|_ ​
​                   /[|]\
​   ,           ,     |  ​
​ (^w^)       (¯v¯)  / \ ​

प्रत्येक पंक्ति के अंत में अनुगामी रिक्त स्थान वैकल्पिक हैं
अनुगामी पूरे उत्पादन के अंत में नई रेखा की अनुमति है

मानदंड जीतना
यह इसलिए सबसे कम उत्तर जीतता है


क्या इनपुट हमेशा मान्य होता है, इसलिए नहीं 9999?
कार्ल नेप

@KarlNapf हां, इनपुट हमेशा मान्य होगा
रॉड

जवाबों:


4

जावास्क्रिप्ट (ईएस 6), 319 315 बाइट्स

let f =

s=>[0,1].map(i=>s.map(([A,B,C,D],x)=>+(z=i?D:C)&&[...'01/21/5015/41211/91/65'.split`/`[z-(i?C+D-13?1:-2:-2)]].map((n,y)=>a[(i?y:6-y)*4+x]=' '+('      ^"^   ()   ´`  / \\   |   .|. /[|]\\ _|_ ('+(e='°¯-^'[A])+'vwo_-'[B]+e+')  ,   :": ').substr(p+=n*5,5),p=0)),a=Array(28).fill`      `)&&a.join``.match(/.{24}/g).join`
`

console.log(f(["3123","0002","1021","0310"]));


5

जावा, 829 , 798

हाँ। केविन क्रूज़सेन और corvus_192 के लिए बहुत बेहतर धन्यवाद।

s->{String[]e=s.split(" ");char c[][]=new char[8][e.length*6],t,u,h='|';int y,x=2,i=0,j;for(String l:e){y=0;char[]p=l.toCharArray(),z=c[y];int a=p[0],b=p[1],f=p[2],d=p[3],k=x-1,m=x+1;t=a<49?'°':a<50?'¯':a<51?45:a<52?'^':39;u=(char)(b<50?b+70:b<51?111:b<52?95:39);if(d>50){z[x]=h;if(f!=49){y=2;c[1][x]=h;c[2][x]=h;}z=c[y];z[k]=46;z[m]=46;z=c[++y];z[k]=58;z[m]=58;z[x]=34;}if(d==50){z[x]=40;z[m]=41;c[++y][x]='´';c[y][m]=96;}if(d==49){z=c[++y];z[k]=94;z[x]=34;z[m]=94;}if(f>49){y=6;c[y][x]=44;}if(f>48){y=f>49?7:3;z=c[y++];z[x]=u;z[k]=t;z[m]=t;z[x-2]=40;z[x+2]=41;}if(f==49){z=c[y++];z[x]=h;z[k]=95;z[m]=95;z=c[y];z[x]=h;z[k]=91;z[m]=93;z[x-2]=47;c[y++][x+2]=92;c[y++][x]=h;c[y][k]=47;c[y][m]=92;}x+=6;}for(;i<8;i++){s="";for(j=0;j<c[0].length;){t=c[i][j++];s+=t<1?' ':t;}System.out.println(s);}};

ungolfed संस्करण

static void makeDecorations(String s){
    String[]e=s.split(" ");
    char c[][]=new char[8][e.length*6],t,u,h='|';
    int x=2,i=0,j,y;
    for(String l:e){
        y=0;
        char[]p=l.toCharArray(), z=c[y];
        int a=p[0],b=p[1],f=p[2],d=p[3],k=x-1,m=x+1;
        t=a<49?'°':a<50?'¯':a<51?45:a<52?'^':39;
        u=(char)(b<50?b+70:b<51?111:b<52?95:39);
        if(d>50){z[x]=h;
            if(f!=49){y=2;
                c[1][x]=h;
                c[2][x]=h;
            }
            z=c[y];
            z[k]=46;
            z[m]=46;
            z=c[++y];
            z[k]=58;
            z[m]=58;
            z[x]=34;
        }
        if(d==50){
            z[x]=40;
            z[m]=41;
            c[++y][x]='´';
            c[y][m]=96;
        }

        if(d==49){
            z=c[++y];
            z[k]=94;
            z[x]=34;
            z[m]=94;}
        if(f>49){
            y=6;
            c[y][x]=44;
        }
        if(f>48){
            y=f>49?7:3;
            z=c[y++];
            z[x]=u;
            z[k]=t;
            z[m]=t;
            z[x-2]=40;
            z[x+2]=41;
        }
        if(f==49){
            z=c[y++];
            z[x]=h;
            z[k]=95;
            z[m]=95;
            z=c[y];
            z[x]=h;
            z[k]=91;
            z[m]=93;
            z[x-2]=47;
            c[y++][x+2]=92;
            c[y++][x]=h;
            c[y][k]=47;
            c[y][m]=92;
        }
        x+=6;
    }
    for(;i<8;i++){
        s="";
        for(j=0;j<c[0].length;){
            t=c[i][j++];s+=t<1?32:t;
        }
        System.out.println(s);
    }
}

पसंदीदा सजावट (जो स्पष्ट रूप से मेरे कंसोल में अधिक बुराई दिखती है): टर्मिनेटर कंकाल

(-w-) 
 _|_  
/[|]\ 
  |   
 / \

आप एक पूर्ण विधि के बजाय एक
लंबोदा

1
उस शुरुआती "हाँ" ने मुझे हँसाया, मुझे पता नहीं क्यों।
मैजिक ऑक्टोपस यूरिन

+1! कुछ चीजें जो आप गोल्फ कर सकते हैं: char[][]c=new char[8][e.length*6];char t,u,h='|';-> char c[][]=new char[8][e.length*6],t,u,h='|';; '-'हो सकता है 45; '^'94 हो सकता है; अंतरिक्ष को यहां हटाया जा सकता है if(f>48) {:; और मुझे यकीन है कि बहुत अधिक गोल्फ हो सकता है, लेकिन अधिक जटिल गोल्फ में जाने के लिए यह बहुत अधिक है। :)
केविन क्रूज़सेन

केविन और corvus: धन्यवाद, मैं बाद में एक और ले जाऊंगा जब मेरे पास समय होगा। मुझे यकीन है कि यह 800 के तहत गिराया जा सकता है, विशेष रूप से एक मेमने के साथ।
13:97 पर dpa97

2

रूबी 2.3.1, 777 752 बाइट्स

Edit_0: मैं पूरी तरह से कुछ गोल्फ चर उपयोग और कुछ अन्य सामानों को याद कर रहा हूं।

@o=Array.new;$*.each_with_index do|j,i|a,e,n,b,u,q,r,z,y=0,j[0].to_i,j[1].to_i,j[2].to_i,j[3].to_i,['°','¯','-','^',"'"],['v','w','o','_',"-"],Array.new(7," "),"     ";g,h=[z,["(#{q[e]}#{r[n]}#{q[e]})","​ _|_ ​","/[|]\\","​  | ​ ​","​ / \\ ​"],["     ","​  ,  ","(#{q[e]}#{r[n]}#{q[e]})"]],[z,["​     ​","​ ^\"^ ​"],["​ ​ () ", "​ ​ ´` "],["​ .|. ​","​ :\": ​"]];2.times{h[3].unshift("  |  ​")}unless b==1;if b<1 && u<1;@o.push(z);elsif b<1;u<3 ? (a=5):(a=3);a.times{h[u].push(y)};@o.push(h[u]);elsif u<1;b==1 ? (a=2):(a=4);a.times{g[b].unshift(y)};@o.push(g[b]);elsif u>0;2.times{h[u].push(y)}if u<3&&b>1;@o.push(h[u]+g[b]);end;@o.push(z);end;@o.transpose.each do|v|;v.each do |w|;print w;end;print"\n";end

सजावट के चर के एन संख्या में ले जाता है। निश्चित रूप से कुछ और गोल्फिंग हैं जो इसके साथ किए जा सकते हैं। मैं रूबी की बहुत सारी चाल से परिचित नहीं हूँ, लेकिन यहाँ एक शॉट है! मैं इसे हल करने में सक्षम होने पर भी खुश हूं।

संयुक्त राष्ट्र के golfed

@output = Array.new
$*.each_with_index do |j, i|
  # output decoration combo
  s = 0

  # set up vars for decoration input
  e = j[0].to_i
  n = j[1].to_i
  b = j[2].to_i
  u = j[3].to_i

  # Setup decorations/misc
  eyes = ['°','¯','-','^',"'"]
  nose = ['v','w','o','_',"-"]
  nothing = Array.new(7, " ")
  skeleton = ["(#{eyes[e]}#{nose[n]}#{eyes[e]})", "​ _|_ ​", "/[|]\\", "​  | ​ ​", "​ / \\ ​"]
  pumpkin = ["     ", "​  ,  ", "(#{eyes[e]}#{nose[n]}#{eyes[e]})"]
  fbat = ["​     ​", "​ ^\"^ ​"]
  rbat = ["​ ​ () ", "​ ​ ´` "]
  spider = ["​  |  ​", "​ .|. ​", "​ :\": ​"]
  spider.unshift("  |  ​") unless b == 1
  a = "     "
  bot = [nothing, skeleton, pumpkin]
  top = [nothing, fbat, rbat, spider]

  # if bottom and upper are empty
  if b < 1 && u < 1
    @output.push(nothing)
  # if bottom is empty
  elsif b < 1
    u < 2 ? (s = 3) : (s = 5)
    s.times {top[u].push(a)}
    @output.push(top[u])
  # if upper is empty
  elsif u < 1
    # put in white space before the decorations
    b == 1 ? (s = 2) : (s = 5)
    s.times {bot[b].unshift(a)}
    @output.push(bot[b])
  # if there's an upper decoration
  elsif u > 0
    # put in the top deco
    2.times {top[u].push(a)} if u < 3 && b > 1
    @output.push(top[u] + bot[b])
  end
  # Input the empty column
  @output.push(nothing)
end

# Transpose the array of arrays so that
# instead of outputting each line of a single each decoration
# what's output is each line of each decoration.
# Example:
# [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
# [[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3], [4, 4, 4, 4, 4], [5, 5, 5, 5, 5]]
@output.transpose.each do |data|
   data.each do |data1|
     print data1
   end
   print "\n"
end

निम्नलिखित:

ruby deco_g.rb 0000 0001 0002 0003 1110 1111 1112 1113 2220 2221 2222 2223 3310 3312 3321 3323

इसे आउटपुट करता है:

          ()    |                 ()   .|.                ()    |           ()          |
   ^"^    ´`    |          ^"^    ´`   :":         ^"^    ´`    |           ´`   ^"^    |
               .|.  (¯w¯) (¯w¯) (¯w¯) (¯w¯)                    .|.  (^_^) (^_^)        .|.
               :":   _|_   _|_   _|_   _|_                     :":   _|_   _|_         :":
                    /[|]\ /[|]\ /[|]\ /[|]\                         /[|]\ /[|]\
                      |     |     |     |     ,     ,     ,     ,     |     |     ,     ,
                     / \   / \   / \   / \  (-o-) (-o-) (-o-) (-o-)  / \   / \  (^_^) (^_^)

1

पायथन 2, 331 बाइट्स ""

B,I,l,s=' '*5,'  |  ',' .|. ',' :": '
r=[]
for x in inputtt:m,n,b,u=(int(y)for y in x);e="°¯-^'"[m];H='('+e+"vwo_-"[n]+e+')';r+=[[[B,B,'  () ',[I,l,I][b]][u],[B,' ^"^ ','  ´` ',[I,s,I][b]][u],[[B,l][u==3],H][b==1],[[B,s][u==3],' _|_ '][b==1]]+[[B]*3,['/[|]\\',I,' / \ ',],[B,'  ,  ',H]][b]]
print'\n'.join(map(' '.join,zip(*r)))

स्ट्रिंग की सूची के रूप में इनपुट लेता है

-

उदाहरण

इनपुट: ["1212","4321","0123","1102","0020","1010","0101","2113"]

आउटपुट:

  ()          |     ()                     .|. 
  ´`   ^"^    |     ´`               ^"^   :": 
(¯o¯)        .|.              (¯v¯)       (-w-)
 _|_         :":               _|_         _|_ 
/[|]\                         /[|]\       /[|]\
  |     ,     ,           ,     |           |  
 / \  ('_') (°w°)       (°v°)  / \         / \ 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.