স্নোম্যান বোলিং


29

(সম্পর্কিত / অনুপ্রাণিত দ্বারা: একটি বোলিং গঠন আঁকুন )

শীতের মাসগুলিতে একটি মজাদার বিনোদন হ'ল একটি বড় বল (বাস্কেটবলের মতো) এবং ক্ষুদ্র তুষারমানের চিত্র ব্যবহার করে স্নোম্যান বোলিং করা। আসুন এটি ASCII এ পুনরায় তৈরি করুন।

প্রতিটি তুষারমানের নিম্নলিখিত সমন্বয়ে গঠিত:

(.,.)
( : )

এখানে দশ স্নোম্যান "পিন" এর সারিবদ্ধকরণ

(.,.) (.,.) (.,.) (.,.)
( : ) ( : ) ( : ) ( : )
   (.,.) (.,.) (.,.)
   ( : ) ( : ) ( : )
      (.,.) (.,.)
      ( : ) ( : )
         (.,.)
         ( : )

এই "পিনের" থেকে লেবেলযুক্ত 1করতে 10যেমন

7 8 9 10
 4 5 6
  2 3
   1

এতদূর, এতটা স্ট্যান্ডার্ড। তবে, সাধারণ বোলিংয়ের বিপরীতে, স্নোম্যান পিনগুলি কেবল সমতল এবং সম্পূর্ণ সরানো হয় না। এটি এমন কারও দ্বারা করা হয়েছে যা আঘাত করা কোনও পিনের তুষারটিকে ম্যানুয়ালি চ্যাপ্টা প্রয়োজন। _____উপরের সাদা অংশের সাথে একটি সমতল স্নোম্যান (পাঁচটি আন্ডারস্কোর) দ্বারা উপস্থাপিত হয় । এখানে 1 3 5 6 9 10পিনগুলি সমতল করার একটি উদাহরণ রয়েছে (যার অর্থ কেবল 2 4 7 8পিনগুলি রয়ে গেছে):

(.,.) (.,.)
( : ) ( : ) _____ _____
   (.,.)
   ( : ) _____ _____
      (.,.) 
      ( : ) _____

         _____

ইনপুট

  • A থেকে পূর্ণসংখ্যার তালিকা 1থেকে 10 কোনো সুবিধাজনক বিন্যাসে যা পিনের তাড়িত হয় এবং এইভাবে প্রয়োজন প্রতিনিধিত্বমূলক চ্যাপ্টা করা হবে।
  • প্রতিটি সংখ্যা কেবল একবারে উপস্থিত হবে, এবং সংখ্যাগুলি যে কোনও ক্রমে (সাজানো, সাজানো, সাজানো বাছাই) হতে পারে - আপনার পছন্দ যাই হোক না কেন আপনার কোডকে গল্ফিয়ার করে তোলে।
  • ইনপুটটিতে কমপক্ষে একটি পূর্ণসংখ্যার নিশ্চয়তা রয়েছে।

আউটপুট

তুষারমানের পিনগুলির ফলস্বরূপ ASCII শিল্পের উপস্থাপনা, সঠিক পিনগুলি সমতল করে।

বিধি

  • নেতৃস্থানীয় বা পিছনে থাকা নতুন লাইনের বা হোয়াইটস্পেসগুলি সমস্ত alচ্ছিক, যতক্ষণ না অক্ষরগুলি নিজেরাই সঠিকভাবে লাইন করে থাকে।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য। যদি কোনও ফাংশন হয় তবে আপনি আউটপুটটি মুদ্রণের পরিবর্তে ফিরিয়ে দিতে পারেন।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন পরীক্ষার পরিবেশের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে লোকেরা আপনার কোডটি চেষ্টা করতে পারে!
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

1 3 5 6 9 10

(.,.) (.,.)
( : ) ( : ) _____ _____
   (.,.)
   ( : ) _____ _____
      (.,.) 
      ( : ) _____

         _____

1 2 3

