एएससीआईआई भूलभुलैया रेंडरिंग 3000


42

मुझे टाइपिंग पसंद नहीं है, इसलिए मैं बहुत सरल प्रारूप में अपने mazes आकर्षित करता हूं:

# #####
#     #
# ### #
# # # #
#   # #
##### #

क्या यह एक भूलभुलैया नहीं है ? बेशक, मुझे लगता है कि सभी mazes को 3 डी दिखना चाहिए, लेकिन समान नहीं है, बल्कि इस चुनौती के समान है , अधिकतम- भूलभुलैया के लिए , इसलिए मैंने (grudgingly) मैन्युअल रूप से इस तरह दिखने के लिए भूलभुलैया को अद्यतन किया:

+-----+     +-----------------------------+
|\     \    |\                             \
+ \     \   + \                             \
 \ \     \   \ +-----------------------+     \
  \ \     \   \|                       |\     \
   \ \     \   +-----------------------+ \     \
    \ \     \     +-----------------+   \ \     \
     \ \     \    |\                 \   \ \     \
      \ \     \   + \                 \   \ \     \
       \ \     \   \ \     +-----+     \   \ \     \
        \ \     \   \ \     \    |\     \   \ \     \
         \ \     \   \ \     \---+ \     \   \ \     \
          \ \     \   \ +-----+   \ \     \   \ \     \
           \ \     \   \|     |    \ \     \   \ \     \
            \ \     \   +-----+     \ \     \   \ \     \
             \ \     +-----------------+     \   \ \     \
              \ \                             \   \ \     \
               \ \                             \   \ \     \
                \ +-----------------------------+   \ +-----+
                 \|                             |    \|     |
                  +-----------------------------+     +-----+

दुर्भाग्य से, उस प्रारूप में mazes के साथ काम करना मुश्किल है, और उस सभी प्रकार के मैनुअल टाइपिंग के बाद, मैं सिर्फ मूल को फिर से लिखना नहीं चाहता हूं, इसलिए मुझे आपको मेरे लिए उलटफेर करने के लिए एक प्रोग्राम लिखने की आवश्यकता है।

नियम

  • इनपुट एक बहु स्ट्रिंग या चरित्र केवल से मिलकर मैट्रिक्स हो जाएगा " ", "|", "\", "+", "-", और नई-पंक्तियों।
  • आउटपुट के होते हैं " "और "#"पैटर्न भूलभुलैया द्वारा वर्णित में,।
  • मेरे अद्भुत भूलभुलैया डिजाइनिंग कौशल के कारण, आप भूलभुलैया की संरचना के बारे में कुछ भी नहीं मान सकते हैं, इसके अलावा एक वैध डिकंस्ट्रक्शन है।
  • 3D-ification में, (इस प्रक्रिया को अब आपको पूर्ववत करना होगा), प्रत्येक #को इस 3x4x7 वर्ण ब्लॉक में बदल दिया गया था:
    +-----+
    |\     \
    + \     \
     \ +-----+
      \|     |
       +-----+
    
  • आस-पास के ब्लॉक एक साथ जुड़ गए, जैसे:
    +-----+-----+
    |\     \     \
    + \     \     \
     \ +-----+-----+
      \|\     \     \
       + \     \     \
        \ +-----+-----+
         \|     |     |
          +-----+-----+
    
    लेकिन लाइनों में शामिल हुए बिना, इसलिए यह वास्तव में इस तरह दिखता है:
    +-----------+
    |\           \
    + \           \
     \ \           \
      \ \           \
       \ \           \
        \ +-----------+
         \|           |
          +-----------+
    
  • अवतल रिक्त स्थान कभी-कभी अन्य दीवारों के कुछ हिस्सों को अवरुद्ध करते हैं।
    +-----------+
    |\           \
    + \           \
     \ \     +-----+
      \ \     \    |
       \ \     \---+
        \ +-----+
         \|     |
          +-----+
    
  • इनपुट या आउटपुट में अनुगामी व्हाट्सएप स्वीकार्य है। (आपको निर्दिष्ट करना होगा कि आपके उत्तर के लिए इनपुट में अनुगामी व्हाट्सएप की आवश्यकता है ।)
  • प्रमुख व्हाट्सएप इनपुट में खाली स्थानों के अनुरूप होना चाहिए।
  • मुझे अभी भी टाइपिंग पसंद नहीं है, इसलिए सबसे छोटा कोड जीतता है

परीक्षण के मामलों:

Input:
+-----+     +-----------------------------+
|\     \    |\                             \
+ \     \   + \                             \
 \ \     \   \ +-----------------------+     \
  \ \     \   \|                       |\     \
   \ \     \   +-----------------------+ \     \
    \ \     \     +-----------------+   \ \     \
     \ \     \    |\                 \   \ \     \
      \ \     \   + \                 \   \ \     \
       \ \     \   \ \     +-----+     \   \ \     \
        \ \     \   \ \     \    |\     \   \ \     \
         \ \     \   \ \     \---+ \     \   \ \     \
          \ \     \   \ +-----+   \ \     \   \ \     \
           \ \     \   \|     |    \ \     \   \ \     \
            \ \     \   +-----+     \ \     \   \ \     \
             \ \     +-----------------+     \   \ \     \
              \ \                             \   \ \     \
               \ \                             \   \ \     \
                \ +-----------------------------+   \ +-----+
                 \|                             |    \|     |
                  +-----------------------------+     +-----+

Output:
# #####
#     #
# ### #
# # # #
#   # #
##### #

Input:
+-----+
|\     \
+ \     \
 \ +-----+
  \|     |
   +-----+

Output:
#

Input:
      +-----------------+
      |\                 \
      + \                 \
   +-----+     +-----+     +-----+
   |\           \    |\           \
   + \           \---+ \           \
    \ \     +-----+   \ +-----+     \
     \ \     \    |    \|     |\     \
      \ \     \---+     +-----+ \     \
       \ \     +-----+     +-----+     \
        \ \           \    |\           \
         \ \           \   + \           \
          \ +-----+     +-----+     +-----+
           \|     |\                 \    |
            +-----+ \                 \---+
                   \ +-----------------+
                    \|                 |
                     +-----------------+

Output:
 ###
## ##
#   #
## ##
 ###

Input:
+-----------------------------------------------------------------------------------------------------+
|\                                                                                                     \
+ \                                                                                                     \
 \ +-----------------------------------------------+     +-----------------------------------------+     \
  \|                                               |\     \                                        |\     \
   +-----------------------------------------------+ \     \---------------------------------------+ \     \
      +-----+     +-----------------------------+   \ \     \     +-----------------------------+   \ \     \
      |\     \    |\                             \   \ \     \    |\                             \   \ \     \
      + \     \   + \                             \   \ \     \   + \                             \   \ \     \
       \ \     \   \ +-----------+     +-----+     \   \ \     \   \ +-----------------------+     \   \ \     \
        \ \     \   \|           |\     \    |\     \   \ \     \   \|                       |\     \   \ \     \
         \ \     \   +-----------+ \     \---+ \     \   \ \     \   +-----------------------+ \     \   \ \     \
          \ \     \     +-----+   \ \     \   \ \     \   \ \     +-----------------------+   \ \     \   \ \     \
           \ \     \    |\     \   \ \     \   \ \     \   \ \                             \   \ \     \   \ \     \
            \ \     \   + \     \   \ \     \   \ \     \   \ \                             \   \ \     \   \ \     \
             \ \     \   \ +-----+   \ \     \   \ \     \   \ +-----------------------------+   \ \     \   \ \     \
              \ \     \   \|     |    \ \     \   \ \     \   \|                             |    \ \     \   \ \     \
               \ \     \   +-----+     \ \     \   \ \     \   +-----------------------------+     \ \     \   \ \     \
                \ \     +-----------+   \ \     \   \ \     +-----------------------------------+   \ \     \   \ \     \
                 \ \                 \   \ \     \   \ \                                         \   \ \     \   \ \     \
                  \ \                 \   \ \     \   \ \                                         \   \ \     \   \ \     \
                   \ \     +-----------+   \ \     \   \ \     +-----------------------+     +-----+   \ \     \   \ \     \
                    \ \     \          |    \ \     \   \ \     \                      |\     \    |    \ \     \   \ \     \
                     \ \     \---------+     \ \     \   \ \     \---------------------+ \     \---+     \ \     \   \ \     \
                      \ \     \     +-----------+     \   \ \     \     +-----------+   \ \     \     +-----+     \   \ +-----+
                       \ \     \    |\                 \   \ \     \    |\           \   \ \     \    |\           \   \|     | 
                        \ \     \   + \                 \   \ \     \   + \           \   \ \     \   + \           \   +-----+  
                         \ \     \   \ +-----------------+   \ \     \   \ \           \   \ +-----+   \ +-----+     \            
                          \ \     \   \|                 |    \ \     \   \ \           \   \|     |    \|     |\     \            
                           \ \     \   +-----------------+     \ \     \   \ \           \   +-----+     +-----+ \     \            
                            \ \     +-----------------------------+     +-----+           +-----------------------+     +-----------+
                             \ \                                                                                                     \
                              \ \                                                                                                     \
                               \ +-----------------------------------------------------------------------------------------------------+
                                \|                                                                                                     | 
                                 +-----------------------------------------------------------------------------------------------------+  

