साइनसोइडल टेक्स्ट


30

लक्ष्य: एक प्रोग्राम या फ़ंक्शन लिखें जो एक साइनसॉइडल आकार में एक इनपुट स्ट्रिंग प्रिंट करता है।

ASCII साइनसोइड

यहाँ साइनसॉइड की एक अवधि है:

         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         

ध्यान दें कि प्रत्येक स्तंभ पर एक ही बिंदु है।

  • इनपुट स्ट्रिंग में प्रत्येक वर्ण बाएं से दाएं, ऊपर आकार में एक डॉट को प्रतिस्थापित करेगा।
  • इनपुट में स्पेस को डॉट के स्थान पर सामान्य अक्षरों की तरह आउटपुट करना होता है।
  • शुरुआती चरित्र ऊपर की आकृति में सबसे बाईं डॉट से मेल खाती है।
  • यह केवल एक अवधि है, इनपुट ऊपर दिए गए डॉट्स की संख्या से अधिक हो सकते हैं।

इनपुट

  • इनपुट ASCII तार होते हैं जिनमें केवल ASCII दशमलव 32 (स्थान) और ASCII दशमलव 126 (टिल्डर ~) के बीच के अक्षर होते हैं।
  • इनपुट हमेशा केवल एक लाइन (कोई लाइनब्रेक) नहीं होंगे।
  • इनपुट को एसटीडीआईएन, फंक्शन पैरामीटर्स, कमांड लाइन आर्ग्युमेंट्स या कुछ भी समान के माध्यम से लिया जा सकता है।

उत्पादन

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

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

  • इनपुट: .................................................

आउटपुट:

         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         
  • इनपुट: Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.

आउटपुट:

         ng Puzz                                         ion and                                         siasts                                          stratio           
      mmi       les                                   est        an                                   thu       and                                   egi       n r        
    ra              &                               qu             sw                               en              c                                r             eq      
   g                                                                 e                                               o                             o                 u     
  o                   C                           a                   r                           e                   d                           n                   i    
 r                     o                                                                         l                     e                                               r   
P                       d                       s                       s                       z                                               ,                       e  
                         e                     i                         i                     z                         g                     e                         d 
                                                                          t                   u                           o                   e                           .
                           G                 e                             e                 p                             l                 r                             
                            ol             ng                                f             g                                fe              f                              
                              f S       cha                                   or        min                                   rs.       00%                                
                                 tack Ex                                         program                                          It's 1                                   
  • इनपुट: Short text.

आउटपुट:

         t.
      tex  
    t      
   r       
  o        
 h         
S          
  • इनपुट: The quick brown fox jumps over the lazy dog

आउटपुट:

          brown                            
      ick       fox                        
    qu              j                      
                     u                     
  e                   m                    
 h                     p                   
T                       s                  

                          o                
                           v               
                            er             
                               th       dog
                                 e lazy    

स्कोरिंग

यह , इसलिए बाइट्स जीत में सबसे छोटा कार्यक्रम या कार्य है।


यह वही है जो मैं सोच रहा था
बीटा डेके

ओह, मैं देख रहा हूं कि यह वास्तव में कुछ इसी तरह का है।
१२:५२ पर

संयोग से, आपकी लहर काफी साइनसोइडल नहीं है । (स्वाभाविक रूप से मैंने sinइसे फिर से शुरू करने के लिए एक फ़ंक्शन का उपयोग करने की कोशिश की, लेकिन स्थिति थोड़ी दूर हैं।)
डेविड जेड

@ डेविड मुझे आश्चर्यचकित नहीं करता है, मैंने ASCII आकार को देखा। क्या आप स्तंभों में किसी भी "गैप" के बिना कुछ साइनसोइडल भी प्राप्त कर सकते हैं (यानी प्रति स्तंभ एक बिल्कुल)?
घातक

4
मैंने एक दो मिनट बिताए जो कि टेस्ट केस 2 के आउटपुट पर स्क्रॉल बार को आगे-पीछे करते हुए वास्तव में तेजी से आगे बढ़ते हुए अपना मनोरंजन करता है।
mbomb007

जवाबों:


7

पायथ, 59 बाइट्स (57 अक्षर)

Xjb.sC.>V+R*12\ Xz\ C9*+-L12K+JsM._+6jC\཈2tP_JKlz]*dlzC9d

प्रदर्शन।

