*** परिदृश्य ***


28

उद्देश्य : एक प्रोग्राम लिखें जो सुंदर (?) ASCII- कला परिदृश्य और स्काईलाइन उत्पन्न करता है!

आपके कार्यक्रम में सिर्फ एक इनपुट है: किसी भी संयोजन / वर्ण की पुनरावृत्ति से बना एक स्ट्रिंग 0123456789abc

प्रत्येक इनपुट चरित्र के लिए, एक वर्टिकल लाइन निम्नानुसार बनाई गई है:

         .
        ..
       ...
      oooo
     ooooo
    OOOOOO
   OOOOOOO
  XXXXXXXX
 XXXXXXXXX
XXXXXXXXXX

0123456789

abcइसके बजाय अक्षरों को एक नंबर n द्वारा फॉलो किया जाता है, और नीचे की तरफ क्रमशः 1,2 या 3 होल (स्पेस) के साथ वर्टिकल लाइन n ड्रा करें।

उदाहरण

Crysler बिल्डिंग

इनपुट: २४ Input ९ :४२

   .
   .
  ...
  ooo
  ooo
 OOOOO
 OOOOO
XXXXXXX
XXXXXXX
XXXXXXX

ताज महल

इनपुट: 0804023324554233204080

 .                  .
 .                  .
 o                  o
 o        oo        o
 O O     OOOO     O O
 O O  OO OOOO OO  O O
 X X XXXXXXXXXXXX X X
 X X XXXXXXXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXX

एफिल टॉवर

इनपुट: 011a2b3b5c9c9b5b3a2110

      ..
      ..
      ..
      oo
     oooo
     OOOO
    OOOOOO
   XXX  XXX
 XXX      XXX
XXX        XXX

आप मान सकते हैं कि इनपुट खाली नहीं है और यह अच्छी तरह से गठित है।
किसी भी भाषा को A + से Z ++ तक स्वीकार किया जाता है ।

यह कोड-गोल्फ है: सबसे छोटा स्रोत कोड जीतता है
यदि नियमों में कुछ भी स्पष्ट नहीं है, तो बेझिझक नीचे टिप्पणी में पूछ सकते हैं।

मज़े करो, और कुछ बाइट्स में सौ मीटर ऊंची संरचनाओं पर कब्जा करो!

(और अपने समाधान में अपनी पसंदीदा इमारत को शामिल करना न भूलें)

पुनश्च: नहीं, आप इंटरनेट से डेटा डाउनलोड / एक्सेस नहीं कर सकते, अपने फ़ाइल नाम को डेटा और उस सभी सामग्री के रूप में उपयोग कर सकते हैं। निष्पक्ष रहें, और केवल अपने कोड-गोल्फ कौशल का उपयोग करें।


मेरे लिए लंबा 9 लगता है ...: -?
गैब्रिएल डी'अनटन

ओह, मैं इसे देखता हूं: शीर्ष को "सी 9" के रूप में परिभाषित किया गया है, जिसका अर्थ है: ऊंचाई 9 के साथ एक ऊर्ध्वाधर रेखा खींचना और 3 निचले वर्णों को बंद करना। इसलिए यह आपको लंबा लगता है। नियमों को फिर से पढ़ें और मुझे बताएं कि क्या यह ठीक है।
गैब्रिएल डी'अटन 5

ठीक है, मैं ऑफसेट के अपने विनिर्देश को गलत ठहराता हूं।
हावर्ड

जवाबों:



5

माणिक, 88 85

मजेदार चुनौती!

9.downto(0){|h|puts$*[0].gsub(/(\D?)(.)/){'XXXOOoo... '[h<$1.hex-9||$2.hex<h ?-1:h]}}

कमांडलाइन पर इनपुट लेता है, जैसे:

ruby landscapes.rb 011a2b3b5c9c9b5b3a2110

प्रिंट आउट निकालेंगे:

      ..      
      ..      
      ..      
      oo      
     oooo     
     OOOO     
    OOOOOO    
   XXX  XXX   
 XXX      XXX 
XXX        XXX

5

पायथन 2.7 - 186

शायद कम हो सकता है ...

x=[]
l=iter(raw_input())
a="XXX00oo..."
for i in l:
 try:i=int(i);o=0
 except:o=" abc".index(i);i=int(next(l))
 x.append(" "*o+a[o:i+1]+" "*(9-i))
for i in zip(*x)[::-1]:print''.join(i)

नमूना रन:

08040233245542332040800000247974200000011a2b3b5c9c9b5b3a2110
                             .              ..
 .                  .        .              ..
 .                  .       ...             ..
 o                  o       ooo             oo
 o        oo        o       ooo            oooo
 0 0     0000     0 0      00000           0000
 0 0  00 0000 00  0 0      00000          000000
 X X XXXXXXXXXXXX X X     XXXXXXX        XXX  XXX
 X X XXXXXXXXXXXX X X     XXXXXXX      XXX      XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX        XXX

सिडनी हार्बर ब्रिज

a1a13443a1a2a3a4a5a6a6a7a7a8a8a8a8a9a9a9a9a9a9a8a8a8a8a7a7a6a6a5a4a4a3a2a13443a1a1
                   ......
               ..............
             ..................
           oooooooooooooooooooooo
          oooooooooooooooooooooooo
   00    000000000000000000000000000    00
  0000  00000000000000000000000000000  0000
  XXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  XXXX                                 XXXX

गोल्डन गेट ब्रिज / सिस्को लोगो

a2a0a0a4a0a06a0a0a4a0a0a2a0a0a4a0a06a0a0a4a0a0a2



      o           o
      o           o
   0  0  0     0  0  0
   0  0  0     0  0  0
X  X  X  X  X  X  X  X  X
X  X  X  X  X  X  X  X  X
      X           X

वैसे शानदार सवाल!


महान स्मारक! :)
गैब्रिएल डी’अटन

5

C64 बेसिक, 276 PETSCII चार्ट

मेरा खुद का समाधान, 276 चार्ट और बुनियादी V2.0 की 10 लाइनों के लिए नीचे गोल्फ!

0inputa$:dIc$(10):fOi=0to9:rE c$(i):nE:fOr=0to9
1z=1
2c=aS(mI(a$,z,z+1))
3ifc>57tHgO8
4ifc>=57-r tH?c$(9-r);:gO6
5?" ";
6z=z+1:ifz<=len(a$)gO2
7?:nE:eN
8z=z+1:w=aS(mI(a$,z,z+1)):ifw>=57-r aNc<=73-r tH?c$(9-r);:gO6
9?" ";:gO6:dA"x","x","x","o","o","W","W",".",".","."

(परिणाम देखने के लिए एक एमुलेटर में कॉपी और पेस्ट करें)।

और अंत में, मेरा पसंदीदा स्मारक, ब्रुकलिन ब्रिज :)

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


5

सी, 130 126 चार

प्रतियोगिता की तुलना में किंडा लंबी है, लेकिन मैं भाषा को दोष देता हूं ...

char*p,b[99];r=10,q;main(o){for(gets(&b);r--;puts(""))
for(p=b;q=*p++;)o=q<60?putchar("XXXOOoo... "[o<r&r<q-47?r:10]),-1:q-97;}

मुझे पसंदीदा इमारत के बारे में नहीं पता है , लेकिन यहां के आसपास के अधिक पहचान योग्य लोगों में से एक ग्लोबेन है , इसलिए यहां इसका खराब प्रतिपादन है।

% ./a.out <<<24556667777776665542


       ......       
    oooooooooooo    
  oooooooooooooooo  
 OOOOOOOOOOOOOOOOOO 
 OOOOOOOOOOOOOOOOOO 
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX

आप एक वर्ण को काट सकते हैं, char b[99],*p;ताकि वह पढ़े जाने के घोषणा क्रम को बदल सके char*p,b[99];। इसके अलावा यह putsनई लाइन को प्रिंट करने के लिए उपयोग करने के लिए छोटा हो सकता है ।
C0deH4cker

@ C0deH4cker अच्छा है, धन्यवाद! वह मुझे चार वर्ण बचाता है।
फायरफली

@ फ्रेंडल ओह, मेरा यह मतलब बिल्कुल नहीं था कि यह सिर्फ इतना है कि मुझे पता है कि मैं अपनी पसंदीदा इमारत पर क्या विचार करूंगा। : पी
फायरफली

3

एपीएल ( 69 66)

' XXXOOoo...'[1+⌽⍉⌽↑{z×(z<' abc'⍳⍵)<(1+⍎⍺)≥z←⍳10}/↑2↑¨I⊂⍨⎕D∊⍨I←⌽⍞]

उदाहरण:

      'XXXOOoo ...' [1 + OO × {z × (z <'abc'⍳⍵) <(1 + ≥) ⍎⍺z ← }10} / ↑ 2 ¨ ⊂⍨⎕I⊂⍨⎕D' मैं ← ⌽⍞]
0804023324554233204080

 । ।
 । ।
 ऊ 
 ओ ओ ओ ओ 
 ऊ ऊ ऊ ऊ 
 ऊ ऊ ऊ ऊ ऊ 
 XX XXXXXXXXXXXX XX 
 XX XXXXXXXXXXXX XX 
