নিজেকে বিয়ার গল্ফ করুন


26

আজ শুক্রবার! যার অর্থ বিয়ারের সময়!
দুঃখজনক হলেও, আজ আমরা এটি পান না করে গল্ফিং বিয়ার করব। :(

চ্যালেঞ্জ

একটি বিয়ার আউটপুট এবং এটি পান। আপনি যে পরিমাণ চুমুক গ্রহণ করেন তাতে আপনার আউটপুট পরিবর্তন হয়।

sips

আপনার প্রোগ্রামে একটি ইনপুট স্ট্রিং নেওয়া উচিত। এই স্ট্রিংটি সম্পূর্ণরূপে সংক্ষিপ্ত sipগুলি দ্বারা গঠিত হতে পারে ।
যদি ইনপুটটি খালি স্ট্রিং হয় তবে আপনার ফোম সহ একটি সম্পূর্ণ বিয়ার গ্লাস আউটপুট করা উচিত।

আপনি যত বেশি চুমুক গ্রহণ করবেন, আপনার বিয়ারের গ্লাসটি খালি হবে emp

আপনি যদি 0 টি চুমুক গ্রহণ করেন তবে আপনার বিয়ারটিতে এখনও ফেনা রয়েছে। এই ফোমের আউটপুট সবসময় একই থাকে (উদাহরণ দেখুন)।

যদি আপনি 1 চুমুক নেন, আপনার বিয়ার গ্লাসটি আউটপুট করা উচিত, তারপরে একটি নতুন লাইন এবং স্ট্রিং Yuck, foam.

আপনি যদি 1 বা আরও বেশি চুমুক গ্রহণ করেন তবে আপনার বিয়ারগ্লাসে আর ফেনা থাকা উচিত নয়, তবে আপনার কাচের শীর্ষটি প্রদর্শন করা উচিত। ফোম পান করা এক চুমুক হিসাবে গণনা করা হয়।

আপনি যদি 6 বা ততোধিক চুমুক নেন তবে আপনার খালি বিয়ার গ্লাস আউটপুট করা উচিত, তারপরে একটি নতুন লাইন এবং স্ট্রিং Burp

আপনি যে প্রতিটি চুমুক গ্রহণ করেন, আপনার বিয়ারের গ্লাসটি খালি হয়ে উঠতে হবে। কিভাবে পূর্ণ আপনার beerglass হয় বুদবুদ পরিমাণ উপর নির্ভর করে °( °আপনার বিয়ার)। ফোমের পরে আপনি যে পরিমাণ সিপ গ্রহণ করেন, তার জন্য বুদবুদগুলির একটি লাইন অপসারণ করা উচিত। বিয়ারের প্রতিটি লাইনে সর্বনিম্ন 1এবং সর্বাধিক 5বুদবুদ থাকতে পারে । এই বুদবুদগুলির অবস্থান 100% এলোমেলো হওয়া উচিত।

উদাহরণ

ইনপুট

empty input string, or no input at all

আউটপুট

  oo  o oo 
 oooooooooooo
o|  °     ° |\
 |     °    | \
 | °°    °  |} |
 |  °    °  | /
 |     °   °|/
 \__________/

ইনপুট

sip sip sip

আউটপুট

 ____________
 |          |\
 |          | \
 |     °    |} |
 |° °     ° | /
 | °    °   |/
 \__________/

ইনপুট

sip sip sip sip sip sip sip sip sip sip

আউটপুট

 ____________
 |          |\
 |          | \
 |          |} |
 |          | /
 |          |/
 \__________/
Burp

এই পেস্টবিনে ইনপুট এবং আউটপুটগুলির একটি তালিকা রয়েছে। মনে রাখবেন বিয়ারগ্লাসের বুদবুদগুলি এলোমেলো হওয়া উচিত!

স্কোরিং

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

শুভ মদ্যপান golfing!


আপনি °176 কোড পয়েন্ট সহ যে চরিত্রটি লক্ষ করতে পারেন
মার্টিন এন্ডার

2
আরও নির্দিষ্ট হতে ল্যাটিন -1 এবং ইউনিকোডে 176।
মেগো

1 এবং 6+ ব্যতীত ইনপুটগুলিতে একটি ট্রিলিং নিউলাইন কি গ্রহণযোগ্য?
ইটিএইচ প্রডাকশন

@ETH প্রোডাকশন হ্যাঁ। যখন ল্যাপটপে থাকবে তখন সম্পাদনা করবে
বাসড্রপ কম্বারবুবউবউব

1
মগ আউটপুট একই থাকা উচিত। প্রতিটি লাইনে বুদবুদগুলির পরিমাণ প্রতিটি রান পৃথক হওয়া উচিত। প্রতিটি লাইনে শুধুমাত্র একটি বুদ্বুদ, অথবা আপ 5. চ্যালেঞ্জের র্যান্ডম অংশ যে হতে পারে
Bassdrop Cumberwubwubwub

উত্তর:


9

জাপট , 189 বাইট

