वांग टाइल के साथ स्क्रीन भरें


24

यह साबित हो गया है कि निम्नलिखित 13 वर्ग वांग टाइल हमेशा विमान को aperiodically टाइल करते हैं । इसका मतलब यह है कि जब वर्गों को सभी पड़ोसी पक्षों के साथ एक ही रंग में ग्रिड में व्यवस्थित किया जाता है, तो पैटर्न का अनुवाद कभी भी अपने आप से मेल नहीं खाता।

वांग टाइलें

हम केंद्र और कोनों पर रिक्त स्थान से भरे एक 3 × 3 ग्रिड द्वारा प्रत्येक टाइल का प्रतिनिधित्व करते हैं, और किनारों पर लाल, हरे, नीले, पीले, भूरे रंग के बजाय 5 के माध्यम से संख्या 1:

 2      2      2      1      1      1      4      3      2      2      4      3      2
1 2    1 3    2 3    2 1    3 1    3 2    4 4    4 4    4 5    4 5    5 5    5 5    5 4
 3      2      3      2      3      2      1      2      1      4      1      2      2

लक्ष्य

आपका कार्य एक कार्यक्रम लिखना है जो एक चौड़ाई और ऊंचाई में लेता है और उन आयामों के साथ एक वैध वांग टाइल ग्रिड को आउटपुट करता है। एक मान्य टाइलिंग वह है जिसमें सभी आसन्न टाइल किनारों पर एक ही रंग (या संख्या) है। बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।

आपका इनपुट स्टडिन या कमांड लाइन आर्गुमेंट्स से आना चाहिए और आउटपुट स्टैडआउट में जाना चाहिए। सटीक इनपुट प्रारूप कुछ भी स्पष्ट रूप से स्पष्ट हो सकता है, जैसे >>> wangtiler 3 2। चौड़ाई और ऊंचाई हमेशा सकारात्मक पूर्णांक होती है।

उदाहरण (चौड़ाई = 3, ऊँचाई = 2)

ध्यान दें कि जब हम पाठकीय टाइलों को लेआउट करते हैं, तो पड़ोसी किनारों को अंकों के आवश्यक अनावश्यक जोड़े बनाते हैं:

 1  2  1 
2 11 22 1
 2  3  2 
 2  3  2 
4 55 55 4
 1  2  2 

(यह उचित आउटपुट स्वरूप नहीं है।)

हम इन क्षैतिज और लंबवत संपीड़ित कर सकते हैं:

 1 2 1 
2 1 2 1
 2 3 2 
4 5 5 4
 1 2 2 

यह संकुचित प्रारूप उचित आउटपुट प्रारूप है जिसका आपको उपयोग करना चाहिए। विषम संख्या वाली पंक्तियों में उनका अनुगामी स्थान शामिल होना चाहिए।

ग्राफिकल बोनस

किसी भी पाठ्य सामग्री के उत्पादन के बजाय, आपका कार्यक्रम टाइल वाले ग्रिड की एक छवि का उत्पादन कर सकता है। चित्रमय टाइलों को एक वर्ग में व्यवस्थित किए गए चार 45-45-90 त्रिकोणों से बना होना चाहिए और ऊपर की टाइलों की तरह पांच आसानी से अलग-अलग रंगों का उपयोग करना चाहिए। काली सीमाओं की आवश्यकता नहीं है। चित्रमय टाइलों का आकार कम से कम 32 × 32 पिक्सेल होना चाहिए। उन पर कोई "संपीड़न" लागू नहीं किया जाता है।

उदाहरण बोनस छवि: (ऊपर उदाहरण के रूप में एक ही ग्रिड)

बोनस उदाहरण

बोनस माइनस 150 बाइट के लायक है।

टिप्पणियाँ

  • आपको 13 टाइलों के इस सेट का उपयोग करना चाहिए।
  • टाइल्स को घुमाया नहीं जा सकता है।
  • टाइलें किसी भी समय दिखाई दे सकती हैं (बिल्कुल भी नहीं)।
  • आप मान सकते हैं कि किसी भी आयाम के साथ मान्य टाइलिंग संभव है।