एक बाइनरी लुकअप टेबल अंदर एन्कोडेड है , जिसका मूल्य 3912 है। यह बाइनरी में परिवर्तित होता है, दे रहा है [1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0]। इसे लगातार ऊंचाइयों के बीच अंतर के रूप में माना जाता है। एक 6 को जोड़कर, सभी उपसर्गों को बनाने और प्रत्येक को इसकी राशि में मैप करने से, लहर की पहली तिमाही उत्पन्न होती है।

sM._+6jC\཈2[6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12]ऊपर वर्णित के रूप में मूल्यांकन करता है। फिर, कोड तरंग के पहले आधे भाग को बनाने के लिए इस स्ट्रिंग के पीछे की ओर भागता है, और फिर इसे 12 से घटाकर संपूर्ण तरंग देता है।

फिर, हम प्रत्येक इनपुट चरित्र की पंक्तियों को बनाते हैं, जिसके बाद 12 स्थान होते हैं। यह रेखा उस स्थान के अनुरूप तरंग ऊंचाई पैरामीटर द्वारा दाईं ओर घुमाई जाती है, और फिर लाइनों को ट्रांसप्लान्ट किया जाता है और नए सिरे से जुड़ता है।

फिर, हम खाली लाइनों के प्रमुख और अनुगामी को छीन लेते हैं। हालाँकि, हम रिक्त या प्रमुख लाइनों को पीछे नहीं हटा सकते हैं जिनके पास इनपुट से रिक्त स्थान हैं। यह टैब के साथ इनपुट में रिक्त स्थान को बदलकर लागू किया जाता है ( C9), जो इनपुट में नहीं हो सकता, रिक्त लाइनों को अलग करना और टैब को वापस रिक्त स्थान में बदलना।


16 बाइट की कीमत पर @FryAmTheEggman फिक्स्ड।
isaacg

12

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

l=map(int,"654322111%08d1122345"%1);l+=[12-c for c in l]
def f(t):
 h=len(t);o=bytearray(' '*h+'\n')*13;i=0
 for c in t:o[i-~h*l[i%48]]=c;i+=1
 print o[:-1]

व्याख्या

  • पूरा कोड बस रिक्त स्थान बनाता है ( o) और इनपुट के अक्षरों के साथ सही स्थान बदलता है t

  • चर lऊपर से ऑफसेट की एक सूची संग्रहीत करता है। ताकि nवें चरित्र tलाइन पर होना चाहिए l[n]

  • बाइट्रियर oएक उत्परिवर्ती स्ट्रिंग के रूप में कार्य करता है, क्योंकि स्ट्रिंग अजगर में अपरिवर्तनीय हैं।

  • -~hके रूप में ही है, h+1लेकिन अंतरिक्ष बचाता है क्योंकि मैं कोष्ठक की जरूरत नहीं है।


7

जावा, 219 209 199 बाइट्स

void p(char[]s){int r=6,c;String t="";for(;r>-7;r--,t+='\n')for(c=0;c<s.length;c++)t+=(s(c%48)==r?s[c]:' ');System.out.println(t);}int s(int a){return a<4?a:a<6?4:a<9?5:a<15?6:a<24?s(24-a):-s(a-24);}

मैं अभी भी यहां नौसिखिया हूं, और आशा करता हूं कि यह उप-फ़ंक्शन (जब इस फ़ंक्शन के बाइट्स की गणना की जाती है, तो) को लागू करना नियमों के अनुरूप है। यदि नहीं, तो मैं sinफ़ंक्शन को कुछ चालाक सरणी लुकअप में बदलने का प्रयास करूंगा ...

public class SinusText
{
    public static void main(String[] args)
    {
        SinusText s = new SinusText();
        s.p(".................................................".toCharArray());
        s.p("Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.".toCharArray());
        s.p("Short text.".toCharArray());
        s.p("The quick brown fox jumps over the lazy dog".toCharArray());
    }
    void p(char[]s){int r=6,c;String t="";for(;r>-7;r--,t+='\n')for(c=0;c<s.length;c++)t+=(s(c%48)==r?s[c]:' ');System.out.println(t);}int s(int a){return a<4?a:a<6?4:a<9?5:a<15?6:a<24?s(24-a):-s(a-24);}
}

