एक शब्द बादल को स्थानांतरित करें


18

पृष्ठभूमि

मैं एक सुंदर शब्द बादल बनाना चाहता था, जैसे:

these    are
    words   

  floating  

मैंने (x,y)प्रत्येक शब्द के पहले अक्षर के -coordinates की गणना की , उन्हें अपने शब्द क्लाउड जनरेटर में प्लग किया, और उसे अपना काम करने दिया। हालाँकि, मैंने आकस्मिक रूप से- (y,x)निर्देश का उपयोग किया है , इसलिए परिणाम इस तरह दिखता है:

these      

   floating

 words     



are        

चूंकि मैं निर्देशांक की पुन: गणना करने के लिए बहुत आलसी हूं, इसलिए मुझे आपके लिए मेरे लिए क्लाउड शब्द को स्थानांतरित करने की आवश्यकता है।

इनपुट

आपका इनपुट ASCII अक्षरों और स्थानों के निचले सिरे का एक आयताकार ग्रिड है। इसका मतलब है कि हर पंक्ति को समान लंबाई वाले स्थानों के साथ गद्देदार किया जाता है। इनपुट को बहु-पंक्ति स्ट्रिंग या स्ट्रिंग की एक सरणी के रूप में लिया जा सकता है।

एक शब्द अक्षरों का एक क्षैतिज खंड है, और इसकी स्थिति है (x,y)इसकी सबसे बाईं ओर के पत्र, ग्रिड से किया जा रहा के ऊपरी बाएँ कोने का -coordinates (0,0)। हमेशा कम से कम एक शब्द होगा, और रिक्त स्थान की पंक्तियों या स्तंभ नहीं हैं। हालांकि, प्रमुख पंक्तियाँ या रिक्त स्थान के स्तंभ मौजूद हो सकते हैं।

उत्पादन

आपका आउटपुट पात्रों का एक और आयताकार ग्रिड है, जो हर शब्द को स्थिति (x,y)से स्थिति में ले जाकर प्राप्त करता है (y,x)। आपके आउटपुट में अतिरिक्त अनुगामी पंक्तियाँ या रिक्त स्थान के स्तंभ नहीं होने चाहिए । अग्रणी पंक्तियों और स्तंभों को संरक्षित किया जाना चाहिए, और आउटपुट आयताकार होना चाहिए

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

नियम और स्कोरिंग

आप एक पूर्ण कार्यक्रम या एक फ़ंक्शन लिख सकते हैं। सबसे कम बाइट गिनती जीतता है, और मानक खामियों को रोक दिया जाता है।

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

स्पष्टता के लिए (और चूंकि स्टैक एक्सचेंज अंतरिक्ष-केवल लाइनों को नापसंद करता है), प्रत्येक पंक्ति एक पाइप चरित्र में समाप्त होती है |ये वास्तविक इनपुट या आउटपुट का हिस्सा नहीं हैं , और आपको इन्हें हटा देना चाहिए। फिर से ध्यान दें कि प्रत्येक आउटपुट पर प्रोग्राम को चलाने से संबंधित इनपुट भी उत्पन्न होना चाहिए।

Input:
oneword|
Output:
oneword|

Input:
  spaces|
Output:
      |
      |
spaces|

Input:
   |
row|
Output:
 row|

Input:
these    are|
    words   |
            |
  floating  |
Output:
these      |
           |
   floating|
           |
 words     |
           |
           |
           |
are        |

Input:
   same|
 the   |
       |
same   |
Output:
   same|
 the   |
       |
same   |

Input:
  some |
words k|
       |
       |
       |
  still|
Output:
 words    |
          |
some still|
          |
          |
          |
 k        |

Input:
   hello   |
  world hey|
what   up  |
Output:
  what|
      |
 world|
hello |
      |
      |
      |
  up  |
 hey  |

Input:
  a b  a d cc|
 g h  huh nng|
  ye dunnn   |
    dud  yo  |
 wha   g     |
  huh heh hah|
Output:
        |
 g  wha |
a ye huh|
 h      |
b  dud  |
  dunnn |
 huh heh|
a   g   |
        |
d  yo   |
 nng hah|
cc      |

जवाबों:


7

पर्ल, 58 बाइट्स

के लिए +2 जोड़ा गया -lp

STDIN पर इनपुट दें, इस रूप में चलाएं perl -lp wordcloud.pl

wordcloud.pl:

s/\w+/$l|=$a[pos]|=$"x~-$..$&/eg}for(@a){$_|=$l=~y// /cr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.