Output:
#################
        #       #
# ##### # ##### #
#   # # #     # #
# # # # ##### # #
#   # #       # # 
### # ####### # #
#   # #    #  # # 
# ### # ## # ##
#     # ##    #  
#################

Input:
+-----------------+
|\                 \
+ \                 \
 \ \                 \
  \ \                 \
   \ \                 \
    \ \                 \
     \ \                 \
      \ \                 \
       \ +-----------------+
        \|                 | 
         +-----------------+

Output:
###
###
###

Input: (Note leading whitespace)
      +-----+     +-----+
      |\     \    |\     \
      + \     \   + \     \
   +-----+-----+-----+-----+
   |\     \    |\     \    | 
   + \     \---+ \     \---+  
    \ +-----+-----+-----+-----+
     \|     |\     \    |\     \
      +-----+ \     \---+ \     \
         +-----+-----+-----+-----+
         |\     \    |\     \    | 
         + \     \---+ \     \---+  
          \ +-----+   \ +-----+      
           \|     |    \|     |       
            +-----+     +-----+        

Output:
 # #
# #
 # #
# #


क्या इनपुट / आउटपुट स्ट्रिंग्स की सूची हो सकती है?
निक केनेडी

@ हाँ हाँ। चरित्र मैट्रिक्स से मेरा मतलब यही है।
Hiatsu

महान सिर्फ स्पष्ट करना चाहता था!
निक कैनेडी

1
मुझे वास्तव में यह चुनौती पसंद है! बस जिज्ञासु, क्यों इस तरह गोल और 3 डी भूलभुलैया का उत्पादन नहीं?
AJFaraday

@AJFaraday मेरे द्वारा लिंक किए गए चैलेंज में भूलभुलैया (और अधिक) का निर्माण पहले ही कर चुका है।
हयात्सु

जवाबों:


30

पायथन 2 , 81 बाइट्स

def f(M,k=1,r='',b=0):
 for c in M[k][k::6]:b^=c>' ';r+=' #'[b]
 print r;f(M,k+3)

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

इनपुट को स्ट्रिंग्स की सूची के रूप में लेता है (या वर्णों की सूची की सूची)। आउटपुट को प्रिंट करता है, त्रुटि के साथ समाप्त होता है।

विचार tsh के समान है । हम ?नीचे सूचीबद्ध वर्णों को देखते हैं कि कौन से स्थान हैं और कौन से हैं \:

+-----------+
|?     ?     ?
+ \           \
 \ \     +-----+
  \ ?     ?    |?
   \ \     \---+
    \ +-----+
     \|?    |?
      +-----+

प्रत्येक पंक्ति में ?, \भरे हुए सेल और भूलभुलैया के एक खाली सेल के बीच एक ऊर्ध्वाधर रिज का निशान है। चूँकि ये लकीरें भूलभुलैया की ऊपरी परत में होती हैं, इसलिए उनके \पात्रों को कभी भी दूसरे भूलभुलैया तत्व द्वारा अस्पष्ट नहीं किया जाता है।