मुझे लगता है कि टाइल्स को घुमाया नहीं जा सकता है?
मार्टिन एंडर

@ मार्टिनबटनर नं। आपको प्रदान की गई १३ टाइलों के सेट का उपयोग करना चाहिए जैसा कि वे दिखाई देते हैं।
केल्विन के शौक

क्या आप प्रत्येक टाइल का उपयोग कितनी बार कर सकते हैं? मैं आपके उदाहरण में देखता हूं कि आपने दो बार एक टाइल का उपयोग किया है।
त्युन प्रैंक

@TeunPronk नहींं। हालाँकि, कई बार आप उनका उपयोग करना चाहते हैं (निश्चित रूप से आप किनारों से ठीक से मेल खाने के लिए कुछ का अधिक उपयोग करने के लिए मजबूर हो सकते हैं)।
केल्विन के शौक

@ केल्विन के शौक क्या यह मान लेना सुरक्षित है कि हमेशा एक संभव समाधान है?
त्यूण प्रैंक

जवाबों:


12

GolfScript, 200 अक्षर

~\:W*):R;1,{)\:C"=QCy_~{MTKAis]?OyJE?~WvM"[64 2400]{base}/@{>}+,{:T;[C,W<!{C W~)=T 64/^8/8%}*C,W%0>{C-1=64/T^8%}*]0-!},1<.!!{1,+}*+.,R<}do);W/.0={' '\512/8%`}%n@{.[.0=8%\{' '\64/8%}/n]\{' '\8/8%`}%n}/

कोई ग्राफिक आउटपुट के साथ ASCII संस्करण। STDIN पर इनपुट दें - यहाँ प्रयास करें । कोड एक सादे बैकट्रैकिंग दृष्टिकोण का उपयोग करता है और लाइन द्वारा अंतरिक्ष लाइन को भरता है।

उदाहरण:

> 3 2
 1 2 1
2 1 2 1
 2 3 2
5 4 4 5
 2 2 1

> 8 5
 1 2 1 2 1 2 1 2
2 1 2 1 2 1 2 1 2
 2 3 2 3 2 3 2 3
5 4 4 5 5 4 4 5 5
 2 2 4 2 2 2 4 2
5 4 5 5 4 5 4 4 5
 2 1 1 2 1 2 1 1
1 3 2 1 2 1 3 2 1
 2 2 2 3 2 2 2 2
5 4 5 4 4 5 4 5 4
 2 1 2 2 1 2 1 2

ग्राफिकल बोनस, स्कोर 122, 272 अक्षर - 150 बोनस