এটি সঠিকভাবে কাজ করার চেষ্টা করার সময় আমি প্রায় উন্মাদ হয়ে গিয়েছিলাম ...

U?S+'_pC +R:"  oo  o oo\n "+'opC +"\no")+"\\, \\,} |, /,/"q', £(V=(!Y«U?"|: |" +SpA +'|+X,(1+5*Mr)o mZ=>Ul <Y*4+4©(V=Vh2+A*Mr ,'° ),V)qR +"\n \\"+'_pA +'/+R+(Ul ¥3?"Yuck, foam.":Ug22 ?`B¨p:

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

(দ্রষ্টব্য: এই প্রোগ্রামটি জাপটের পুরানো সংস্করণের জন্য তৈরি করা হয়েছিল এবং বর্তমানে সর্বশেষতম সংস্করণে কাজ করে না this এটি পেতে, পুরানো সংস্করণটি ইউআরএল-তে নির্দিষ্ট করা আছে Unfortunately দুর্ভাগ্যক্রমে, এর অর্থ শীর্ষ ডান কোড বাক্সও রয়েছে কাজ করে না।)

এটি এখন পর্যন্ত আমি জাপটে সবচেয়ে দীর্ঘতম প্রোগ্রাম লিখেছি। এখানে একটি ভাঙ্গন রয়েছে:

পদক্ষেপ 1: বিয়ার মগের শীর্ষটি তৈরি করুন।

U?S+'_pC +R:"  oo  o oo\n "+'opC +"\no")

           // Implicit: U = input string
           // Begin the ASCII art with:
U?S+       //  If U is not an empty string, a space +
'_pC +R:   //   "_".repeat(12) + a newline.
:"..."+    //  Otherwise, this string +
'opC +     //   "o".repeat(12) +
"\no")     //   a newline and an "o".

যদি ইউ খালি স্ট্রিং হয় তবে এটি তৈরি করে:

  oo  o oo
 oooooooooooo
o

অন্যথায়, এটি তোলে:

 ____________

দ্বিতীয় ধাপ: মগের মাঝারি সারিগুলি তৈরি করুন।

+"\\, \\,} |, /,/"q', £(V=(!Y«U?"|: |" +SpA +'|+X,

+"..."    // Add to the previous string: this string,
q', £(    // split at commas, with each item X and its index Y mapped to:
V=(       //  Set variable V to the result of concatenating:
!Y«U?     //   If Y is 0 and U is an empty string,
"|: |"    //    "|"; otherwise, " |";
+SpA      //   10 spaces,
'|+X,     //   "|", and X.

পূর্ববর্তী স্ট্রিং প্লাসে এর ফলাফল:

 |          |\
 |          | \
 |          |} |
 |          | /
 |          |/

পদক্ষেপ 3: বুদ্বুদ যুক্ত করুন।

(1+5*Mr)o mZ=>Ul <Y*4+4©(V=Vh2+A*Mr ,'° ),V)

            // Note: We're still looping through the five rows at this point.
(1+5*Mr)    // Generate a random integer between 1 and 5.
o           // Create an array of this many integers, starting at 0.
mZ=>        // Map each item Z in this range to:
Ul <Y*4+4©  //  If the length of U is less than Y*4+4,
            //  (in other words, if there's less than Y+1 "sip"s)
(V=Vh   '°  //   Insert "°" at position
2+A*Mr      //    2 + random number between 0 and 9.
),V)qR      // Finally, return V, and join the five rows with newlines.

এই মুহুর্তে, মগটি এমন কিছু দেখায়:

 ____________
 |          |\
 |          | \
 |     °    |} |
 |° °     ° | /
 | °    °   |/

পদক্ষেপ 4: চূড়ান্ত সারি এবং alচ্ছিক পাঠ্য যুক্ত করুন।

+"\n \\"+'_pA +'/+R+(Ul ¥3?"Yuck, foam.":Ug22 ?`B¨p:

+"\n \\"    // Add a newline and " \".
+'_pA       // Add 10 "_"s.
+'/+R       // Add a slash and a newline.
+(Ul ¥3?    // If the length of U is 3 (i.e. 1 "sip"),
"..."       //  add the string "Yuck, foam.".
:Ug22 ?     // Otherwise, if U has a character at position 22 (six or more "sip"s),
`B¨p        //  decompress this string ("Burp") and add it.
:           // Otherwise, add nothing.

এখন সবকিছু আউটপুট প্রেরণে প্রস্তুত, যা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। আপনার যদি কোনও প্রশ্ন থাকে তবে নির্দ্বিধায় জিজ্ঞাসা করুন!


3 দিন কেটে গেছে। আরআইপি মস্তিষ্ক
বাসপ্রডোম্ব কম্বারউবউবউবুব

@ বাস আমার গতকাল এটি বেশিরভাগই লেখা ছিল, তবে এটি আমার মস্তিষ্কের মতো ছিল না যে আমার ব্রাউজারটি মারা গিয়েছিল;) আমি আজ এটি লিখব।
ETH প্রোডাকশনগুলি

