আমার হ্যালোইন সজ্জায় আমাকে সহায়তা করুন


13

হ্যালোইনটি আমাদের উপরে রয়েছে এবং আমি এখনও আমার ঘরটি সাজাইনি, সুতরাং এই কাজটি করার জন্য আমার আপনার সহায়তা প্রয়োজন need

ইনপুট
ইনপুটটি 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¯)  / \ ​

প্রতিটি লাইনের শেষে ট্রেলিং স্পেসগুলি
outputচ্ছিকভাবে পুরো আউটপুট শেষে ট্রেলিং নতুন লাইনের অনুমতি দেওয়া হয়

জয়ের মানদণ্ড
এটি তাই সংক্ষিপ্ত উত্তর জিততে পারে


ইনপুট কি সর্বদা বৈধ, তাই না 9999?
কার্ল ন্যাপফ

@ কার্লনাপফ হ্যাঁ, ইনপুটটি সর্বদা বৈধ থাকবে
রোড

উত্তর:


4

জাভাস্ক্রিপ্ট (ES6), 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

হ্যাঁ। কেভিন ক্রুইজসেন এবং করভাস_192 এর জন্য যথেষ্ট উন্নত ধন্যবাদ thanks

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);}};

অদম্য সংস্করণ

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-) 
 _|_  
/[|]\ 
  |   
 / \

আপনি সম্পূর্ণ পদ্ধতির পরিবর্তে ল্যাম্বডা সংজ্ঞায়িত করে কিছু বাইট সংরক্ষণ করতে পারেন
করভাস_192

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) {; এবং আমি নিশ্চিত যে আরও অনেকগুলি গল্ফ করা যেতে পারে তবে আরও জটিল গল্ফিংয়ে যাওয়াটা একটু বেশিই। :)
কেভিন ক্রুইজসেন

কেভিন এবং করভাস: ধন্যবাদ, সময় পেলে আমি পরে আরও একবার যাব। আমি নিশ্চিত এটি 800 এর নিচে ফেলে দেওয়া যেতে পারে বিশেষত একটি ল্যাম্বডা দিয়ে।
dpa97

2

রুবি ২.৩.১, 7 777 752 বাইট

সম্পাদনা_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°)  / \         / \ 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.