~\:W*):R;1,{)\:C"=QCy_~{MTKAis]?OyJE?~WvM"[64 2400]{base}/@{>}+,{:T;[C,W<!{C W~)=T 64/^8/8%}*C,W%0>{C-1=64/T^8%}*]0-!},1<.!!{1,+}*+.,R<}do);W["P3\n"32W*" "3$,32*n 1n]\{{:^;512:X;16,{[^8%]1$*[^X/8%]31*@.+>[^64/8%]31*++32<}:F%8:X;16,-1%{F}%+}%zip{{+}*{8+2base(;~}%' '*n}/}/

एक अलग आउटपुट फॉर्मेटर के साथ एक ही मूल कोड। आउटपुट PPM फॉर्मेट में एक इमेज है (यानी केवल आउटपुट को किसी फाइल में रीडायरेक्ट करना image.ppm)। प्रश्न में टाइल की तुलना में रंग थोड़ा अलग हैं, लेकिन स्पष्ट रूप से अलग (1-> नीला, 2-> हरा, 3-> सियान, 4-> लाल, 5-> मैजेंटा)।

16x12 उदाहरण:

16x12 वैंग उदाहरण


16

पायथन (565 - 150 = 415)

Btw ... ऐसा लगता है कि हम भोलेपन से सिर्फ इसके बाईं और ऊपर की टाइल से अगली टाइल तय नहीं कर सकते। टाइल्स के कुछ संयोजन हैं जो एक-दूसरे को फिट करेंगे।
यदि कोई टाइल फिट नहीं हो सकती है तो यह समाधान सभी संभावित संयोजनों और बैकट्रैक के माध्यम से बाएँ-दाएँ, शीर्ष-> नीचे की ओर भरता है।

13 टाइल के प्रमाण के बारे में अधिक जानकारी के लिए: 13 वांग टाइलों का एक एपेरियोडिक सेट

चौड़ाई और ऊंचाई द्वारा निर्दिष्ट कर रहे हैं WऔरH

लाल, हरा, नीला, पीला और नोयर निर्दिष्ट द्वारा R, G, B, YऔरN

import Image,sys
W,H=map(int,sys.argv[1:])
R=99
G=R<<8
B=G<<8
Y=G+R
N=0
s="RGB";u=32;g=[[0,0]]*W*H;k=f=0
def t(c):i=Image.new(s,(2,2));k=i.load();q=16;k[1,0],k[1,1],k[0,1],k[0,0]=c;return i.resize([64]*2).rotate(45).crop((q,q,q+u,q+u))
while k<H*W:
 z=g[k][1];v=-1;j=k/W;i=k%W
 while z<13:
    l=map(eval,"GGGRRRYBGGYBGGBBRRGYYNNNNYBGBGBGRGRYRGGRRGGBBYYYYNNN"[z::13])
    if(j<1or g[(j-1)*W+i][0][2]==l[0])and(i<1or g[j*W+i-1][0][1]==l[3]):g[k]=[l,z+1];v=1;z=99
    z+=1
 g[k][1]*=(v>0);k+=v
m=Image.new(s,(W*u,H*u))
for e in g:m.paste(t(e[0]),(f%W*u,(f/W)*u));f+=1
m.show()

आउटपुट। वास्तविक रंग योजना नहीं ... क्यूज़ बहुत चमकदार। यह कुछ दिलचस्प आंतरिक सजावट पैटर्न बना सकता है ...:

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


14
नियोपॉनिक मिनक्राफ्ट ...
केल्विन के शौक

क्या आप एक बड़ी तस्वीर जोड़ सकते हैं? मैं उत्सुक हूं कि यह कैसा होगा
गर्वित हैकेलर

1
@proudhaskeller बड़ी छवि: Imgur । वॉलपेपर निर्माता: लिंक
वेक्टर

1
यह निश्चित रूप से आवधिक दिखता है - मुझे क्या याद आ रहा है?
गर्वित हैकेलर

लगभग समय-समय पर .. यहां अधिक विपरीत के साथ उदाहरण: Imgur
वेक्टरित

2

हास्केल, 208 बाइट्स

p x|x<2/3=(3!x)3"3212"3
p x=(0.5!x)1"45423"2
f=floor
(k!x)l s m=do{i<-[0,x..];[' ',s!!(2+f(i+x)-f i)]}:do{i<-[0,l*x..];s!!mod(f i)m:" "}:p(k*x)
t n=take$2*n+1
main=do(w,h)<-readLn;putStr.unlines.t h$t w<$>p 1

कोई खोज नहीं, सिर्फ गणित। उदाहरण रन: (8,5)स्टड, आउटपुट पर दिया गया

 2 2 2 2 2 2 2 2 
4 5 4 5 4 5 4 5 4
 1 2 1 2 1 2 1 2 
3 2 3 2 3 2 3 2 3
 2 3 2 3 2 3 2 3 
4 5 5 4 4 5 5 4 4
 4 2 2 2 4 2 2 2 
4 4 5 4 5 5 4 5 4
 1 1 2 1 1 2 1 2 
3 2 1 3 2 1 3 2 3
 2 2 2 2 2 2 2 3 

Ideone पर ऑनलाइन रन करें

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