एडमएन टाइल प्रिंट करें


11

एडम 7 पीएसजी जैसे रेखापुंज छवियों के लिए एक इंटरलाकिंग एल्गोरिथ्म है। इसे "एडम 7" एल्गोरिथ्म कहा जाता है क्योंकि यह एडम एम। कॉस्टेलो द्वारा आविष्कार किया गया था, और यह 7 बार एक निश्चित पैटर्न का पालन करके उत्पन्न होता है। एडम 7 एल्गोरिथ्म के बारे में ठंडी चीजों में से एक है जो कोड गोल्फ के लिए वास्तव में मजेदार बनाता है, यह है कि पैटर्न को मनमाने ढंग से कई बार दोहराया जा सकता है, जब तक कि यह विषम न हो। जब 1996 में जब PNGमानक विकसित किया गया था, तो केवल 7 पुनरावृत्तियों को पर्याप्त रूप में देखा गया था, क्योंकि 9 पुनरावृत्तियों बहुत जटिल थे, और 5 पुनरावृत्तियों उतना कुशल नहीं था।

यहाँ टाइल का पहला चलना है:

a

बहुत साधारण। यह एक "एडम 1" टाइल है। यहां बताया गया है कि हमें अगली यात्रा "एडम 3" टाइल से कैसे मिलती है।

चूंकि हमारी आखिरी टाइल थी 1x1, हम ऊँचाई और चौड़ाई को दोगुना करते हैं, और अगला एक होगा 2x2। सबसे पहले, हम ऊपरी बाएँ कोने में एक 'a' से शुरू करते हैं।

a-
--

चरण 2, इस पैटर्न को दाईं ओर कॉपी करें, और उस अक्षर को बढ़ाएं जिस पर हम एक हैं।

ab
--

चरण 3, चरण 2 के समान, लेकिन सही के बजाय नीचे कॉपी करें।

ab
cc

बूम। "एडम 3" टाइल। चलो "एडम 5" भी करते हैं, इसलिए आप वास्तव में देख सकते हैं कि एल्गोरिथ्म कैसे काम करता है। यह टाइल, फिर से, दो बार बड़ी होगी, इसलिए 4x4। फिर, हम aऊपरी बाएँ कोने में एक के साथ शुरू करते हैं :

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

इस पैटर्न को दोगुना करें, पत्र बढ़ाएं, और इसे दाईं ओर ले जाएं:

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

फिर, इस बार नीचे।

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

फिर, इस बार दाईं ओर।

adbd
----
cdcd
----

फिर, इस बार नीचे।

adbd
eeee
cdcd
eeee

यह "एडम 5" टाइल है। यहाँ Adam7 टाइल का ASCII प्रतिनिधित्व है:

afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg

और जब हम इस पर होते हैं, तो यहां एडम 7 टाइल के प्रत्येक चरण का एक मजेदार एनीमेशन है (हालांकि यह कई टाइलों को एक साथ करता है):

यहाँ छवि विवरण दर्ज करें

चुनौती

एक सकारात्मक विषम संख्या एन को देखते हुए , "एडम एन " टाइल का उत्पादन करें । आप IO की किसी भी डिफ़ॉल्ट विधि का उपयोग कर सकते हैं । चूंकि हम संख्याओं के बदले में वर्णमाला का उपयोग कर रहे हैं, इसलिए आपको केवल 25 तक इनपुट को संभालने की आवश्यकता है। जब तक आप निर्दिष्ट करते हैं, तब तक आप लोअर-केस या अपर-केस वर्णों को आउटपुट करना चुन सकते हैं और यह सुसंगत है।

नमूना 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

हमेशा की तरह, यह कोड-गोल्फ है, इसलिए मानक कमियां लागू होती हैं, और बाइट्स जीत में सबसे कम जवाब मिलता है!


cटेस्टकेस में कहाँ है 9?
लीक नन

@KennyLau क्षमा करें, यह अब ठीक हो गया है।
जेम्स

जवाबों:


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

MATL , 23 बाइट्स

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

इसे ऑनलाइन आज़माएं!

यह सरणी को विस्तारित करने के लिए बार-बार क्रोनर टेंसर उत्पाद का उपयोग करता है, इसके बाद ट्रांसपोज़ेशन होता है। प्रत्येक पुनरावृत्ति पर, शून्य वाले नए कॉलम पुराने के साथ इंटरलेय किए गए हैं; उन शून्य को तब उचित नए मूल्य (जो प्रत्येक पुनरावृत्ति में बढ़ता है) द्वारा प्रतिस्थापित किया जाता है; और मैट्रिक्स को ट्रांसपोज़ किया जाता है।

(एक बाइट बर्बाद हो गया क्योंकि ऑक्टेव का क्रोनकर उत्पाद चार इनपुट की अनुमति नहीं देता है। यह अगले रिलीज के लिए तय किया जाएगा)।

व्याख्या

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 $\
}

Ideone


अच्छाई .... इतने लंबे झंडे का क्या मतलब है?
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ -lध्वज $\ अष्टक कोड 0141(ASCII वर्ण a) के साथ मान रखने के लिए चर प्रदान करता है । और l141से छोटा है $\="a";
डेनिस इबाव

ओह, कितना दिलचस्प है!
कॉनर ओ'ब्रायन


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.