আপনার মস্তিষ্ক এখনও কাজ করে চলেছে বলে আমি আনন্দিত এবং আমি এই <s> একত্রে </ s> কোডের সুন্দর টুকরোটির একটি ব্যাখ্যা দেখার অপেক্ষায়
রয়েছি

1
@ বাস ব্যাখ্যাটি প্রস্তুত :-)
ইটিএইচ প্রোডাকশনস

4

জাভাস্ক্রিপ্ট (ES6), 283 281 বাইট

s=>` `+(u=`_________`,(s=s&&s.split` `.length)?u+`___
 `:` oo  o oo
 oooooooooooo
o`)+(i=0,l=q=>`|`+[...u].map(_=>Math.random()>.8&i>=s&&b++<5?`°`:` `,b=0,i++).join``+(b|i<s?` `:`°`)+`|`+q+`
 `)`\\`+l` \\`+l`} |`+l` /`+l`/`+`\\`+u+`_/
`+(s&&s<2?`Yuck, foam.`:s>5?`Burp`:``)

ব্যাখ্যা

s=>
  ` `+(u=`_________`,        // u = 9 underscores
  (s=s&&s.split` `.length)   // s = number of sips
    ?u+`_
 `:` oo  o oo
 oooooooooooo
o`)                          // print glass top or foam

  // Print glass lines
  +(i=0,                     // i = line number
    l=q=>                    // l = print glass line
      `|`+[...u].map(_=>     // iterate 9 times
        Math.random()>.8     // should we put a bubble here?
        &i>=s                // has this line already been sipped?
        &&b++<5              // have we already placed 5 bubbles?
          ?`°`:` `,          // if not, place the bubble!
        b=0,                 // reset the number of placed bubbles
        i++                  // increment the line counter
      ).join``               // put the 9 spaces and bubbles together
      +(b|i<s?` `:`°`)       // place a bubble at 10 if none were placed
      +`|`+q+`
 `                           // print the suffix of this glass line
  )`\\`
  +l` \\`
  +l`} |`
  +l` /`
  +l`/`

  +`\\`+u+`_/
`                            // print the bottom of the glass
  +(s&&s<2?`Yuck, foam.`
    :s>5?`Burp`:``)          // print the message

পরীক্ষা

Input: <input type="text" id="sips" /><button onclick="result.innerHTML=(

s=>` `+(u=`_________`,(s=s&&s.split` `.length)?u+`___
 `:` oo  o oo
 oooooooooooo
o`)+(i=0,l=q=>`|`+[...u].map(_=>Math.random()>.8&i>=s&&b++<5?`°`:` `,b=0,i++).join``+(b|i<s?` `:`°`)+`|`+q+`
 `)`\\`+l` \\`+l`} |`+l` /`+l`/`+`\\`+u+`_/
`+(s&&s<2?`Yuck, foam.`:s>5?`Burp`:``)

)(sips.value)">Go</button><pre id="result"></pre>


1

পিএইচপি, 277 265 263 বাইট

ধরে নেওয়া 1-বাইট-লাইন ব্রেক। একটিতে 14এবং 17উইন্ডোতে যুক্ত করুন।

$r=str_pad(($i=$argc-1)?"":"  oo  o oo",16).str_pad("
 ",14,_o[!$i])."   ".($s="
 |          |")."\\  $s \\ $s} |$s / $s/
 \__________/
 ".($i<6?$i-1?"":"Yuck, foam.":burp)if(!$i){$r[34]=o;$i=1;}for(;$i++<6;)for($n=rand(1,5);$n--;)$r[17*$i+rand(2,11)]="°";echo$r;

সাথে চালাও -r। লাইন ব্রেকগুলি পলায়নের প্রয়োজন হতে পারে।

ভাঙ্গন

// draw beer glass
$r=
    // first line: empty or foam
    str_pad(($i=$argc-1)?"":"  oo  o oo",16)
    // second line: top or foam
    .str_pad("\n ",14,_o[!$i])
    // other lines: empty glass+bottom
    ."   ".($s="\n |          |")."\\  $s \\ $s} |$s / $s/\n \__________/\n"
    // lyrics
    .($i<6?$i-1?"":"Yuck, foam.":burp)
;

// add foam left to the glass
if(!$i){$r[34]=o;$i=1;}

// add bubbles
for(;$i++<6;)
    for($n=rand(1,5);$n--;)
        $r[17*$i+rand(2,11)]="°";

// output
echo$r;

হাই, সময়মতো আপনার প্রশ্নের উত্তর দিতে ব্যর্থ হওয়ার জন্য দুঃখিত তবে ফোমটি ঠিক করা উচিত। তবে এটি যদি আপনার বাইট গণনাতে উন্নতি করে তবে আমার ধারণা এটি এলোমেলো হতে পারে। পরিষ্কারভাবে উল্লেখ না করার জন্য আমার খারাপ, তাই এটি আপনার সুবিধার্থে ব্যবহার করুন
বাসড্রপ কম্বারবুবউবউব

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