(.,.) (.,.) (.,.) (.,.)
( : ) ( : ) ( : ) ( : )
   (.,.) (.,.) (.,.)
   ( : ) ( : ) ( : )

      _____ _____

         _____

1 2 3 4 5 6 8 9 10

(.,.)
( : ) _____ _____ _____

   _____ _____ _____

      _____ _____

         _____

18
কোড গল্ফ ? কোড বোলিং নয় ?
চিহ্নিত করুন

আমরা কি 0 থেকে ইনডেক্স নম্বরগুলি নিতে পারি? এবং যদি সম্ভব হয় তবে 1 2 3 4 5 6 7 8 9 10 এর পরিবর্তে 0123456789 এর মতো ফাঁকা জায়গা ছাড়াই ইনপুট মানগুলি গ্রহণ করবেন?
টেলি পেলিকান

নিখুঁত: ডি এটি আমাকে> <>
টিল পেলিক্যান

4
আমি স্নোম্যান সমতল করার অনুমোদন করি না।

আমি নিজেকে স্নোম্যান হিসাবে চিহ্নিত করি এবং এই চ্যাপ্টা খুঁজে পাই।
কবিস্টেটর

উত্তর:


7

05 এ বি 1 ই , 45 44 বাইট

TF"(.,.)( : )"„ _5×{«4ä2ä¹N>åè})4L£Rvyø»}».c

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

ব্যাখ্যা

TF                                           # for N in [0 ... 9] do:
  "(.,.)( : )"                               # push string
              „ _                            # push the string " _"
                 5×                          # repeat it 5 times
                   {                         # sort
                    «                        # concatenate the strings
                     4ä                      # split the string in 4 parts
                       2ä                    # split the list in 2 parts
                         ¹N>åè               # if index+1 is in the input, push the first part
                                             # else push the second part
                              }              # end loop
                               )             # wrap stack in a list
                                4L£          # split list in parts of size 1,2,3,4
                                   R         # reverse list
                                    v        # for each list in list of lists
                                     yø      # transpose the list
                                       »     # join by spaces and newlines
                                        }    # end loop
                                         »   # join by newlines
                                          .c # centralize

46

স্নোম্যান 1.0.2 , 157 বাইট

