অ্যাডামএন টাইল মুদ্রণ করুন


11

অ্যাডাম 7 হ'ল রাস্টার ইমেজগুলির জন্য ইন্টারলেসিং অ্যালগরিদম, যেমন পিএনজি। একে "অ্যাডাম 7" অ্যালগরিদম বলা হয় কারণ এটি অ্যাডাম এম কোস্টেলো আবিষ্কার করেছিলেন এবং এটি নির্দিষ্ট প্যাটার্নটি 7 বার অনুসরণ করে উত্পন্ন হয়েছিল। অ্যাডাম for অ্যালগরিদম সম্পর্কে একটি দুর্দান্ত জিনিস যা কোড গল্ফের জন্য এটি সত্যিই মজাদার করে তোলে, এটি হ'ল প্যাটার্নটি যতক্ষণ না এটি অদ্ভুত ততক্ষণ এক স্বেচ্ছাসেবী সংখ্যার পুনরাবৃত্তি করা যায়। ১৯৯ 1996 সালে যখন PNGস্ট্যান্ডার্ডটি বিকাশ করা হয়েছিল তখন কেবল 7 টি পুনরাবৃত্তি ব্যবহার করা যথেষ্ট হিসাবে দেখা হত, যেহেতু 9 টি পুনরাবৃত্তি খুব জটিল ছিল এবং 5 টি পুনরাবৃত্তি তত দক্ষ নয়।

এখানে টাইলের প্রথম পুনরাবৃত্তি:

a

বেশ সহজ. এটি একটি "অ্যাডাম 1" টাইল। এখানে আমরা পরবর্তী পুনরাবৃত্তির দিকে কীভাবে পেতে পারি, "অ্যাডাম 3" টাইল।

যেহেতু আমাদের শেষ টাইলটি ছিল তাই 1x1আমরা উচ্চতা এবং প্রস্থ দ্বিগুণ করেছি এবং পরেরটিটি হবে 2x2। প্রথমত, আমরা উপরের বাম কোণে একটি 'এ' দিয়ে শুরু করি।

a-
--

পদক্ষেপ 2, এই প্যাটার্নটি ডানদিকে অনুলিপি করুন এবং আমাদের যে চিঠিটি চলছে সেগুলি এক এক করে বাড়ান।

ab
--

পদক্ষেপ 3, দ্বিতীয় ধাপ হিসাবে একই, কিন্তু ডান পরিবর্তে অনুলিপি করুন।

ab
cc

গম্ভীর গর্জন। "অ্যাডাম 3" টাইল। আসুন "আদম 5 "ও করি, যাতে আপনি বাস্তবে দেখতে পারেন যে অ্যালগোরিদম কীভাবে কাজ করে। এই টাইলটি আবার দ্বিগুণ হয়ে যাবে 4x4। আবার, আমরা aউপরের বাম কোণে একটি দিয়ে শুরু করি :

a---
----
----
----

এই প্যাটার্নটি দ্বিগুণ করুন, বর্ণটি বাড়ান এবং ডানদিকে নিয়ে যান:

a-b-
----
----
----

আবার, এই সময় ডাউন।

a-b-
----
c-c-
----

আবার, ডানদিকে।

adbd
----
cdcd
----

আবার, এই সময় ডাউন।

adbd
eeee
cdcd
eeee

এটি "অ্যাডাম 5" টাইল। অ্যাডাম 7 টাইলের ASCII উপস্থাপনাটি এখানে:

afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg

এবং যখন আমরা এটিতে এসেছি, এখানে অ্যাডাম 7 টাইলের প্রতিটি ধাপের একটি মজাদার অ্যানিমেশন রয়েছে (যদিও এটি পাশাপাশি বেশ কয়েকটি টাইলস করে তোলে):

এখানে চিত্র বর্ণনা লিখুন

চ্যালেঞ্জ

একটি ধনাত্মক বিজোড় সংখ্যা এন দেওয়া , "অ্যাডাম এন " টাইল আউটপুট করুন । আপনি আইও এর যে কোনও ডিফল্ট পদ্ধতি ব্যবহার করতে পারেন । যেহেতু আমরা বর্ণের পরিবর্তে বর্ণমালা ব্যবহার করছি, আপনার কেবল ইনপুটগুলি 25 পর্যন্ত হ্যান্ডেল করা দরকার you

নমুনা IO

1:

a

3:

ab
cc

5:

adbd
eeee
cdcd
eeee

7:

afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg

9:

ahfhdhfhbhfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
chfhdhfhchfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii

যথারীতি, এটি কোড-গল্ফ, সুতরাং মানক লুফোলগুলি প্রয়োগ হয় এবং বাইট জেতে সংক্ষিপ্ত উত্তর!


কোথায় ctestcase জন্য 9?
ফাঁস নুন

@ কেনি লাউ দুঃখিত, এটি এখন ঠিক হয়ে গেছে।
জেমস

উত্তর:


8

সিজোম, 20 বাইট

Laq~{'a+_@f*\f+z}/N*

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

La                      Push [[]]
  q~                    Push input n
    {           }/      For i in 0..n-1 ...
     'a+                  Add to char 'a to give current char
        _@f*              Join each row by char
            \f+           Add char to the end of each row as well
               z          Zip to transpose
                  N*    Join result by newlines

20/21-বাইট বিকল্প:

Laaq~{'a+aff+:sz}/N*
Laaq~{'a+\Laf+f*z}/N*
Laq~{'a+f{_@*\+}z}/N*

6

এমএটিএল , 23 বাইট

97tiq:+"TFX*tXa~@wZ(!]c

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

এটি অ্যারে বাড়ানোর জন্য পুনরায় ক্রোনেক্কার টেনসর পণ্য ব্যবহার করে, তার পরে স্থানান্তর হয়। প্রতিটি পুনরাবৃত্তিতে, জিরো সমন্বিত নতুন কলামগুলি পুরানোটির সাথে ইন্টারলিভড থাকে; সেই জিরোগুলি যথাযথ নতুন মান দ্বারা প্রতিস্থাপিত হয় (যা প্রতিটি পুনরাবৃত্তিতে বৃদ্ধি পায়); এবং ম্যাট্রিক্স স্থানান্তরিত হয়।

(এক বাইট নষ্ট হয়ে গেছে কারণ অষ্টাভের ক্রোনেকার পণ্য চর ইনপুটটিকে অনুমতি দেয় না next এটি পরবর্তী প্রকাশের জন্য ঠিক করা হবে)।

ব্যাখ্যা

97       % Push 97 (ASCII for 'a')
t        % Duplicate
iq:      % Take input n. Range [1 2 ... n-1]
+        % Add. Gives [98 99 ... 97+n-1] (letters to be filled)
"        % For each
  TFX*   %   Kronecker product with [1 0]. This interleaves new columns with zeros
  tXa~   %   Duplicate. Logical index for the new columns
  @wZ(   %   Assign letter to those columns
  !      %   Transpose (zip)
]        % End if
c        % Convert to chat. Implicitly display

3

পার্ল, 110 104 100 99 91 89 87 + 1 ( -pপতাকা) = 88 বাইট

#!perl -p
$==$_/2;$_=a.$/;$"=b;s/\w/$&.$"/ge,$"++,s/\n/$&.$"x2**$%.$&/ge,$"++until$=<++$%;$\=$_}{

ব্যবহার:

> echo 5 | perl -pe '$==$_/2;$_=a.$/;$"=b;s/\w/$&.$"/ge,$"++,s/\n/$&.$"x2**$%.$&/ge,$"++until$=<++$%;$\=$_}{'

Ungolfed:

while (<>) {
# code above added by -p
    # $_ has input value
    # $/ = "\n" by default
    # $% = 0 by default
    my $n = $_ / 2;   # input
    my $s = "a" . $/; # "a\n"
    my $c = "b";      # "b"
    my $i = $%;       # 0
    while (++$i <= $n) {
        $s =~ s/(\w)/$1 . $c/ge;
        $c++;
        $s =~ s/(\n)/$1 . ($с x 2**$i) . $1/ge;
        $c++;
    }
    $\ = $s;
} {
# code below added by -p
    print;  # prints $_ (undef here) and $\
}

ভাবনা


মঙ্গলতা .... এত দীর্ঘ পতাকা মানে কী?
কনর ও'ব্রায়েন

@ CᴏɴᴏʀO'Bʀɪᴇɴ -lপতাকাটি অষ্টাল $\ কোড 0141(ASCII অক্ষর a) সহ মান পেতে ভেরিয়েবলকে বরাদ্দ করে । এবং এর l141চেয়ে কম $\="a";
ডেনিস ইবায়েভ

ওহ, কত মজার!
কনর ও'ব্রায়েন


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