এলোমেলোভাবে এএসসিআইআই আর্ট কোয়েল্ট আঁকুন


31

এই চ্যালেঞ্জের জন্য, একটি এএসসিআইআই আর্ট কুইল্টটি 24 টি অক্ষরের প্রশস্ত এবং 18 টি লাইন লম্বা পাঠ্যের একটি ব্লক হবে =-<>/\, যেখানে অনুভূমিকভাবে এবং উল্লম্বভাবে প্রতিসাম্যযুক্ত একটি চরাঞ্চলের মতো প্যাটার্নের অক্ষর থাকবে ।

রাইটিং উদাহরণ:

========================
------------------------
//\\//\\\//\/\\///\\//\\
<<><<>>>>><<>><<<<<>><>>
/\\/\\\\/\/\/\/\////\//\
------------------------
/\/////\\///\\\//\\\\\/\
\///\/\/\\\\////\/\/\\\/
\///\/\/\\\\////\/\/\\\/
/\\\/\/\////\\\\/\/\///\
/\\\/\/\////\\\\/\/\///\
\/\\\\\//\\\///\\/////\/
------------------------
\//\////\/\/\/\/\\\\/\\/
<<><<>>>>><<>><<<<<>><>>
\\//\\///\\/\//\\\//\\//
------------------------
========================

সমস্ত quilts একই ফর্ম আছে:

  • তারা সর্বদা 18 বাই 24
  • শীর্ষ রেখা (লাইন 1) এবং নীচের লাইন (লাইন 18) =সমস্ত দিক জুড়ে।
  • 2, 6, 13 এবং 17 রেখাগুলি -পুরো পথ জুড়ে।
  • লাইনস 4 এবং 15 একই র্যান্ডম হয় অনুভূমিকভাবে প্রতিসম ধরনে <এবং >
  • অন্যান্য সমস্ত লাইন (3, 5, 7, 8, 9, 10, 11, 12, 14, 16) পূর্ণ /এবং \এলোমেলোভাবে এমনভাবে পূর্ণ হয় যাতে পুরো ভরাটটি অনুভূমিকভাবে এবং উল্লম্বভাবে প্রতিসম হয়

লক্ষ্য করুন যে লম্বালম্বিটি অনুভূমিক বা অনুভূমিকভাবে অর্ধেক ভাঁজ করার সময় অক্ষরের আকারগুলি ঠিক মেলে। অক্ষরগুলি নিজেরাই মিলে যাওয়ায় এটিকে বিভ্রান্ত করবেন না। উদাহরণস্বরূপ লাইন 3 এবং লাইন 16 অভিন্ন নয় , এগুলি উল্লম্ব আয়না চিত্র।

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা এলোমেলো ASCII আর্ট কোয়েল প্রিন্ট করে বা ফিরে আসবে।

অনেকগুলি হার্ডকোডযুক্ত লাইন এবং প্রতিসাম্যের কারণে একমাত্র আসল এলোমেলোতা 3, 4, 5, 7, 8, 9 লাইনে প্রথম 12 টি অক্ষর থেকে আসে:

  • লাইন 4 প্রথম 12 অক্ষরের অক্ষরের যে কোন দৈর্ঘ্যের 12 স্ট্রিং হতে করতে সক্ষম হওয়া উচিত <এবং >
  • 3, 5, 7, 8, 9 লাইনগুলিতে প্রথম 12 টি অক্ষর 12 দৈর্ঘ্যের অক্ষর /এবং \(একে অপরের থেকে স্বতন্ত্র) হতে সক্ষম হওয়া উচিত ।
  • এই এলোমেলো স্ট্রিংগুলি পরে পুরো ভরাট তৈরি করতে সেই অনুযায়ী মিরর করা হয়।

বাইটস মধ্যে সংক্ষিপ্ত উত্তর। টাইব্রেকার আগের পোস্ট।

আপনি সিউডোর্যান্ডম নম্বর জেনারেটর ব্যবহার করতে পারেন। (না, আপনি প্রমাণ করতে হবে যে প্রয়োজন হবে না সব 12 গৃহস্থালির কাজ স্ট্রিং <>বা /\সঙ্গে আপনি ভাষা এর PRNG উত্পন্ন করা যেতে পারে।)

আউটপুটে optionচ্ছিকভাবে একটি পিছনের নিউলাইন থাকতে পারে, তবে গোঁজার জন্য প্রয়োজনীয় স্থানগুলি ছাড়া কোনও পিছনে স্থান বা অন্যান্য অক্ষর নেই।


আমরা কি এলোমেলো বীজ হিসাবে ইনপুট নিতে পারি?
ধ্বংসাত্মক লেবু

উত্তর:


15

সিজেম, 61 60 58 55 54 52 51 বাইট

এসপি 3000 এবং অপ্টিমাইজারের সাহায্যে কিছুটা সংক্ষিপ্ত করে।