(()("789:045600230001"4aG::48nSdU][:#:]eq]/nM;AsI[:"_____"wR["     "wR/aC;:"( : )"wR["(.,.)"wR/aC;bI;:"  "wRdUaC;bI\#**\;aMaZ:" "aJ1AfL;aM;aM1AfL"
"aJ1AfL*))

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

আমি যখন এই চ্যালেঞ্জটি দেখেছি তখন আমি জানতাম আমাকে কেবল নির্ভুল ভাষায় উত্তর দিতে হবে ...

এটি একটি সাবরুটাইন যা বর্তমান পেরমাভারের মাধ্যমে স্ট্রিং হিসাবে সংখ্যার অ্যারে এবং আউটপুটগুলিকে ইনপুট নেয়।

"পাঠযোগ্যতা" / নান্দনিকতার জন্য আবৃত

(()("789:045600230001"4aG::48nSdU][:#:]eq]/nM;AsI[
:"_____"wR["     "wR/aC;:"( : )"wR["(.,.)"wR/aC;bI
;:"  "wRdUaC;bI\#**\;aMaZ:" "aJ1AfL;aM;aM1AfL"
"aJ1AfL*))

কিছুটা অবহেলিত / মন্তব্য করা সংস্করণ:

}
1wR`
3wR`aC`
5wR`aC`
6wR`aC`
9wR`aC`
*

((
    )(
    "789:045600230001"  // pin layout data
    4aG                 // split into groups of 4; we need each row twice
    :                   // map over groups of 2 output lines
        :               // map over pins (or whitespace)
            48nS        // subtract ascii '0'
            dU][        // duplicate the pin; we need it in the if{}
            :           // if (pin) {
                #:]eq]/nM;AsI[:"_____"wR["     "wR/aC;:"( : )"wR["(.,.)"wR/aC;bI
            ;:          // } else {
                "  "wRdUaC
            ;bI         // }
            \#**\       // maneuver the permavars around to discard pin
        ;aM
        aZ:" "aJ1AfL;aM
    ;aM
    1AfL                // flatten (simulate a flatmap)
    "
"aJ                     // join on newline
    1AfL                // flatten again into a single string
    *
))

#sP

17
খুব সম্ভবত একমাত্র প্রসঙ্গ যা এটি "নিখুঁত ভাষা" হিসাবে পরিচিত হবে: P
DJMcMayhem

2
একজন তুষারমানব তার নিজের জাতকে হত্যা করছে ... তুমি দানব!
রুডলফ জেলিন

10

স্ট্যাকড , নন-কেপটিং, 118 বাইট

আমি deepmapএই চ্যালেঞ্জের পরে আরও কয়েকটি সংখ্যক বাগফিক্স যুক্ত করেছি এবং আরও কয়েকটি জিনিস যুক্ত করেছি । এখানে চেষ্টা করুন!

@a((7 8 9 10)(4 5 6)(2 3)(1)){e:('(.,.)
( : )' ' 
_'5 hrep)a e has#'  'hcat
}deepmap{e i:' 
 'i 3*hrep e,$hcat#/!LF+}map

Ungolfed

{ a :
  ((7 8 9 10) (4 5 6) (2 3) (1))
  { e :
    (
      '(.,.)' LF '( : )' + + 
      ' ' LF '_' + + 5 hrep
    ) @possible
    a e has @ind
    possible ind get @res
    '  ' @padding
    res padding hcat return
  } deepmap
  { e i:
    ' ' LF ' ' + + i 3 * hrep
    e ,
    $hcat insert!
    LF +
  } map
} @:bowl

(1 2 3 4 6 10) bowl out

আউটপুট:

(.,.) (.,.) (.,.)       
( : ) ( : ) ( : ) _____ 
         (.,.)       
   _____ ( : ) _____ 

      _____ _____ 

         _____ 

এই ভাষাটি দুর্দান্ত দেখাচ্ছে। উইকিতে ফিশার-ইয়েটসের উদাহরণটি সুন্দর।
জর্দান

@ জর্ডান আপনাকে অনেক ধন্যবাদ! তার অর্থ আমার কাছে অনেকটাই :)
কনর ও'ব্রায়েন

7

পাইথন 2, 248 243 241 226 224 223 221 210 206 200 177 বাইট

@ রডকে ধন্যবাদ দিয়ে -5

-15 আবার রড ধন্যবাদ

-1 রড থেকে আবার স্থান গণনা ব্যবহার করে

আরও লাইন এবং ইনডেন্টগুলির কারণে বেশি দীর্ঘ দেখায় তবে আশ্চর্যজনকভাবে 11 বাইট কম হয়।

আমি নিশ্চিত এটি 200 এর নিচে চলে যাবে ...

আমি ঠিকই ছিলাম তবে @ পিটু ১৯৯৮ থেকে 23 বাইট মূল্যমানের গুরুতর ইঙ্গিতগুলি ছাড়াই ছিলাম না। অনেক ধন্যবাদ!

i,z=input(),0;m=['']*10;n=m[:]
for x in range(11):m[x-1],n[x-1]=('(.,.)',' '*5,'( : )','_'*5)[x in i::2]
for y in 10,6,3,1:
 for q in m,n:print' '*3*z+' '.join(q[y-4+z:y])
 z+=1

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

পূর্ণসংখ্যার একটি তালিকা হিসাবে ইনপুট নেয়। 248 এ ওয়ে খুব বড় তবে এটি কাজ করে।



6

সি # 233 221 213 203 বাইট

পতিত পিনের তালিকা হিসাবে পদ্ধতিটি একটি int অ্যারে গ্রহণ করে

string S(int[]a){string o="",x=o,y=o,z=o;for(int i=10;i>0;){var c=a.Contains(i);x=(c?"      ":"(.,.) ")+x;y=(c?"_____ ":"( : ) ")+y;if(i==7|i<5&i--!=3){o+=$"{z}{x}\n{z}{y}\n";x=y="";z+="   ";}}return o;}

জড়ান

string S(int[]a){string o="",x=o,y=o,z=o;for(int i=10;i>0;)
{var c=a.Contains(i);x=(c?"      ":"(.,.) ")+x;y=(c?"_____ ":
"( : ) ")+y;if(i==7|i<5&i--!=3){o+=$"{z}{x}\n{z}{y}\n";x=y="";
z+="   ";}}return o;}

সম্প্রসারিত

string S(int[] a)
{
    string o = "", x = o, y = o, z= o;
    for (int i = 10; i > 0;)
    {
        var c = a.Contains(i);
        x = (c ? "      " : "(.,.) ") + x;
        y = (c ? "_____ " : "( : ) ") + y;

        if (i==7|i<5&i--!=3)
        {
            o += $"{z}{x}\n{z}{y}\n";
            x = y = "";
            z += "   ";
        }
    }
    return o;
}

ঘোস্ট, রাজনগুল এবং আউহমানের মন্তব্যে কয়েকটি বাইট ছুঁড়ে ফেলেছে।


2
পিপিসিজিতে আপনাকে স্বাগতম!
অ্যাডমবর্কবার্ক

চমৎকার! আপনি যদি i-- এর জন্য রাখেন এবং পরিবর্তিত new[]{7,4,2,1}.Contains(i--)হন তবে আপনি কয়েকটি বাইট (5?) বাঁচাতে পারবেনi<9&&i%3==1||i==2
ঘোস্ট

i==7||i<5&&i!=3
ঘোড়া

@ ধন্যবাদ ধন্যবাদ! নন-শর্টকার্কিট ওআরএস এবং এন্ড ব্যবহার করে এটি আরও কিছুটা কড়া নাড়াল এবং তারপরেও চূড়ান্ত i==7|i<5&i--!=3
রেফের সাথে কমছে

আপনি প্রতিস্থাপন var o="";var x=...করে কিছু বাইট সংরক্ষণ করতে পারেন string o="",x=""...
রাজনগুল

5

ব্যাচ, 262 বাইট

@echo off
for /l %%i in (1,1,10)do set s%%i=( : ) 
for %%i in (%*)do set s%%i=_____ 
set l=call:l 
%l%%s7%%s8%%s9%%s10%
%l%"   %s4%%s5%%s6%
%l%"      %s2%%s3%
%l%"         %s1%
exit/b
:l
set s=%~1
set s=%s:( : )=(.,.)%
echo(%s:_____=     %
echo(%~1

দ্রষ্টব্য: একটি স্পেসে লাইন 2, 3 এবং 4 টি শেষ হয় এবং প্রতিটি লাইনে একটি স্থান অনুসরণ করে out এগুলি 5 বাইট ব্যয়ে সরানো যেতে পারে। তুষারমানের নীচের অংশ হিসাবে s1 ... s10 পরিবর্তনশীল তৈরি করে কাজ করে, তারপরে কমান্ড-লাইন আর্গুমেন্ট হিসাবে সমেতকে সমতল করে তোলে। যথাযথ সারিগুলি দু'বার মুদ্রিত হয়, প্রথমবার নীচের অংশের সাথে প্রথম অংশটি স্থানান্তরিত করে। এটি শীর্ষ এবং নীচের অর্ধেক ভেরিয়েবলের দুটি সেট ব্যবহার করে 18 বাইট সংরক্ষণ করে।


1
এটি একটি চতুর উত্তর।
অ্যাডমবর্কবার্ক

4

জাভাস্ক্রিপ্ট, 154 149 বাইট

f=
a=>`6 7 8 9
_3 4 5
__1 2
___0
`[r='replace'](/\d|_/g,m=>++m?~a.indexOf(m)?'_____':'( : )':'   ')[r](/.*\n?/g,m=>m[r](/ : |_/g,s=>s=='_'?' ':'.,.')+m)


I.oninput=()=>O.innerHTML=f(JSON.parse(`[${I.value.match(/\d+/g)}]`))
I.oninput()
<input id=I value="1 3 5 6 9 10"><pre id=O>


3

পাইথ, 63 বাইট

j.ejm+**3k;j;db)_CcR[1 3 6).e:*T]btMQ@m*T]*5d,d\_kc2"(.,.)( : )

একটি প্রোগ্রাম যা পূর্ণসংখ্যার তালিকার ইনপুট নেয় এবং ফলাফল মুদ্রণ করে।

পরীক্ষা স্যুট

[ব্যাখ্যা পরে আসছে]


3

পাইথ, 51 বাইট

xxdকোডটিতে কিছু আন-প্রিন্টেবল রয়েছে, সুতরাং এখানে একটি হেক্সডাম্প রয়েছে।

00000000: 6a6d 2e5b 3233 5f6a 3b6d 4063 323f 7d6b  jm.[23_j;m@c2?}k
00000010: 5172 2235 2035 5f22 392e 2220 3b5b 8db2  Qr"5 5_"9." ;[..
00000020: 1778 a822 6472 4673 4d50 4253 2d34 2f64  .x."drFsMPBS-4/d
00000030: 323b 38                                  2;8

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

প্রিন্টেবলগুলি ছাড়াই, 52 বাইট

jm.[23_j;m@c2?}kQr"5 5_"9").,.() : ("drFsMPBS-4/d2;8

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


2

জাভাস্ক্রিপ্ট 178 169 বাইট

মূলত আমার সি # উত্তর থেকে একটি বন্দর।

সমতল "পিনগুলি" তালিকা হিসাবে একটি int অ্যারে নেয়;

f=a=>{o=x=y=z="";for(i=10;i>0;){c=a.includes(i);x=(c?"      ":"(.,.) ")+x;y=(c?"_____ ":"( : ) ")+y;if(i==7|i<5&i--!=3){o+=z+x+"\n"+z+y+"\n";x=y="";z+= "   ";}}return o}

জড়ান:

f=a=>{o=x=y=z="";for(i=10;i>0;){c=a.includes(i);
x=(c?"      ":"(.,.) ")+x;y=(c?"_____ ":"( : ) ")+y;
if(i==7|i<5&i--!=3){o+=z+x+"\n"+z+y+"\n";x=y="";
z+= "   ";}}return o}

প্রসারিত এবং ব্যাখ্যা:

// function f takes parameter a (an array of ints) 
f = a => {

    // four strings:
    // o: output
    // x: top row of snowmen
    // y: bottom row of snowmen
    // z: padding to indent the snowmen
    o = x = y = z = "";

    // loop from 10 to 1 (the pins)
    // remove the "afterthought" decrement - we can do that later
    for (i = 10; i > 0;) {

        // set the boolean c to whether the current pin has been flattened
        c = a.includes(i);

        // prefix x and y with the appropriate "sprite"
        // using a ternary if on c
        x = (c ? "      " : "(.,.) ") + x;
        y = (c ? "_____ " : "( : ) ") + y;

        // determine if we've reached the end of a row (i equals 7, 4, 2 or 1)
        // use non shortcircuit operators to save bytes and ensure we hit the final i, because...
        // we also decrement i here 
        // (we didn't do this in the for loop declaration to save a byte)
        if (i == 7 | i < 5 & i-- != 3) {

            // concatenate our rows x & y,
            // prefixing them with the padding z,
            // postfixing them with a newline
            o += z + x + "\n" + z + y + "\n";

            // reset x and y rows
            x = y = "";

            // increase our padding for next time
            z += "   ";
        }
    }

    // return our final string (no semicolon to save a byte)
    return o
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.