?पदों को देखने के लिए , पंक्तियों k=1,4,7,...(शून्य-अनुक्रमित) के माध्यम से कोड पुनरावृत्त होता है , और प्रत्येक पंक्ति में स्थिति के साथ शुरू होने वाले प्रत्येक 6 वें स्थान पर दिखता है k। यह ट्रैक करता है कि क्या हम खाली या पूर्ण सेल में बिट में हैं b, और उस बिट को फ़्लिप करते हैं जब भी कोई \सामना होता है। प्रत्येक चरित्र को पढ़ने के बाद, यह खाली ( ) या पूर्ण ( #) के अनुसार चरित्र को जोड़ता है b, और पंक्ति के पूरा होने के बाद परिणामी स्ट्रिंग को प्रिंट करता है।


उस। है। प्रभावशाली।
संयोजिका

19

जावास्क्रिप्ट (Node.js) , 85 बाइट्स

a=>a.flatMap(u=(l,y)=>y%3?[]:[l.flatMap((c,x)=>x<y|(x-=y+3)%6?[]:' #'[u[x]^=c+1<0])])

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

मूल विचार यह है: हम केवल वर्णों की परवाह करते हैं । यदि यह एक डैश ( ) है, तो इसके शीर्ष पर मौजूद सेल के साथ वर्तमान सेल का अलग मूल्य है, और यदि यह एक स्थान ( ) है, तो वर्तमान सेल का समान मूल्य है।(6x+3y+3,3y)-

धन्यवाद @ अरनुलद , 7 बाइट बचाईं


बहुत अच्छी अंतर्दृष्टि
योना

5

जेली , 22 20 बाइट्स

ṫ"J‘$m3n⁶m€6Ż^\ị⁾# Ḋ

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

इनपुट के रूप में जेली स्ट्रिंग को ले जाने वाली एक मोनडिक लिंक और जेली स्ट्रिंग के रूप में संसाधित भूलभुलैया को वापस करते हुए अनुगामी व्हिटस की एक पंक्ति शामिल है।

1 बाइट को बचाया जा सकता है यदि अग्रणी व्हाट्सएप की एक भी लाइन स्वीकार्य थी।

@ Tsh के फॉर्मूले से कुछ प्रेरणा ली , इसलिए यह सुनिश्चित करें कि वह भी एक हो!

व्याख्या

ṫ"  $                | Tail each string using a paired member of the following:
  J                  | - Sequence along the list of strings
   ‘                 | - Incremented by 1
     m3              | Take every 3rd string (1st, 4th, 7th, ...)
       n⁶            | Not equal to space character
         m€6         | Within each list take every 6th item (1st, 7th, ...)
            Ż        | Prepend a zero to the list
             ^\      | Reduce using xor, collecting up results; vectorised across lists (so starts with 0 xor first list, then output of that xor second list, and so on)
               ị⁾#   | Index into "#", " "
                   Ḋ | Remove first list

5

05AB1E , 25 22 बाइट्स

केविन क्रूज़सेन के लिए धन्यवाद

εN3%iN.$6ιнηðÊO„ #sèJ,

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

पोर्ट ऑफ ज़्नोर के पायथन उत्तर । एक चरित्र मैट्रिक्स के रूप में इनपुट लेता है। TIO लिंक इनपुट को पठनीयता के लिए मल्टीलाइन स्ट्रिंग के रूप में दिखाता है, |€Sहेडर के साथ जो कि कैरेक्टर मैट्रिक्स फॉर्मेट में परिवर्तित होता है।


1
24 बाइट्स : ε'\¢„ #sè}सेðм€g„ #sè
केविन क्रूज़सेन

वाह, अच्छा लगा! आगे के सुधार के लिए उत्तर देखें। पुनश्च: मैं мऔर के बीच के अंतर के बारे में उलझन में हूँ K
ग्रिम्मी

3

रेटिना 0.8.2 , 72 बाइट्स

¶(?<=(.|(¶))+)(?<-2>.)+
¶
-4G`
.+¶(.+)¶.+
$1
T` `#`\\  +\\
.(.)....|.
$1

इसे ऑनलाइन आज़माएं! स्पष्टीकरण:

¶(?<=(.|(¶))+)(?<-2>.)+
¶

सभी रेखाओं को डी-तिरछा करें।

-4G`

अंतिम तीन पंक्तियों को हटा दें क्योंकि मुझे उनकी आवश्यकता नहीं है।

.+¶(.+)¶.+
$1

केवल तीन पंक्तियों के प्रत्येक समूह के बीच में रखें। (रेटिना 1 में, मेरा मानना है कि इसके बाद के संस्करण दो चरणों एक एकल चरण में किया जा सकता: ,G1,3,-5`।)

T` `#`\\  +\\

ब्लॉकों के चेहरे में भरें।

.(.)....|.
$1

प्रत्येक ब्लॉक का केवल दूसरा वर्ण रखें।


2

सी (क्लैंग) , 120 117 बाइट्स

o,c,t,s,r;f(char*m){for(s=o=0;*m;!r?t^=*m!=32,s=t?35:46:0)*++m==10?m-=~++o,c=t=0,s=10:0,r||printf(&s),r=c++%6|o%3-1;}

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

दूसरों के जवाबों से प्रेरित।

'\'=92   ' '=32=>46='.'  '#'=35   '\n'=10 
// o offset == // l line 
// c line counter 
// t toggle 
// r => ? test, point to inspect 
for(o=s=0;*m;
!r?t=*m-32?!t:t,s=t?35:46:0) // t^=*m!=32 @ceilingcat 
// if test(r) is enabled: toggle(t) and sets (s)

*++m==10?m-=~++o,c=t=0,s=10:0,
// next char => if it's \n overwrites (s)
// and increments offset(o) and move pointer(m)

r || printf (&s)
// r or print! Thanks to @ceilingcat
// instead of 
    *++m-10?0:(m-=~++o,c=t=0,s=10),
    !r*s?putchar(s):0, 
 Saved 5 !

r=c++%6|o%3-1;// enable test every 6 x 3+1 positions
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.