XXXXXXXXXXXXXXXXXXXXXX

      'XXXOOoo ...' [1 + OO × {z × (z <'abc'⍳⍵) <(1 + ≥) ⍎⍺z ← }10} / ↑ 2 ¨ ⊂⍨⎕I⊂⍨⎕D' मैं ← ⌽⍞]
011a2b3b5c9c9b5b3a2110
      ..      
      ..      
      ..      
      ऊ      
     oooo     
     OOOO     
    oooooo    
   XXX XXX   
 XXX XXX 
XXX XXX

मैं एपीएल को बहुत अच्छी तरह से नहीं जानता, लेकिन क्या आप सुनिश्चित हैं कि आपको 'XXXOOoo ...' स्ट्रिंग की शुरुआत में जगह की आवश्यकता है?
गैब्रिएल डी'अनटन

@ फ्रेंडोल: हाँ, यह "खाली" स्थान भरने के लिए उपयोग किया जाता है
मेरिनस



2

PHP ,131 114 बाइट्स

for($b=10;$b--;print"
")foreach(str_split($argn)as$a)$c=strpos(' abc',$a)?:!print$a<$b|$b<$c?' ':'XXXOOoo...'[$b];

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

$ echo 2479742|php -nF land.php 
   . 
   . 
  ... 
  ooo 
  ooo 
 OOOOO 
 OOOOO 
XXXXXXX 
XXXXXXX 
XXXXXXX 


$ echo 011a2b3b5c9c9b5b3a2110|php -nF land.php 
      .. 
      .. 
      .. 
      oo 
     oooo 
     OOOO 
    OOOOOO 
   XXX  XXX 
 XXX      XXX 
XXX        XXX 


$ echo a2a0a0a4a0a06a0a0a4a0a0a2a0a0a4a0a06a0a0a4a0a0a2|php -nF land.php 



      o           o 
      o           o 
   O  O  O     O  O  O 
   O  O  O     O  O  O 
X  X  X  X  X  X  X  X  X 
X  X  X  X  X  X  X  X  X 
      X           X


1

05AB1E (विरासत) , 34 बाइट्स

Rvy.ïi"XXXOOoo..."y>£ëðAykÝǝ])ζRí»

2 बाइट्स को बचाने के लिए 05AB1E की विरासत संस्करण का उपयोग करता है, क्योंकि ζयह पात्रों की सूची के बजाय स्ट्रिंग्स पर भी काम करता है।

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

स्पष्टीकरण:

R                  # Reverse the (implicit) input-string
 v                 # Loop `y` over each character:
  yi             #  If `y` is a digit:
      "XXXOOoo..." #   Push string "XXXOOoo..."
        y        #   And only leave the first `y`+1 characters as substring
     ë             #  Else (`y` is a letter):
       Ayk         #   Get the index of `y` in the lowercase alphabet
          Ý        #   Create a list in the range [0, alphabet-index]
      ð    ǝ       #   Replace in the string at the top of the stack the characters at
                   #   those indices with a space
 ]                 # Close the if-else statement and loop
  )                # Wrap all strings on the stack into a list
   ζ               # Zip/transpose; swapping rows/columns
    Rí             # Reverse this list, as well as each individual line
      »            # And join the strings by newlines
                   # (after which the result is output implicitly)

मेरे पसंदीदा 'भवन' के लिए, आइए इस पेड़ के साथ चलें। ;)

b2b3b4b5b6b7898b7b6b5b4b3b2

       .       
      ...      
     .....     
    ooooooo    
   ooooooooo   
  OOOOOOOOOOO  
 OOOOOOOOOOOOO 
XXXXXXXXXXXXXXX
      XXX      
      XXX      

1

जाप -R , 36 बाइट्स

óȦnãÒXÌ î"XXXOOoo..."hSpXÎnD)s9Ãz3

कोशिश करो

óȦnãÒXÌ î"..."hSpXÎnD)s9Ãz3     :Implicit input of string
ó                                 :Partition at
 È                                :Characters that return true when passed through the following function
  ¦                               :  Test for inequality with
   n                              :  Convert to number
    Ã                             :End function
     £                            :Map each X
      Ò                           :  Bitwise increment
       XÌ                         :  Last character of X
          î                       :  Slice the following to that length
           "..."                  :    Literal string
                h                 :    Replace as many characters as necessary at the start of that string with
                 S                :      Space
                  p               :      Repeat
                   XÎ             :        First character of X
                     n            :        Convert from base
                      D           :        14
                       )          :      End repeat
                        s9        :      Slice off the first 9 characters
                          Ã       :End map
                           z3     :Rotate clockwise by 90 degrees 3 times
                                  :Implicit output, joined by newlines
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.