"=-/</-///"{C*1{"<\/>"%1$W%\_W%er}:F~+mrC<1FN}%s3F(

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

এই প্রতিসম এএসসিআইআই আর্ট চ্যালেঞ্জগুলির সাথে যথারীতি আমি একটি চতুর্ভুজ উত্পাদন করছি এবং তারপরে দুটি যথাযথ মিররিং অপারেশন করে পুরো জিনিসটিতে এটি প্রসারিত করব।

এই ব্যাখ্যাটির জন্য আমার ফাংশনটি দিয়ে শুরু করা উচিত F, যা আমি কোথাও কোথাও সংজ্ঞায়িত করছি, কারণ এটি তিনটি জায়গায় তিনটি পৃথক জিনিসের জন্য ব্যবহার করা হয়েছে:

{"<\/>"%1$W%\_W%er}:F

এটি স্ট্যাকের শীর্ষে একটি পূর্ণসংখ্যা এবং তার নীচে একটি স্ট্রিং আশা করে। এর উদ্দেশ্যটি হ'ল স্ট্রিংটি বিপরীত করা এবং কিছু অক্ষরও অদলবদল করা, মিররিংটি সঠিকভাবে পাওয়া। পূর্ণসংখ্যা পারেন হয় 1বা 3এবং ইঙ্গিত (কিনা 1) উভয় বন্ধনী এবং স্ল্যাশ আনা হবে অথবা ( 3) শুধুমাত্র বন্ধনী আনা হবে। এটা যেভাবে কাজ করে:

"<\/>"            "Push a string with all four relevant characters.";
      %           "% applied to a string and an integer N (in any order) selects every
                   Nth character, starting from the first. So with N = 1 this just
                   leaves the string unchanged, but with N = 3 it returns a string
                   containing only < and >.";
       1$         "Copy the string we want to mirror.";
         W%       "% also takes negative arguments. Giving it -1 reverses the string.";
           \_     "Swap the two strings and duplicate the <\/> or <> string.";
             W%   "Reverse that one. Due to the symmetry of this string, we'll now
                   have the characters to be swapped at corresponding indices.";
               er "Perform element-wise transliteration on the reversed input string
                   to complete the mirroring operation.";

এখন বাকী কোডের জন্য:

"=-/</-///"                            "This string encodes the 9 different line types.
                                        Note that for the /\ and <> lines we only use
                                        one of the characters. This idea is due to
                                        Sp3000. Thanks! :)";
           {                   }%      "Map this block onto the characters.";
            C*                         "Repeat the character 12 times, turning it into
                                        a string.";
              1{...}:F~                "Define and call F on the resulting string. The
                                        reversal doesn't do anything, but the character
                                        swapping creates strings containing both \/ and
                                        <>.";
                       +mr             "Add the two halves together and shuffle them.";
                          C<           "Truncate to 12 characters. We've now got our
                                        random half-lines.";
                            1F         "Call F again to mirror the half-line.";
                              N        "Push a newline.";
                                 s     "Join all those separate strings together by
                                        converting the array to a string.";
                                  3F   "Perform one more mirroring operation on the
                                        half-quilt, but this time only swap < and >.
                                        This yields the correct full quilt, except
                                        there are two newlines in the centre.";
                                    (  "This slices the leading newline off the second
                                        half and pushes it onto the stack.";

দুটি অংশ এবং সেই একক নতুন লাইনটি প্রোগ্রামের শেষে স্বয়ংক্রিয়ভাবে মুদ্রিত হবে।


12

পাইথন 3, 257 229 192 185 176 149 143 বাইট

from random import*
k,*L=80703,
while k:s=eval("''"+".join(sample('--==<>\/'[k%4*2:][:2],2))"*12);L=[s]+L+[s[::(-1)**k]];k//=4
*_,=map(print,L)

@ এক্সনোরের সাহায্যে, আমরা শেষ পর্যন্ত জেএসের সাথে ধরা পড়েছি!

নমুনা আউটপুট:

========================
------------------------
///////////\/\\\\\\\\\\\
>><<<>><<<><><>>><<>>><<
/\/\\/\/\\/\/\//\/\//\/\
------------------------
//\\////\\/\/\//\\\\//\\
/////\\\/\/\/\/\///\\\\\
/\\//\\/////\\\\\//\\//\
\//\\//\\\\\/////\\//\\/
\\\\\///\/\/\/\/\\\/////
\\//\\\\//\/\/\\////\\//
------------------------
\/\//\/\//\/\/\\/\/\\/\/
>><<<>><<<><><>>><<>>><<
\\\\\\\\\\\/\///////////
------------------------
========================

ব্যাখ্যা

(কিছুটা পুরানো, পরে আপডেট হবে)

"444046402"প্রতিটি অঙ্কটি প্রাসঙ্গিক 2-চর স্ট্রিংয়ের সূচক সূচকে উল্লেখ করে সারিগুলিকে এনকোড করে '--==\/<>'। প্রতিটি স্বতন্ত্র সারিটি দুটি চর পুনরাবৃত্তি করার মাধ্যমে অভ্যন্তরীণভাবে নির্মিত হয় (ব্যবহার করে sample(...,2), যেহেতু random.shuffleদুর্ভাগ্যক্রমে স্থানে রয়েছে) এবং স্ট্রিং যোগদানের মাধ্যমে।

চতুর্থ সারির জন্য সম্প্রসারণটি দেখতে কেমন হতে পারে তার একটি সরল উদাহরণ:

''.join(['<','>']).join(['>','<']).join(['>','<']).join(['<','>']).join(['>','<'])

যা ফল দেয় ><>><><<><:

               ''
    <>         .join(['<','>'])
   >  <        .join(['>','<'])
  >    <       .join(['>','<'])
 <      >      .join(['<','>'])
>        <     .join(['>','<'])

নবম / দশম সারি দিয়ে বাহ্যিকভাবে কাজ করা শুরু হওয়ার সাথে সাথে সামগ্রিক কুইল্টটি অভ্যন্তরীণভাবেও নির্মিত। এটি করার জন্য আমরা একটি খালি তালিকা দিয়ে শুরু করি L, যা আমরা সামনে যেতে যেতে সামনে এবং পিছনে সারি যুক্ত করি

L=[s]+L+[[s,s[::-1]][n<"5"]]

n<"5"শর্ত কিনা আমরা গঠিত একটি সারি আছে চেক করা হল ><যে ক্ষেত্রে আমরা ফিরে একটি অভিন্ন সারি সংযোজন, অন্যথায় তার বিপরীত।

পরিশেষে, মুদ্রণ ঘটে তাই *_,=মূল্যায়ন করার জন্য বাধ্য করা mapএবং এটি করার জন্য কেবল একটি ছোট উপায় print("\n".join(L))

দীর্ঘদিন ধরে আমার ফাংশন ছিল

g=lambda s:s.translate({60:62,62:60,92:47,47:92})

যা একটি স্ট্রিং এবং ধর্মান্তরিত লাগে /\><করার \/<>যথাক্রমে, কিন্তু আমি শেষ পর্যন্ত পরিত্রাণ পেতে পরিচালিত করেছি :)


