ASCII डंक सितारा


10

इनपुट विवरण

एक स्ट्रिंग (सर्वोत्तम परिणामों के लिए, सभी वर्णों को मुद्रण योग्य होना चाहिए और समान चौड़ाई होना चाहिए)।

आउटपुट विवरण

पैटर्न के बाद एक चरित्र सितारा:

0  0  0
 1 1 1 
  222  
0123210
  222  
 1 1 1 
0  0  0

कहाँ 0, 1... स्ट्रिंग के बाद के अक्षर हैं। आउटपुट के लिए एक तार होना जरूरी नहीं है - स्टार चार को कंसोल में प्रिंट करना ठीक है।

उदाहरण

>> star('overflow')
>>
o      o      o
 v     v     v 
  e    e    e  
   r   r   r   
    f  f  f    
     l l l     
      ooo      
overflowolfrevo
      ooo      
     l l l     
    f  f  f    
   r   r   r   
  e    e    e  
 v     v     v 
o      o      o

मुझे लगता है कि "एक स्ट्रिंग" थोड़ी अधिक स्पष्ट होनी चाहिए, क्या आपका मतलब है कि एक स्ट्रिंग जिसमें केवल मुद्रण योग्य ASCII शामिल है?
FryAmTheEggman

मुझे लगता है कि "एक स्ट्रिंग" पर्याप्त है। बेशक, सर्वोत्तम परिणामों के लिए आप शायद उन टैब या अन्य वर्णों से बचना चाहते हैं जो आउटपुट के आकार को विकृत कर देंगे, लेकिन इसका मतलब यह नहीं है कि आप उन्हें शामिल नहीं कर सकते। फिर भी, मैंने स्पष्टता के लिए विवरण को अद्यतन किया।
शुकी

3
यह कम सवाल है कि क्या यह सबसे अच्छा परिणाम देता है, लेकिन क्या इसका जवाब देना है। यदि गैर- ASCII (यूनिकोड) वर्णों को भी समर्थन किया जाना है, तो कुछ भाषाओं को कुछ अलग कोड का उपयोग करना पड़ सकता है। इसी तरह, कुछ कोड कम हो सकते हैं यदि हम यह मान सकते हैं कि unprintables दिखाई नहीं देंगे (विशेष रूप से लाइनफीड)।
मार्टिन एंडर

आप सभी वर्णों को मुद्रित कर सकते हैं या नहीं, यह अप्रासंगिक है। यदि आप अपने कोड को छोटा बना सकते हैं, भले ही यह आपको कुछ वर्णों (जैसे यूनिकोड) को प्रिंट करने से सीमित करता है, तो ऐसा ही हो। मुझे लगता है कि यह वैसे भी कोड-गोल्फ की भावना है। जब तक आपका कार्यक्रम आम पात्रों का समर्थन करता है, यह ठीक है। यदि ऐसा नहीं होता है, तो मुझे नहीं लगता कि चुनौती की विशिष्टता समस्या है।
shooqie

जवाबों:



1

पर्ल, 97 93 + 2 = 95 बाइट्स

$i=y///c-2;push@a,map{$"x$j++.$_.($"x$i--.$_)x2}/.(?!$)/g;say for@a,s/.$//r.reverse,reverse@a

-nlEझंडे की आवश्यकता है :

$ perl -nlE'$i=y///c-2;push@a,map{$"x$j++.$_.($"x$i--.$_)x2}/.(?!$)/g;say for@a,s/.$//r.reverse,reverse@a' <<< 'overflow'
o      o      o
 v     v     v
  e    e    e
   r   r   r
    f  f  f
     l l l
      ooo
overflowolfrevo
      ooo
     l l l
    f  f  f
   r   r   r
  e    e    e
 v     v     v
o      o      o

Ungolfed:

$i=y///c-2;
push @a, map{
  $" x $j++ . 
  $_ . 
  ($" x $i-- . $_)x2
} /.(?!$)/g;
say for @a, s/.$//r.reverse, reverse@a

1

गंभीरता से, 57 बाइट्स

╩╜#dXΣR;╝;lr;R3Z`i' *;(;;))@(((@)' *;)kΣ`M;R@k`'
j`Mi╛╜+@

हाँ, वह नई लाइन वहाँ रहने वाली है। हाँ, गंभीरता से अभी भी स्ट्रिंग हेरफेर पर बेकार है। Hexdump (साथ प्रतिवर्ती xxd -r):

00000000: cabd 2364 58e4 523b bc3b 6c72 3b52 335a  ..#dX.R;.;lr;R3Z
00000010: 6069 2720 2a3b 283b 3b29 2940 2828 2840  `i' *;(;;))@(((@
00000020: 2927 202a 3b29 6be4 604d 3b52 406b 6027  )' *;)k.`M;R@k`'
00000030: 0a6a 604d 69be bd2b 40                   .j`Mi..+@

इसे लिखने के बाद मैं इसे एक स्पष्टीकरण के साथ अपडेट करूंगा। यह थोड़े लंबा है।


1

ईएस 6, 153 बाइट्स

s=>[...a=(t=[...s.slice(0,-1)]).map((c,i)=>(a=Array(t.length).fill` `,a[i]=c,a.join``+c+a.reverse().join``)),s+t.reverse().join``,...a.reverse()].join`\n`

Ungolfed:

function star(s) {
    r = [];
    h = s.length - 1;
    for (i = 0; i < h; i++) {
        a = [...' '.repeat(h)];
        a[i] = s[i];
        a = a.concat(s[i]).concat(a.reverse());
        r.push(a.join(''));
    }
    return r.concat(s + [...s.slice(0,h)].reverse().join('')).concat(r.reverse()).join("\n");
}

वैकल्पिक समाधान, 153 बाइट्स:

s=>[...a=(t=[...s].reverse().slice(1)).map((c,i)=>(a=Array(l+l+1).fill` `,a[i]=a[l]=a[l+l-i]=c,a.join``),l=t.length),s+t.join``,...a.reverse()].join`\n`

Ungolfed:

function star(s) {
    r = [];
    h = s.length - 1;
    for (i = 0; i < h; i++) {
        a = [...' '.repeat(h + h + 1)];
        a[i] = s[i];
        a[h] = s[i];
        a[h + h - i] = s[i];
        r.push(a.join(''));
    }
    return r.concat(s + [...s].reverse().slice(1).join('')).concat(r.reverse()).join("\n");
}

नोट: \nअंदर `एस एक शाब्दिक newline चरित्र है।

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