1
कुछ स्ट्रिंग-आधारित चुनौतियों के लिए यह भी बचाता है यदि आप इनपुट को एक के रूप में लेते हैं char[]। यहाँ, यह से छुटकारा पाने चाहते हैं ()पर lengthऔर खत्म करने charAt()और साथ ही। अगर मैं इसे सही पढ़ रहा हूं, तो आप एक जोड़े को बचाने के print()बजाय इसका उपयोग भी कर सकते हैं println()
जोबिट्स

@Geobits ये स्वतंत्रता की डिग्री हैं जिनके बारे में मुझे जानकारी नहीं थी। कार्य विवरण एक "स्ट्रिंग" के बारे में बात करता है, इसलिए मैंने सोचा कि इसे संबंधित भाषा का "स्ट्रिंग प्रतिनिधित्व" होना चाहिए। ...
मार्को 13

हाँ, मैंने कुछ समय पहले मेटा के बारे में पूछा था। यहां संदर्भ के लिए एक लिंक दिया गया है: meta.codegolf.stackexchange.com/q/2214/14215
जियोबिट्स

धन्यवाद, यह 209 है। (शायद मैं कुछ और बाइट्स को बाद में निचोड़ने की कोशिश करूंगा। "पाप" फ़ंक्शन अभी भी बहुत अधिक लगता है ...)
मार्को 13

1
हम्म, एक बड़ा सुधार नहीं है, लेकिन आप पूरी चीज़ को माप कर 10 काट सकते हैं मापांक 48. अंत को बदलें ...a<24?s(24-a):-s(a-24);और इसे कॉल करें s(c%48)
जॉय

4

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