অনুমানটি বলে যে এটি যতক্ষণ সম্ভব সমস্ত কার্পেট তৈরি করতে পারে , ঠিক আছে।

6

পাইথন 2, 300 বাইট

এই প্রোগ্রামটি ব্যবহার করে join, lambda, replace, sample, importএবং অন্যান্য ভার্বোজ ফাংশন, তাই এটি কোনও গল্ফ পুরষ্কার জিততে পারে না।

from random import*
f=lambda a,b,t:t.replace(a,'*').replace(b,a).replace('*',b)
k=lambda a:''.join(sample(a*12,12))
c='-'*24
e=k('<>')
h=e+f('<','>',e[::-1])
j=[d+f('/','\\',d[::-1])for d in[k('\\/')for i in'quilt']]
g=['='*24,c,j[0],h,j[1],c]+j[2:]
print'\n'.join(g+[f('/','\\',d)for d in g[::-1]])

অটো-গল্ফারটির আগে কোডটি ধরে রেখেছে:

from random import *

change = lambda a,b,t: t.replace(a,'*').replace(b,a).replace('*',b)
pick = lambda a: ''.join(sample(a*12, 12))

innerline = '-' * 24
line4h = pick('<>')
line4 = line4h + change('<', '>', line4h[::-1])
diag = [d + change('/', '\\', d[::-1]) for d in [pick('\\/') for i in 'quilt']]

quilt = ['='*24, innerline, diag[0], line4, diag[1], innerline] + diag[2:]
print '\n'.join(quilt + [change('/', '\\', d) for d in quilt[::-1]])

একটি নমুনা আউটপুট:

========================
------------------------
\\\\/\////\\//\\\\/\////
<><<>>>><><><><><<<<>><>
/\\\\////\\\///\\\\////\
------------------------
\\\\//\///\\//\\\/\\////
//\//\\\\/\/\/\////\\/\\
\/\\\\/\//\/\/\\/\////\/
/\////\/\\/\/\//\/\\\\/\
\\/\\////\/\/\/\\\\//\//
////\\/\\\//\\///\//\\\\
------------------------
\////\\\\///\\\////\\\\/
<><<>>>><><><><><<<<>><>
////\/\\\\//\\////\/\\\\
------------------------
========================

9
সংক্ষিপ্ততম নয়, আরে আরও 7 টি বাইটের সাথে আপনি নিজের নামের যোগ্য একটি প্রোগ্রাম পেয়েছেন : ডি
ক্যালভিনের

আমি আপনি কি কি আছে দেখতে।
লজিক নাইট

2
স্বয়ং-গল্ফ খেলোয়াড়? হাতে কেউ গল্ফ করার জন্য সময় পেলেন না?
লার্স এবার্ট

5
আপনি আমাদের হ্যাকার জানেন। যদি আমাকে একাধিকবার 3 মিনিটের টাস্ক করতে হয় তবে আমি এটিকে স্বয়ংক্রিয় করতে 10 ঘন্টা ব্যয় করব। আমি সমস্ত দক্ষতা ;-)
লজিক নাইট

6

এপিএল ( 53 58)

এটা না বেশ হিসাবে প্রতিসম যেমন আমি ভেবেছিলাম এটা দুর্ভাগ্যবশত। আমার জন্য 5 টি অক্ষর ব্যয় স্থির করুন এবং এখন আমি দৌড়াতে পেরেছি।

L←+,3-⌽⋄'==--/\<><'[↑(732451451260688⊤⍨18/8)+L{L?12⍴2}¨⍳9]

ব্যাখ্যা:

  • L←+,3-⌽: এল একটি ফাংশন যা তার যুক্তিটি 3 পরে আসে - তার যুক্তির বিপরীত
  • L{L?12⍴2}¨⍳9: [1,2] প্লাস তাদের বিপরীত থেকে 12 টি এলোমেলো মানগুলির 9 টি লাইন উত্পন্ন করুন, তারপরে সেই 9 টি লাইনের বিপরীত
  • 732451451260688⊤⍨18/8: তালিকা তৈরি করুন 0 2 4 6 4 2 4 4 4 4 4 4 2 4 _7_ 4 2 0(সেখানে অভিশাপের অসামান্যত্ব রয়েছে)
  • +: প্রতিটি লাইনের জন্য, প্রতিটি মানের সাথে সংশ্লিষ্ট সংখ্যা যুক্ত করুন
  • : ম্যাট্রিক্স হিসাবে ফর্ম্যাট
  • '==--/\<><'[... ]: ম্যাট্রিক্সের প্রতিটি সংখ্যার জন্য, সেই অবস্থানের স্ট্রিং থেকে অক্ষরটি নির্বাচন করুন

আউটপুট:

========================
------------------------
///////\\///\\\//\\\\\\\
<<><<><><<<<>>>><><>><>>
\\\\\//\/\\\///\/\\/////
------------------------
/\///\\/\/\/\/\/\//\\\/\
\////////\//\\/\\\\\\\\/
\\/\\\//\///\\\/\\///\//
//\///\\/\\\///\//\\\/\\
/\\\\\\\\/\\//\////////\
\/\\\//\/\/\/\/\/\\///\/
------------------------
/////\\/\///\\\/\//\\\\\
<<><<><><<<<>>>><><>><>>
\\\\\\\//\\\///\\///////
------------------------
========================