$n[$_%13].=substr$l[$_/13],$_%13,1for 0..13*(@l=map{(map{sprintf"%013b",$_}@t=(64,128,256,512,(1024)x2,(2048)x3),(4096)x7,reverse@u=(32,16,8,4,4,2,2,2),(1)x7,(reverse@u),@t)[$-++%48]=~s/./$&?$_:$"/egr}<>=~/./g);$,=$/;say@n

के लिए आवश्यक -Eहै say, पदों को बाइनरी संख्याओं के लिए डाली गई पूर्णांक के रूप में संग्रहीत करता है और सरणी का फ़्लिपिंग संभवतः बहुत कुशल बाइट्स-वार नहीं है। इसके अलावा, मुझे यकीन है कि बचत करने के लिए बहुत कुछ है, इसलिए मैं प्रहार और प्रहसन करता रहूंगा।

उदाहरण आउटपुट:

$perl -E '$n[$_%13].=substr$l[$_/13],$_%13,1for 0..13*(@l=map{(map{sprintf"%013b",$_}@t=(64,128,256,512,(1024)x2,(2048)x3),(4096)x7,reverse@u=(32,16,8,4,4,2,2,2),(1)x7,(reverse@u),@t)[$-++%48]=~s/./$&?$_:$"/egr}<>=~/./g);$,=$/;say@n' <<< '.................................................'
         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         

$perl -E '$n[$_%13].=substr$l[$_/13],$_%13,1for 0..13*(@l=map{(map{sprintf"%013b",$_}@t=(64,128,256,512,(1024)x2,(2048)x3),(4096)x7,reverse@u=(32,16,8,4,4,2,2,2),(1)x7,(reverse@u),@t)[$-++%48]=~s/./$&?$_:$"/egr}<>=~/./g);$,=$/;say@n' <<< 'Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It'\''s 100% free, no registration required.'
         ng Puzz                                         ion and                                         siasts                                          stratio           
      mmi       les                                   est        an                                   thu       and                                   egi       n r        
    ra              &                               qu             sw                               en              c                                r             eq      
   g                                                                 e                                               o                             o                 u     
  o                   C                           a                   r                           e                   d                           n                   i    
 r                     o                                                                         l                     e                                               r   
P                       d                       s                       s                       z                                               ,                       e  
                         e                     i                         i                     z                         g                     e                         d 
                                                                          t                   u                           o                   e                           .
                           G                 e                             e                 p                             l                 r                             
                            ol             ng                                f             g                                fe              f                              
                              f S       cha                                   or        min                                   rs.       00%                                
                                 tack Ex                                         program                                          It's 1                                   

3

जावास्क्रिप्ट, 251 243 224 220 217

वास्तव में सरल कार्यान्वयन: यह लहर पर प्रत्येक चरित्र की y-स्थिति (ऑफसेट द्वारा a, जो कि ASCII कोड 97 है) का प्रतिनिधित्व करने के लिए वर्णों की एक स्ट्रिंग का उपयोग करता है । यह तब सभी संभावित पंक्तियों के माध्यम से पुनरावृति करता है; यदि वर्तमान पंक्ति का y- मान तरंग पर y-स्थिति के समान है, तो यह स्ट्रिंग से एक वर्ण लिखता है। पंक्ति को हटाने के लिए अंत में एक सफाई भी है अगर यह पूरी तरह से खाली हो गया।

ध्यान दें कि alert()विंडो में आउटपुट विस्की दिखाई देगा यदि यह एक मोनोसैप्ड फ़ॉन्ट का उपयोग नहीं कर रहा है, तो आप console.log()आउटपुट को सही करने के लिए इसे सत्यापित करने के लिए बदल सकते हैं ।

s=prompt(o=[])
for(y=i=0;y<13;++y){o[i]=""
for(x=0;x<s.length;++x)o[i]+=y=="gfedccbbbaaaaaaabbbccdefghijkklllmmmmmmmlllkkjih".charCodeAt(x%48)-97?s[x]:" "
if(o[i++].trim().length<1)o.splice(--i,1)}
alert(o.join("\n"))

EDIT1: ++और --मौजूद है।

EDIT2: ब्लैंक लाइन हटाने को अब बाकी लूप के रूप में किया जाता है, जिससे 17 अक्षर बचते हैं। अतिरिक्त 2 वर्णों के लिए उन कोष्ठकों की आवश्यकता नहीं थी।

EDIT3: तरंग को 4 वर्णों को बचाने के लिए एक चर के रूप में घोषित करने की आवश्यकता नहीं है।

EDIT4: जैसा कि टिप्पणियों में डॉम हेस्टिंग्स ने कहा है, बाइट काउंट में कैरिज रिटर्न के साथ-साथ न्यूलाइन कैरेक्टर भी शामिल था, कैरिज रिटर्न को बाहर करने के लिए सभी संशोधनों के लिए बाइट काउंट को अपडेट किया।

EDIT5: डोम हेस्टिंग्स के सौजन्य से 3 बाइट्स बचाए गए। मैंने o.spliceफिक्स को लागू नहीं किया है क्योंकि यह रिक्त लाइनों (मेरे अंत में, कम से कम) को हटाने में विफल रहता है।


1
अच्छा काम! कुछ स्थानों पर आप कुछ और बाइट्स बचा सकते हैं: बदलें: if(o[i++].trim().length<1)o.splice(--i,1)साथ o.splice(i-(t=!o[i++].match(/\s/)),t), -4 के लिए s=prompt() o=[]:, s=prompt(o=[])-1 और for(y=0,i=0;y<13;++y){o[i]=""साथ for(y=i=0;y<13;++y){o[i]="", -2। यह संभव है कि आपके लूप के लिए भी संयोजन करें और अधिक सहेजने के लिए ... एक आखिरी बात, यह ध्यान देने योग्य है कि मेरे पास आपके वर्तमान बाइट काउंट के लिए केवल 220 है, इसलिए आपके 225 के \r\nबजाय विंडोज़ हो सकते हैं , \nजो मुझे लगता है कि आप इसे अनदेखा कर सकते हैं। (कृपया मुझे सही करें अगर मैं गलत हूँ) ...
डोम हेस्टिंग्स

गाड़ी की वापसी पर अच्छी पकड़! अगली बार मैं नोटपैड ++ पर इतना भरोसा नहीं करूंगा :)
सीन लैथम

मुझे लगता है कि मैंने इसे घटाकर 166 कर दिया है। क्या कोई और सत्यापित कर सकता है? मैंने पूरे कार्यक्रम में सरणी व्यवहार को लॉग में बदल दिया। मैंने एक if स्टेटमेंट के बजाय शॉर्ट सर्किट का इस्तेमाल किया, और लूप के लिए पहले के अंत में लॉग लगाकर कोष्ठक से छुटकारा पाया। for(s=prompt(),y=0;y<13;y++,v.trim()&&console.log(v))for(v="",x=0;x<s.length;x++)v+=y=="gfedccbbbaaaaaaabbbccdefghijkklllmmmmmmmlllkkjih".charCodeAt(x%48)-97?s[x]:" "
वर्तन

घटाव के साथ मिथ्या शून्य का उपयोग करना == घटाव के साथ, ११५:५१ पर १६५ चार for(s=prompt(y=0);y<13;y++,v.trim()&&console.log(v))for(v="",x=0;x<s.length;x++)v+="gfedccbbbaaaaaaabbbccdefghijkklllmmmmmmmlllkkjih".charCodeAt(x%48)-97-y?" ":s[x]
वर्तन

मुझे अपनी टिप्पणी से इसे चिपकाने में परेशानी हो रही है, इसलिए पास्टबिन bit.ly/1VQgGXw 217-> 166 = 76% के साथ
पाषाण काल

3

मतलाब, 133 , 130 बाइट्स

एक लाइनर:

s=input('');y=ceil(5.6*sin(0:pi/24:pi-.1).^.9);l=[-y y]+7;n=numel(s);t=repmat(' ',13,n);for k=1:n;t(l(mod(k-1,48)+1),k)=s(k);end;t

और विस्तारित संस्करण:

function f(s)
    y=ceil(5.6*sin(0:pi/24:pi-.1).^.9);l=[-y y]+7;  %// calculate the line number for each column position
    n=numel(s);                                     %// number of character in input
    t=repmat(' ',13,n);                             %// Create a blank canvas of whitespace characters
    for k=1:n
        t(l(mod(k-1,48)+1),k)=s(k);                 %// place each input character where it should be
    end
    t                                               %// force the output display

एक लाइनर कंसोल से इनपुट लेता है ( stdin) और 130 बाइट्स है। विस्तारित संस्करण कंसोल इनपुट को फ़ंक्शन परिभाषा (+1 बाइट) द्वारा प्रतिस्थापित करता है, लेकिन लूप में परीक्षण मामले के लिए उपयोग करने के लिए बहुत अधिक आरामदायक है:


विवरण:

प्रत्येक वर्ण के लाइन इंडेक्स की गणना एक आधा अवधि के लिए की जाती है, फिर एक पूर्ण अवधि के लिए मिरर की जाती है।
हम व्हाट्सएप चरित्र की एक रिक्त पृष्ठभूमि बनाते हैं (इनपुट स्ट्रिंग जितनी ही लंबाई। हम प्रत्येक अक्षर को प्रासंगिक पंक्ति में उसकी स्थिति के अनुसार रखते हैं। यदि इनपुट स्ट्रिंग एक अवधि से अधिक है, तो mod(modulo) ऑपरेटर को लपेटता है ताकि हम दान न करें। ' टी लाइन नंबर का अनुरोध करने पर बंधे से बाहर हो जाते हैं।


परीक्षण का मामला:

फ़ंक्शन संस्करण textsine.mको अपने पथ के अंतर्गत सहेजें , फिर चलाएँ:

s = {'.................................................';...
    'Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It''s 100% free, no registration required.';...
    'Short text.';...
    'The quick brown fox jumps over the lazy dog'};

for txtcase=1:4
    textsine(s{txtcase,1})
end

उत्पादन होगा:

t =

         .......                                 
      ...       ...                              
    ..             ..                            
   .                 .                           
  .                   .                          
 .                     .                         
.                       .                       .
                         .                     . 
                          .                   .  
                           .                 .   
                            ..             ..    
                              ...       ...      
                                 .......         


t =

         ng Puzz                                         ion and                                         siasts                                          stratio           
      mmi       les                                   est        an                                   thu       and                                   egi       n r        
    ra              &                               qu             sw                               en              c                                r             eq      
   g                                                                 e                                               o                             o                 u     
  o                   C                           a                   r                           e                   d                           n                   i    
 r                     o                                                                         l                     e                                               r   
P                       d                       s                       s                       z                                               ,                       e  
                         e                     i                         i                     z                         g                     e                         d 
                                                                          t                   u                           o                   e                           .
                           G                 e                             e                 p                             l                 r                             
                            ol             ng                                f             g                                fe              f                              
                              f S       cha                                   or        min                                   rs.       00%                                
                                 tack Ex                                         program                                          It's 1                                   


t =

         t.
      tex  
    t      
   r       
  o        
 h         
S          








t =

          brown                            
      ick       fox                        
    qu              j                      
                     u                     
  e                   m                    
 h                     p                   
T                       s                  

                          o                
                           v               
                            er             
                               th       dog
                                 e lazy    

यदि आप इनपुट के साथ एक लाइनर संस्करण का परीक्षण करना चाहते हैं stdin, तो आपके इनपुट को एक एकल के रूप में दर्ज किया जाना है string, इसलिए आपको 'वर्णों के बीच अपने इनपुट को संलग्न करना होगा । उदाहरण:

'Short text.'   %//   valid input
Short text.     %// INVALID input

Luis Mendo3 बाइट्स शेविंग के लिए धन्यवाद ;-)


@LuisMendo, बचाए गए 3 बाइट्स के लिए धन्यवाद :-)। मैंने बताया कि कैसे एक उचित स्ट्रिंग इनपुट करने के लिए इतना सरल s=input('');अभी भी काम करेगा।
होकी

2

स्कला 377 वर्ण

पहला मोड़। शायद अनुवाद xकरने के लिए एक बेहतर सूत्र मिल सकता हैy

(s:String)⇒s.zipWithIndex.map(t⇒(t._1,t._2,t._2%48 match{
case i if i<5⇒6-i
case 5|19⇒2
case 6|7|8|16|17|18⇒1
case i if i<16⇒0
case i if i<29⇒i%20+2
case 29|43⇒10
case 30|31|32|40|41|42⇒11
case i if i<40⇒12
case i if i>43⇒10-i%44
})).groupBy(_._3).toSeq.map{case(y,xs)⇒(""→0/:xs.sortBy(_._2)){case((p,l),(c,x,_))⇒(p+" "*(x-l-1)+c)→x}._1→y}.sortBy(_._2).map(_._1).mkString("\n")

1

आम लिस्प, 205 बाइट्स

(lambda(s &aux p v o)(dotimes(r 13)(setf o 0 p v v(round(*(/ 24 pi)(+(asin(-(/ r 6)1))pi))))(when p(map()(lambda(c)(princ(if(some(lambda(k)(<= p(mod k 48)(1- v)))`(,o,(- 23 o)))c" "))(incf o))s)(terpri))))

टेस्ट

Http://pastebin.com/raw.php?i=zZ520FTU देखें

टिप्पणियों

आउटपुट लाइन को लाइन से प्रिंट करें, स्ट्रिंग्स में सूचकांकों की गणना करें जो उलटा साइन फ़ंक्शन का उपयोग करके मुद्रित किया जाना चाहिए asin। आउटपुट प्रश्न में अपेक्षित इनपुट से मेल नहीं खाता है, लेकिन जब से ओपी स्वीकार करता है कि उदाहरण आउटपुट वास्तविक साइन नहीं हैं, मुझे लगता है कि यह ठीक है। कम से कम, प्रत्येक कॉलम के लिए हमेशा केवल एक वर्ण लिखा जाता है।


1

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

यह एलेक्स एल के उत्तर के रूप में अच्छा नहीं है , लेकिन यह बहुत करीब है। मानक इनपुट से इनपुट लेता है और एक .pyफ़ाइल में सबसे अच्छा काम करता है ।

l=map(int,bin(9960000)[2:]);l+=[-c for c in l];s=6;o=[];i=9
for c in raw_input():b=[' ']*13;b[s]=c;o+=[b];s+=l[i%48];i+=1
print''.join(sum(zip(*o+['\n'*13])[::-1],())[:-1])

मैंने आउटपुट ट्रांसपोज़्ड (प्रत्येक स्तंभ एक पंक्ति है) का निर्माण करने का निर्णय लिया और फिर परिणाम को स्थानांतरित कर दिया, क्योंकि अजगर में मैट्रिक्स का संक्रमण होता है map(*m)

  • l: के द्विआधारी प्रतिनिधित्व 9960000(बंद काटना के बाद "0b"से bin) है 100101111111101001000000। यह सबसे कम बिंदु के बहुत अंतिम चरित्र पर शुरू होने वाले प्रत्येक कॉलम में साइन वेव का "स्टेप" है। मैं इस सूची की प्रतिलिपि बनाता हूं, प्रत्येक संख्या को नकारता हूं, और इसे स्वयं ही समाप्त करने के लिए कार्य करता हूं जो प्रभावी रूप से फ़ंक्शन का व्युत्पन्न है।
  • s: यह वह चर है जो अगले पंक्ति में किस पंक्ति (स्तंभ में स्तंभ) पर नज़र रखता है।
  • o: अंतिम आउटपुट, ट्रांसपोज़्ड
  • i: साइन लहर अवधि का ट्रैक रखता है। 9 से शुरू होता है क्योंकि lथोड़ा स्थानांतरित कर दिया जाता है।

में forपाश, मैं 13 रिक्त स्थान (मैं bytearrays लेकिन पात्रों की सूची से बाहर कर देते हैं एक छोटे प्रिंट बयान के लिए उपयोग कर रहा था) की एक सूची बना, तो बदलने के sइनपुट चरित्र के साथ वें चरित्र। bके अंत में संलग्न करें , और वृद्धि के oलिए उचित कदम जोड़ें ।si

मुझे उम्मीद थी कि printबयान उतना ही सरल होगा \n'.join(*zip(o)), लेकिन ऐसा कोई भाग्य नहीं है। zip(*o+['\n'*13])[::-1]नई कथानकों का एक कॉलम जोड़ता है और फिर उलट कर पूरी चीज़ को स्थानांतरित करता है (उलट-पलट के बिना, साइन वेव उल्टा होता है), sum(...,())एक साथ ट्यूपल को वर्णों के एक समूह में समेटता है, और फिर ''.join(...)पात्रों को समेटता है और प्रिंट करता है।

मैंने जिन अन्य चीजों की कोशिश की, उनमें १२-कैरेक्टर का एक स्थान बनाया गया था और नए चरित्र को उचित स्थान पर सम्मिलित किया गया था, और l+=[-c for c in l];किसी प्रकार के गुणा के साथ 1और -1अनुक्रमण के परिणाम के साथ कुछ प्रकार के गणित के साथ प्रतिस्थापित किया गया था l, लेकिन मैं कुछ भी नहीं कर सका। छोटे होने के साथ समाप्त हो गया।


0

गणितज्ञ, 131 बाइट्स

i=[input string];c=Characters@i;l=Length@c;StringJoin@Riffle[StringJoin@@@SparseArray[Table[{7-Round[6 Sin[.13(x-1)]],x},{x,l}]->c,{13,l}," "],"\n"]

यह 131 अक्षर हैं, जिनमें तीनों शामिल हैं i=foo;। यह इनपुट लेने का एक उचित तरीका लग रहा था; मैं इसे सीधे परिभाषा में रख सकता था cऔर कुछ स्ट्रोक बचा सकता था, लेकिन यह अनुचित लगता है।

यह बहुत सीधा है - लगभग पठनीय भी। यह स्ट्रिंग को वर्णों की सूची में विभाजित करता है, और फिर उन वर्णों को एक स्थान से निर्धारित पदों पर एक विरल सरणी में रखता है Table(किसी स्थान में किसी स्थान को वर्ण चूक नहीं दिया गया है)। लाइनों को अलग-अलग इकट्ठा किया जाता है, फिर उनके बीच नई किस्में छिड़ जाती हैं। अंतिम StringJoin यह सब टाँके लगाता है।

एनबी: कुछ अन्य समाधानों की तरह, यह वास्तव में मान्य नहीं हो सकता है क्योंकि यह (सुंदर) दस्तकारी उदाहरण के बजाय एक वास्तविक साइनसॉइड का उत्पादन करता है।

टेस्ट:

(*i=Programming Puzzles...*)
         ng Puzz                                          on and                                          iasts                                           tration          
       mi       le                                     sti       a                                      us      and                                     is        r        
     am           s                                   e           ns                                  th            c                                 eg           eq      
    r               &                               qu              we                              en               o                               r               u     
  og                  C                                               r                                               d                            o                  ir   
 r                     o                          a                                               e                    e                          n                     e  
P                       d                       s                       si                       l                       g                                               d 
                         e                     i                          t                    zz                         o                     ,                         .
                           G                                               e                  u                            lf                 ee                           
                            o               ge                               f               p                               e               r                             
                             lf           an                                  or           g                                  rs            f                              
                                St      ch                                       p      min                                     .        0%                                
                                  ack Ex                                          rogram                                          It's 10                                  
(*i=.... ...*)
         .......                                 
       ..       ..                               
     ..           ..                             
    .               .                            
  ..                 ..                          
 .                     .                         
.                       .                       .
                         ..                    . 
                           .                  .  
                            .               ..   
                             ..           ..     
                               ...      ..       
                                  ......         
(*i= Short text.*)
         t.
       ex  
      t    
    t      
  or       
 h         
S          





(*i=The quick...*)              
          brown                            
       ck       fo                         
     ui           x                        
    q               j                      
  e                  um                    
 h                     p                   
T                       s                  
                          o                
                           v               
                            e              
                             r            g
                               the      do 
                                   lazy    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.