1
আমি +1 করেছি কারণ আপনার পোস্ট করা অ্যালগরিদমটি আকর্ষণীয় এবং মূল ছিল, তবে আমি কেবল লক্ষ্য করেছি যে <>উল্লম্ব আয়নাটিও তৈরি করার সময় আপনি যখন নিজের অদলবদল টেবিলটি ব্যবহার করেন তখন আপনার রেখাগুলি উল্লম্বভাবে প্রতিসম নয়। (আউটপুট বিটিডব্লিউ পোস্ট করার জন্য ধন্যবাদ, এপিএল খুব সহজ কাজ করে কিনা তা নির্ণয় করে; পি)
ফ্রাইআম দ্য এজম্যান

@ ফ্রাইআম দ্য এজিগম্যান: ছিঃ, তা লক্ষ্য করেনি। আমি সম্ভবত এখন পুরো অ্যালগরিদম স্ক্র্যাপ করতে হবে, যেহেতু একটি লাইন অন্যদের মতো নয়। ঠিক আছে, আমাকে কেবল নিম্নমানের চেয়ে বলার জন্য ধন্যবাদ।
মেরিনাস

@ ফ্রাইআম দ্য এজিগম্যান: ভাল, এটি ঠিক হয়ে গেছে ( <স্ট্রিংয়ের শেষে আরও একটি যোগ করে এবং দ্বিতীয় লাইনটিকে আরও একবার বাড়িয়ে, যার ফলে এটি দুটিবার অদলবদল করে)। এমনকি পুরো জিনিসটি স্ক্র্যাপ করতে হয়নি, যদিও এটি এখন আর জিতবে না। (সম্ভবত পরের বার আমি should't : পি আউটপুট পোস্ট)
সামুদ্রিক

2
এই সমাধানটি বেশ চালাক, আপনি +1 :) রাখতে পারবেন
FryAmTheEggman

@ ক্যালভিনের শখগুলি: একটি জিনিস ঠিক করুন, অন্যটি ভেঙে দিন। এখন এটি সত্যিই স্থির।
মেরিনাস

6

পিএইচপি, 408 , 407 , 402 , 387 , 379 বাইট

আমি কোনও ভাল গল্ফার নই, তবে এই সমস্যাটি মজাদার মনে হয়েছিল তাই আমি চেষ্টা করে দেখলাম।

<?$a=str_replace;$b=str_repeat;function a($l,$a,$b){while(strlen($s)<$l){$s.=rand(0,1)?$a:$b;}return$s;}$c=[$b('=',12),$b('-',12),a(12,'/','\\'),a(12,'<','>'),a(12,'/','\\'),$b('-',12)];while(count($c)<9){$c[]=a(12,'/','\\');}for($d=9;$d--;){$c[$d].=strrev($a(['/','<','\\','>',1,2],[1,2,'/','<','\\','>'],$c[$d]));$c[]=$a(['/','\\',1],[1,'/','\\'],$c[$d]);}echo implode("
",$c);

অবহেলিত কোড

<?php

    function randomString($length, $a, $b) {
        $string = '';
        while(strlen($string) < $length) {
            $string .= rand(0, 1) ? $a : $b;
        }
        return $string;
    }

    if(isset($argv[1])) {
        srand(intval($argv[1]));
    }

    $lines = [
        str_repeat('=', 12),
        str_repeat('-', 12),
        randomString(12, '/', '\\'),
        randomString(12, '<', '>'),
        randomString(12, '/', '\\'),
        str_repeat('-', 12)
    ];
    while(count($lines) < 9) {
        $lines[] = randomString(12, '/', '\\');
    }

    for($index = count($lines); $index--;) {
        $lines[$index] .= strrev(str_replace(['/', '<', '\\', '>', 1, 2], [1, 2, '/', '<', '\\', '>'], $lines[$index]));
        $lines[] = str_replace(['/', '\\', 1], [1, '/', '\\'], $lines[$index]);
    }

    echo implode("\n", $lines) . "\n";

?>

অবরুদ্ধ সংস্করণটিতে কিছুটা বোনাস রয়েছে: আপনি বীজের জন্য এটি একটি পূর্ণসংখ্যার পাস করতে পারেন rand()এবং প্রতিবার বীজের জন্য একই পয়েন্ট পেতে পারেন:

php quilt.php 48937

উদাহরণস্বরূপ, এই সুন্দর হাতে বোনা বোনা মধ্যে এই ফলাফলগুলি:

========================
------------------------
/\\\////\\\/\///\\\\///\
><>><>><<<><><>>><<><<><
/\\\///\//\/\/\\/\\\///\
------------------------
/\\/\\\/\\/\/\//\///\//\
/\\\\/\//\\/\//\\/\////\
\/\\/\/\////\\\\/\/\//\/
/\//\/\/\\\\////\/\/\\/\
\////\/\\//\/\\//\/\\\\/
\//\///\//\/\/\\/\\\/\\/
------------------------
\///\\\/\\/\/\//\///\\\/
><>><>><<<><><>>><<><<><
\///\\\\///\/\\\////\\\/
------------------------
========================

সম্পাদনা : দেখা যাচ্ছে আমার প্রথম সংস্করণটি একটি সঠিক গোঁড়া ফেরেনি। সুতরাং আমি এটি স্থির করেছি। যথেষ্ট মজার, ফিক্সটি আরও খাটো।


1
: আপনি গলফ এই অনেক কিছু করতে পারি না ['/','<','\\','>','a','b']দিয়ে প্রতিস্থাপিত হতে পারে ['/','<','\\','>',a,b](অনুপস্থিত কোট প্রায় নোটিশ aএবং b), @$sসঙ্গে প্রতিস্থাপিত হতে পারে $s, আপনি সংরক্ষণ করতে পারেন str_repeat('-',12)এবং str_repeat('=',12)গ্লোবাল ভেরিয়েবল / ধ্রুবক এ, for($b=8;$b>=0;$b--)সঙ্গে প্রতিস্থাপিত হতে পারে for($b=9;$b--;), str_repeatএবং পুনরাবৃত্তি ফাংশন দিয়ে সংক্ষিপ্ত করা যেতে পারে তাদের নামটি বিশ্বব্যাপী পরিবর্তনশীল (যেমন global$R,$V;$R=str_repeat;$V=strrev;$V($R('=',12)):) এবং নিউলাইনগুলি ( \n) একাধিক-লাইনের স্ট্রিং দ্বারা প্রতিস্থাপিত হতে পারে।
ইসমাইল মিগুয়েল

এখানে একটি সংক্ষিপ্ত সংস্করণ: পেস্টবিন.com /2 ট্যাবউকবিএ (373 বাইট)। আমি কয়েকটি টিপস পরিবর্তন করেছি: গ্লোবাল ভেরিয়েবলগুলি সরিয়ে নিয়েছে, strrevঅপরিবর্তিত থাকতে দেয় , 1 স্থান এবং কয়েকটি ছোট পরিবর্তন সরিয়েছি।
ইসমাইল মিগুয়েল

4
আমি মনে করি আপনার <>><><একই হতে লাইন 4 এবং লাইন 15 ( লাইনগুলি) প্রয়োজন need
লজিক নাইট

1
দুঃখিত, এখানে একটি 357-বাইট দীর্ঘ সমাধান: পেস্টবিন.com / টগএনডিজেএল আমি কিছু জিনিস হ্রাস করতে ভুলে গেছি।
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল আপনার সহায়তার জন্য ধন্যবাদ। আমি আপনার কিছু পরামর্শ নিয়েছি তবে এর কিছুটির ফলে একটি নোটিশ ফেলে দেওয়া হচ্ছে।
লার্স এবার্ট

4

জাভাস্ক্রিপ্ট (ES6) 169 195 201

6 বাইট সম্পাদনা করুন thx @ আন্ডারস্কোর। সাবধান, ব্যাককোটিসের ভিতরে থাকা নতুন লাইনটি তাৎপর্যপূর্ণ এবং গণনাযোগ্য।

সম্পাদনা 2 সরলীকৃত সারি বিল্ডিং, দরকার নেই reverseএবংconcat

F=(o='')=>[...z='/\\/-/<\\-='].map((c,i,_,y=[z,'\\/\\-\\>/-='],q=[for(_ of-z+z)Math.random(Q=k=>q.map(v=>r=y[v^!k][i]+r+y[v^k][i],r='')&&r+`
`)*2])=>o=Q()+o+Q(i!=5))&&o

পরীক্ষার জন্য স্নিপেট চালান (ফায়ারফক্সে)

F=(o='')=>[...z='/\\/-/<\\-='].map((c,i,_,y=[z,'\\/\\-\\>/-='],q=[for(_ of-z+z)Math.random(Q=k=>q.map(v=>r=y[v^!k][i]+r+y[v^k][i],r='')&&r+`
`)*2])=>o=Q()+o+Q(i!=5))&&o

Q.innerHTML=F()
<pre id=Q style='font-size:9px;line-height:9px'>


1
-6 বাইট: সংজ্ঞা কাছাকাছি বন্ধনী সরান z। কলের Qঅভ্যন্তরের সংজ্ঞাটি সরান Math.random'\n'নতুন লাইনের টেমপ্লেট স্ট্রিংয়ের সাথে প্রতিস্থাপন করুন । |0পূর্ণসংখ্যা কাস্টিংয়ের প্রয়োজন হয় না কারণ মানগুলি পরে xor-ed হবে।
nderscore

এর for(_ of-z+z)অর্থ কী?
ডেরেক 朕 會

@ ডেরেক আমাকে 12 বার পুনরাবৃত্তি করতে হবে এবং আমার কাছে সেরাটি হচ্ছে 9 টি চর স্ট্রিং। zসাংখ্যিক নয় তাই -z হল NaN (কোনও সংখ্যা নয়) NaN স্ট্রিংয়ে রূপান্তরিত হয় "NaN" এবং 3 টি + অক্ষর 12 হয় 12
edc65

4

রুবি, 162 155

আমি এটি পছন্দ করি কারণ এটি আমাকে স্ট্রিং লিটারাল এবং উভয় ক্ষেত্রে ব্যাকস্ল্যাশগুলি অপব্যবহার করতে শিখিয়েছে String#tr। কোডটি অন্যথায় ভয়াবহভাবে চালাক নয়, কেবল কমপ্যাক্ট।

a='/\\'
b='\\\/'
t=Array.new(9){x=''
12.times{x+=a[rand(2)]}
x+x.reverse.tr(a,b)}
t[0]=?=*24
t[1]=t[5]=?-*24
t[3].tr!a,'<>'
puts t,((t.reverse*'
').tr a,b)

2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্ট্যাক এক্সচেঞ্জে আপনাকে স্বাগতম! এখানে রুবি-নির্দিষ্ট কয়েকটি পরামর্শ দেওয়া হলো: আমি মনে করি না আপনি অব্যাহতি প্রয়োজন /মধ্যে aএবং b। প্রথম trসম্ভবত প্রথম বন্ধনী ছাড়াও করতে পারে। একক-চরিত্রের স্ট্রিংয়ের মতো '='লেখা যেতে পারে ?=। এবং .joinপ্রতিস্থাপন করা যেতে পারে *
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার স্বাগত এবং টিপস জন্য ধন্যবাদ! অক্ষর আক্ষরিক এবং joinপ্রতিশব্দ আমাকে 6 বাইট সংরক্ষণ করুন। আমি প্রথম বন্ধনীগুলি সরাতে পারি না x+x.reverse.tr(a,b)কারণ যদিও এর +চেয়ে বেশি অগ্রাধিকার লাগে ,। আমি প্রকৃতপক্ষে আমার স্ট্রিংগুলিতে কটাক্ষপাত থেকেও মুক্তি পাচ্ছি না - আমি প্রত্যেকে একটি করে ব্যাকস্ল্যাশ এড়াতে ব্যর্থ হচ্ছি । দ্বিতীয় \এর প্রয়োজন bকারণ উপায় tr, কাজ যদিও আমি এখন বুঝতে প্রথম \মধ্যে aপ্রযোজন নেই, তাই অন্য বাইট আছে।
এজাস্ট

3

পাইথ, 57 59 61

J"\<>/"K"\/"L+b_mXdK_Kbjbym+d_XdJ_JmsmOk12[\=\-K-JKK\-KKK

J"\<>/"K"\/"jbu++HGXHK_Km+d_XdJ_JmsmOk12[KKK\-K-JKK\-\=)Y

57 জ্যাকেট এই 57 বাইট সংস্করণে আসার জন্য @ জাকুবেকে অনেক ধন্যবাদ।

আলগোরিদম মার্টিনের সাথে খুব মিল। (সংশোধিত) আসার ব্যাখ্যা।

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

ব্যাখ্যা:

=G"\<>/"                            : Set G to be the string "\<>/"
K"\/"                               : Set K to be the string "\/"
Jm+d_XdG_GmsmOk12[\=\-K"<>"K\-KKK;  : Set J to be the top half of the carpet
                 [\=\-K"<>"K\-KKK;  : Make a list of possible chars for each row
          msmOk12                   : for each element of that list,
                                    : make a list of 12 randomly chosen characters
                                    : from it, then join them
Jm+d_XdG_G                          : for each element of that list,
                                    : make a new list with the old element,
                                    : and its horizontal reflection
jb+J_mXdK_KJ                        : Print the whole carpet
     mXdK_KJ                        : For each element of J make its vertical reflection

খুব সুন্দর. তোয়ালে ফেলে দেওয়া উচিত ছিল না। 1 গৃহস্থালির কাজ প্রতিস্থাপন সংরক্ষণ "<>"সঙ্গে-GK
Jakube

এবং অন্য একটি হয় J"\<>/"K"\/"L+b_mXdK_Kbjbym+d_XdJ_JmsmOk12[\=\-K-JKK\-KKKJ"\<>/"K"\/"jbu++HGXHK_Km+d_XdJ_JmsmOk12[KKK\-K-JKK\-\=)Y
লাম্বদা

@ জাকুব ধন্যবাদ! এই দুটিই বেশ চালাক অপটিমাইজেশন। আমি সত্যিই পছন্দ করি যাতে ল্যাম্বদা আপনাকে কীভাবে তালিকাটি শেষে দেয়।
FryAmTheEggman

2

জে, 56 54 বাইট

'=/\<>--></\'{~(-,|.)0,(3(2})8$5,3#1)+(,1-|.)"1?8 12$2

ব্যবহার:

   '=/\<>--></\'{~(-,|.)0,(3(2})8$5,3#1)+(,1-|.)"1?8 12$2
========================
------------------------
///\\\\/\///\\\/\////\\\
><<><><>><>><<><<><><>><
\\/\//\\/\//\\/\//\\/\//
------------------------
\/\/\//////\/\\\\\\/\/\/
/\/\\//\//\\//\\/\\//\/\
//\\\\/////\/\\\\\////\\
\\////\\\\\/\/////\\\\//
\/\//\\/\\//\\//\//\\/\/
/\/\/\\\\\\/\//////\/\/\
------------------------
//\/\\//\/\\//\/\\//\/\\
><<><><>><>><<><<><><>><
\\\////\/\\\///\/\\\\///
------------------------
========================

1 বাইট @FUZxxl ধন্যবাদ।

ব্যাখ্যা শীঘ্রই আসছে।

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


একটি অক্ষর সংরক্ষণ করুন: প্রতিস্থাপন 5 1 3 1 5 1 1 1সঙ্গে (3(2})8$5,3#1)
FUZxxl

@FUZxxl গ্রেট! আমি এক টন বিকল্প চেষ্টা করেছিলাম কিন্তু এটি পাইনি। (সিজেম রাতারাতি স্কোর থেকে পালিয়ে যায় তাই জে তাদের কাছে পৌঁছায় না।: পি)
এলোমেলো

1

পাইথন 295 287 227 বাইট

এটি দুর্দান্ত নয় তবে আমি এটি পোস্ট করব:

from random import*
m,d=[],dict(zip("\/<>=-","/\><=-"))
v=lambda w:[d[x]for x in w]
for e in '=-/>/-///':f=[choice([e,d[e]])for x in[0]*12];t=''.join(f+v(f[::-1]));print t;m+=''.join(e=='/'and v(t)or t),
print'\n'.join(m[::-1])

আপনি যদি একটি ব্যাখ্যা চান শুধু আমাকে জিজ্ঞাসা করুন।


@ এসপি 3000 এটি নির্দেশ করার জন্য ধন্যবাদ, আমি এটি ঠিক করেছি। লজ্জা এলো এমনকি আরও দীর্ঘ হলেও ...
Def

এখানে এমন একটি গল্ফ রয়েছে যা কোনও মন্তব্যে ফিট করার জন্য খুব দীর্ঘ। আপনি যদি রাখেন =এবং প্রবেশ -করেন তবে আপনি এটিকে আরও নামাতে সক্ষম হতে পারেন d
Sp3000

@ এসপি 3000 সমস্ত পরামর্শের জন্য অনেক ধন্যবাদ। এটি অনেকটা সুস্পষ্ট ছিল (স্পেসগুলি, বিপরীতগুলি সরিয়ে দেওয়া) কারণ আমি সর্ববৃহৎ গল্ফার (কোড এবং রেল উভয়ই) নই, তবে আমি কিছু নতুন অজগরও শিখেছি (তাই আবার ধন্যবাদ)। = এবং - ডিকটিতে অন্তর্ভুক্ত করে যদি বিবৃতিটি সরিয়ে ফেলা খুব ভাল ধারণা হয়ে যায়। পিএস আপনি কীভাবে কয়েকটি সংখ্যক কোডে একটি পুনরাবৃত্ত রঞ্জক তৈরি করা হয় তা ব্যাখ্যা করে মনে করবেন (অনুবাদ ডিক্রিপ্টিং ডিক্রিপ্টিং)
Def

1

জাভাস্ক্রিপ্ট ( ES7 খসড়া ) 174 168 146

@ Edc65 থেকে নেওয়া কিছু অনুপ্রেরণা

সম্পাদনা: সারি সজ্জায় বিল্ডিং অনুকূল করতে কিছু ধারণার জন্য edc65 ধন্যবাদ to

F=(o='')=>[for(i of'555357531')(z=[for(_ of c='==--/\\<>golf')Math.random(r=x=>z.reduce((s,y)=>c[w=i^y^x]+s+c[w^1],'')+`
`)*2],o=r()+o+r(i<7))]&&o

বিক্ষোভ: ( শুধুমাত্র ফায়ারফক্স )

F=(o='')=>[for(i of'555357531')(z=[for(_ of c='==--/\\<>golf')Math.random(r=x=>z.reduce((s,y)=>c[w=i^y^x]+s+c[w^1],'')+`
`)*2],o=r()+o+r(i<7))]&&o

document.write('<pre>' + F() + '</pre>');


মন্তব্য করেছে:

// define function, initialize output to ''
F = (o = '') =>
    // loop through character indexes of first 9 lines
    [
        for (i of '555357531')(
            // build array of 12 random 0/1's, initialize character list
            z = [
                for (_ of c = '==--/\\<>golf')
                    Math.random(
                        // define function for generating lines
                        // if x is true, opposite line is generated
                        r = x =>
                            z.reduce(
                                (s, y) => 
                                    c[w = i ^ y ^ x] + s + c[w ^ 1],
                                ''
                            ) + `\n`
                    ) * 2
            ],
            // build new lines and wrap output in them
            // x true in the second line for indexes < 7 (not character '>')
            o = r() + o + r(i < 7)
        )
    ]
    // return output
    && o

1
আমার সম্পাদনা দেখুন, এটি আপনার সমাধানের জন্যও ভাল
edc65

@ edc65 সুন্দর ধারণা! আমি এখন অনুরূপ কিছু বাস্তবায়ন করেছি।
nderscore

0

ফেরো 4, 236

|s i f v h|s:='====----/\/\/<><<>'.f:=[:c|s at:(s indexOf:c)+i].v:=#(),'=-/</-///'collect:[:c|h:=(String new:12)collect:[:x|i:=2atRandom.f value:c].i:=1.h,(h reverse collect:f)].i:=3.String cr join:v,(v reverse collect:[:k|k collect:f])

বা সাধারণত ফর্ম্যাট করা:

|s i f v h|
s:='====----/\/\/<><<>'.
f:=[:c|s at:(s indexOf:c)+i].
v:=#() , '=-/</-///'
  collect:[:c|
    h:=(String new:12)collect:[:x|i:=2atRandom.f value:c].
    i:=1.
    h,(h reverse collect:f)].
i:=3.
String cr join:v,(v reverse collect:[:k|k collect:f])

ব্যাখ্যা:

অক্ষরের s:='====----/\/\/<><<>'সাথে একসাথে স্ট্রিংগুলি f:=[:c|s at:(s indexOf:c)+i]অক্ষরগুলি টস করার জন্য এবং নিদর্শনগুলি উল্টানোর জন্য উভয়ই এখানে ...

  • I = 1 এর জন্য, এটি অনুভূমিক বিপরীত সম্পাদন করে ( /<-> \, <<-> >)।

  • I = 3 এর জন্য, এটি উল্লম্ব বিপরীত সম্পাদন করে ( /<-> \)

  • I = 1 বা 2 atRandom জন্য, এটি মধ্যে শিরসঁচালন /বা \, <বা>

'=-/</-///'অক্ষরের ধরণটি এনকোড করে যা 9 প্রথম লাইনের জন্য cব্লককে ফিড করবে f

#() , '=-/</-///' স্ট্রিংটিকে অ্যারেতে রূপান্তর করার জন্য এবং এভাবে অ্যারেতে সংগ্রহ করার জন্য একটি সূচনা কৌশল।

অনুভূমিক / উল্লম্ব প্রতিসাম্য প্রয়োগ করার পরে বাকীটি সরল কনটেনটেশন।

========================
------------------------
\\/\/\\\\/\/\/\////\/\//
>>>><><><>><><<><><><<<<
\/\/\//\///\/\\\/\\/\/\/
------------------------
/\//\/\/////\\\\\/\/\\/\
\\//\//\\\/\/\///\\/\\//
////\\/\/\//\\/\/\//\\\\
\\\\//\/\/\\//\/\/\\////
//\\/\\///\/\/\\\//\//\\
\/\\/\/\\\\\/////\/\//\/
------------------------
/\/\/\\/\\\/\///\//\/\/\
>>>><><><>><><<><><><<<<
//\/\////\/\/\/\\\\/\/\\
------------------------
========================

0

Squeak 4.X, 247

|r s h m n p|s:='==--/\<>'.r:=(1<<108)atRandom.h:=''.m:=0.(16to:0by:-2),(0to:16by:2)do:[:i|n:=3bitAnd:28266>>i.p:=0.(11to:0by:-1),(0to:11)do:[:j|h:=h,(s at:n*2+1+(r-1>>(6*i+j)+(101>>(3-n*4+m+p))bitAnd:1)).j=0and:[p:=1]].i=0and:[m:=2].h:=h,#[13]].h

বা বিন্যাসিত:

|r s h m n p|
s:='==--/\<>'.
r:=(1<<108)atRandom.
h:=''.
m:=0.
(16to:0by:-2),(0to:16by:2) do:[:i|
  n:=3 bitAnd: 28266>>i.
  p:=0.
  (11to:0 by:-1),(0to:11) do:[:j|
    "h:=h,(s at:n*2+1+((r-1bitAt:6*i+j+1)bitXor:(101bitAt:3-n*4+m+p))). <- originally"
    h:=h,(s at:n*2+1+(r-1>>(6*i+j)+(101>>(3-n*4+m+p))bitAnd:1)).
    j=0and:[p:=1]].
  i=0and:[m:=2].
  h:=h,#[13]].
h

ব্যাখ্যা:

s:='==--/\<>'. স্পষ্টতই চারটি সম্ভাব্য জোড়া এনকোড করে।

r:=(1<<108)atRandom. 9 টি সারি * 12 কলামের জন্য 108 বিটস (একটি বৃহত্তর ইনটিজারে) টস করুন (আমরা == টস করুন - এবং অভাবতই কিন্তু পারফরম্যান্স আমাদের সমস্যা নয়)।

h:=''স্ট্রিংটি যেখানে আমরা সংমিশ্রণ করব (শ্লেমিয়েল চিত্রশিল্পী কারণ একটি স্ট্রিম অক্ষরগুলিতে খুব ব্যয়বহুল হবে)।

(16to:0by:-2),(0to:16by:2)do:[:i| সারিগুলিতে পুনরাবৃত্তি হচ্ছে (* 2)

(11to:0by:-1),(0to:11) do:[:j| কলামগুলিতে পুনরাবৃত্তি হচ্ছে

28266প্রথম 9 লাইনে ব্যবহৃত জোড়টিকে এনকোডিং করা একটি যাদু নম্বর।
এটি বিট প্যাটার্ন 00 01 10 11 10 01 10 10 10, যেখানে 00 এনকোডগুলি '==', 01 '-', 10 '/ \' এবং 11 '<>'।

101অনুভূমিক এবং উল্লম্ব বিপরীতে এনকোডিং করা একটি যাদু নম্বর।
এটি বিট প্যাটার্ন 0000 0000 0110 1010, যখন এনকোডিং করা হয় (1) বা কখন (0) প্রতিটি জোড়ের প্রথম (0) বা দ্বিতীয় (1) অক্ষর '==' '-' '/ \' এবং '<>', উল্লম্ব প্রতিসাম্য এবং অনুভূমিক সিনমেট্রি জন্য।

n:=3 bitAnd: 28266>>i সারি i / 2 ('==' এর জন্য 0, '-' এর জন্য 1, '/ \' এর জন্য 2 এবং '<>' এর জন্য 3) এর জন্য অক্ষর জুটির এনকোডিং দেয়।

(r-1 bitAt: 6*i+j+1) সারি i / 2 কলাম জে এর জন্য এলোমেলো বিটটি চয়ন করুন (1 সর্বনিম্ন বিটের র‌্যাঙ্কটি এইভাবে আমাদের অন্তরস্থলে +1, কে atRandom টস [1, কে] এভাবে আমাদের একটি -1 রয়েছে)।

(101 bitAt: 3-n*4+m+p) বিপরীতমুখী বিটটি বাছাই করুন: (3-এন) * 4 টি জোড় কোড এন এর সাথে সম্পর্কিত 4 ​​টি বিটের গ্রুপের অফসেট, এমটি উল্লম্ব বিপর্যয় অফসেট (প্রথম 9 টির জন্য 0, প্রথম 9 টির জন্য 2), পিটি হ'ল অনুভূমিক পুনর্বিবেচনা অফসেট (প্রথম 12 এর জন্য 0, শেষ 12 কলামের জন্য 1) +1 কারণ লো বিট র‌্যাঙ্ক 1।

bitXor:বিপরীত সম্পাদন করে (এটি একটি অফসেট 0 বা 1 এর জবাব দেয়) এবং এর s at:2*n+1+bitXor_offsetমধ্যে সঠিক চরিত্রটি চয়ন করে।

তবে ব্যটসোর (A>>a)+(B>>b) bitAnd: 1ব্যয় কম (A bitAt:a+1)bitXor:(B bitAt:b+1)হয় সুতরাং বিট এক্সর নতুন করে লেখা হয়েছিল এবং পি-তে +1 অফসেট হয়ে গেছে ...

h,#[13] একটি কুৎসিত চটজলদি, আমরা একটি বাইটআররে (গাড়ীর ফেরতের জন্য কোড সহ) দিয়ে একটি স্ট্রিং সংমিশ্রিত করতে পারি।

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