एक स्टैक एक्सचेंज फ़ेविकॉन उत्पन्न करें


25

क्या आप पीपीसीजी लोगो को पहचानते हैं? यह इस तरह दिखता है, जब आप इसकी एक आस्की कला करते हैं।

+---+
|PCG|
+---+
   v

अब, इस कोड गोल्फ में, आप एक कोड बनाएंगे, जो पीपीसीजी लोगो के समान अन्य साइटों के लिए लोगो बनाता है।

तुम्हे क्या करना चाहिए

"छोटा" स्ट्रिंग स्ट्रिंग होगा, जिसमें इनपुट स्ट्रिंग के सभी ऊपरी अक्षर और संख्याएँ होती हैं। (जो PPCGइनपुट स्ट्रिंग के समय होगी Programming Puzzles & Code Golf)

डिब्बा" (

+---+
|   |
+---+
   v

) पूरी तरह से छोटा तार फिट होना चाहिए। (कोई बड़ा या छोटा नहीं)

इसके अलावा vभाग बिल्कुल 1 नीचे और 1 बाएं दाईं ओर होना चाहिए +

फिर उस बॉक्स को आउटपुट करें जिसमें छोटा स्ट्रिंग है।

उदाहरण

Stack Overflow:

+--+
|SO|
+--+
  v

Area 51:

+---+
|A51|
+---+
   v

नियम

आप मान सकते हैं कि इनपुट में कम से कम एक अंक या ऊपरी अक्षर है।

मानक नियम लागू होते हैं।



@MartinEnder हां, बहुत बारीकी से संबंधित, लेकिन डुप्लिकेट नहीं।

1
@MatthewRoh लिंक का उद्देश्य इतना है कि चुनौतियां साइडबार में दिखाई देती हैं, यह एक ड्यूप वोट नहीं है। उस ने कहा, मैं व्यक्तिगत रूप से अवांछित पात्रों को हटाने के बारे में सोचता हूं और ^मेरे द्वारा लिंक की गई दूसरी चुनौती की तुलना में बहुत कुछ नहीं जोड़ता है, लेकिन मैं उस पर एक दुपट्टा हथौड़ा नहीं डालूंगा, लेकिन साम्यवाद को यह तय करने दें कि वे इसे ठग मानते हैं या नहीं।
मार्टिन एंडर

4
अगर होता तो ऐसा ही 99 Bottles Of Beerहोता 99BOB

1
@MatthewRoh अपनी अभी भी छोटी गाड़ी है, मुझे देखने के बाद अगर मैं एक bf जवाब मिल सकता है
रोहन झुनझुनवाला

जवाबों:


23

विम, 42 स्ट्रोक

:s/[^A-Z0-9]//g
YPVr-i+<DOWN><LEFT>|<ESC><C-V>ky$pYjppVr $xrv

बदलें <DOWN>के साथ , <LEFT>के साथ , <ESC>के साथ escऔर <C-V>साथ CTRL+ V

यहां इस स्क्रिप्ट को चलाने का एक एनिमेशन (पुराने संस्करण का उपयोग करता Vहै v)

एनीमेशन

स्क्रिप्ट की व्याख्या:

:s/[^A-Z0-9]//g                               # Remove all the characters that are not uppercase or numbers using a Regex.
YPVr-                                         # Duplicate the current, and replace all the characters of the upper one with dashes.
     i+<DOWN><LEFT>|<ESC>                     # Insert a + on the upper line, and a | on the second line.
                         <C-V>ky$p            # Copy the + and | to the end of both lines.
                                  Yjpp        # Copy the upper line to the bottom two times.
                                      Vr $    # Replace the bottom most line with spaces and put the cursor on the last character.
                                          xrv # Remove the last character and replace the second last character with a v.

लोअरकेस वी, अपरकेस नहीं वी

एक चरित्र अधिक, लेकिन विशेष रूप से बच गए पात्रों से बचा जाता है: r | y uP ​​$ pYPVr-r + $। YjppVr $ hrV
ब्राइस वैगनर

आप एक बाइट को बचाने के i+↓←|␛␖ky$pसाथ बदल सकते हैं A+↓|␛␖ky0P
लिन

वैकल्पिक रूप से, ब्रायस के दृष्टिकोण में पहले आठ स्ट्रोक को बदलें I|<END>|␛
लिन

मुझे आश्चर्य है कि अगर यह शांत चित्र के कारण सबसे ऊपर है।
जो

10

वी 34 बाइट्स

Ó[^A-Z0-9]
ys$|ÄVr-r+$.YLppVr x$rv

ध्यान दें कि यह एक पुराने संस्करण में काम करता है, लेकिन ऑनलाइन इसे आज़माने के लिए वर्तमान संस्करण में काम नहीं करता है। मैं बदल Äगया YPजो कार्यात्मक रूप से समतुल्य है।

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

स्पष्टीकरण:

Ó[^A-Z0-9]

अंकों और अपरकेस वर्णों को छोड़कर सब कुछ हटा दें।

ys$|              "Surround this line with '|' characters.
    Ä             "Duplicate this line
     Vr-          "Replace this whole duplicated line with '-' characters
        r+        "replace the first character with '+'
          $       "Move to the end of the line, and
           .      "Repeat our last command. This is the same as 'r+'
            Y     "Yank the current line
              pp  "and paste it twice
             L    "At the end of our text

अब, बफर इस तरह दिखता है:

+---+
|A51|
+---+
+---+

और हमारा कर्सर अंतिम पंक्ति के पहले कॉलम में है।

Vr                 "Change the whole last line to spaces
   x               "Delete a character
    $rv            "And change the last character to a 'v'

गैर-प्रतिस्पर्धात्मक संस्करण: (31 बाइट्स)


मैंने अभी देखा कि इनपुट आउटपुट में Programming Puzzles & Code Golfगलत स्ट्रिंग पैदा करता है PP&CG&हटा दिया जाना चाहिए
लुइस Mendo

@LuisMendo Aww, इसे रफ़ू करें! यह इंगित करने के लिए धन्यवाद, मैं इसे आज ही ठीक करूँगा।
DJMcMayhem

@DrGreenEggsandIronMan तो, आपने इसे ठीक कर दिया है? [कब? मर्जी? आप? आखिरकार? ठीक कर? यह?]
एर्ग आउटफोलर जूल

मुझे TIO पर कोई आउटपुट नहीं मिल रहा है?
डाउनगेट

@Downgoat V ने अभी हाल ही में एक बहुत बड़ा अपडेट किया था, और दुर्भाग्य से इसने कुछ चीजों को बोर कर दिया है जो मैं इसे देख रहा हूं, लेकिन मुझे यकीन नहीं है कि इसे ठीक करने में कितना समय लगेगा।
DJMcMayhem

7

16-बिट x86 मशीन कोड, 72 बाइट्स

हेक्स में:

565789F731C9FCAC84C074143C5A77F73C4173083C3977EF3C3072EBAA41EBE75F5EE81500B07CAA51F3A4AB59E80A00B020F3AAB076AA91AAC351B02BAAB02DF3AAB82B10AB59C3

पैरामीटर: SI= इनपुट स्ट्रिंग, DI- आउटपुट बफर।

न्यूलाइन द्वारा सीमांकित लाइनों के साथ एक पूर्ण-समाप्त स्ट्रिंग आउटपुट करता है। अस्थायी बफर के रूप में इनपुट स्ट्रिंग का उपयोग करता है।

56           push   si
57           push   di
89 f7        mov    di,si    ;Using source string as a buffer
31 c9        xor    cx,cx    ;Counter
fc           cld
_loop:
ac           lodsb
84 c0        test   al,al    ;Test for NULL
74 14        jz     _draw    ;Break
3c 5a        cmp    al,'z'   ;\
77 f7        ja     _loop    ; |
3c 41        cmp    al,'a'    ; \
73 08        jae    _stor    ;  >[A-Z0-9]?
3c 39        cmp    al,'9'   ; /
77 ef        ja     _loop    ; |
3c 30        cmp    al,'0'   ;/
72 eb        jb     _loop
_stor:
aa           stosb           ;Store char in the source buffer
41           inc    cx
eb e7        jmp    _loop
_draw:
5f           pop    di
5e           pop    si
e8 15 00     call   _line    ;Output the first line
b0 7c        mov    al,'|'   ;This proc upon return leaves '\n' in AH
aa           stosb           ;First char of the second line
51           push   cx
f3 a4        rep    movsb    ;Copy CX logo characters from the source buffer
ab           stosw           ;Outputs "|\n", which is still in AX
59           pop    cx
e8 0a 00     call   _line    ;Output the third line
b0 20        mov    al,0x20  ;Space
f3 aa        rep    stosb    ;Output it CX times
b0 76        mov    al,'v'
aa           stosb           ;Output the final 'v'
91           xchg   cx,ax    ;CX == 0
aa           stosb           ;NULL-terminate the string
c3           retn            ;Return to caller
_line:
51           push   cx
b0 2b        mov    al,'+'
aa           stosb
b0 2d        mov    al,'-'
f3 aa        rep    stosb     ;'-'*CX
b8 2b 10     mov    ax,0x102b ;"+\n"
ab           stosw
59           pop    cx
c3           retn

उह .. मैंने अभी तक असेंबली कोड नहीं किया है।

3
मैं भी। केवल गोल्फिंग के लिए एक सप्ताह पहले फिर से शुरुआत की
मेडन

3c 41 cmp al,a' क्या यह नहीं होना चाहिए 3c 41 cmp al,'a' ?
rav_kr

@rav_kr, ज़रूर, धन्यवाद के लिए धन्यवाद। पठनीयता के लिए वर्णों के साथ हेक्स कोड की जगह लेते हुए एक उद्धरण याद किया।
मेडल

4

रेटिना , 43 बाइट्स

[^A-Z\d]

.+
+$.&$*-+¶|$&|¶+$.&$*-+¶$.&$* V

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

यह रेटिना, मार्टिन एंडर की गोल्फ भाषा को प्रदर्शित करने के लिए सही चुनौती है।

इस समाधान को दो चरणों (जिसे हम स्टेज कहते हैं) में विभाजित किया गया है, दोनों चरण एक प्रतिस्थापन चरण हैं।

पहला चरण:

[^ AZ \ d]

यह उन पदार्थों से मेल खाता है जो मेल खाते हैं [^A-Z\d] , , जो अक्षर हैं जो अपरकेस नहीं हैं और अंक नहीं हैं, और फिर उन्हें कुछ भी नहीं प्रतिस्थापित करते हैं, जिसका अर्थ है उन्हें हटाना।

दूसरा चरण:

.+
+$.&$*-+¶|$&|¶+$.&$*-+¶$.&$* V

.+पूरे परिणाम से मेल खाता है, और उसके बाद दूसरी पंक्ति के साथ यह विकल्प।

दूसरी पंक्ति में:

  • $& पूरे मैच को संदर्भित करता है
  • $.& पूरे मैच की लंबाई को संदर्भित करता है
  • $*इसका मतलब है कि पिछले पूर्णांक को लें, अगले वर्ण को कई बार दोहराएं। यहां $.&$*-दोहराने का मतलब है- लेकिन लंबे समय तक मुकाबला नहीं है।
  • एक नई लाइन को संदर्भित करता है।

अच्छा, मैंने पहले यह कोशिश की थी, लेकिन 54 बाइट्स के साथ समाप्त हुआ। पहले चरण के लिए एक विकल्प है, T`dLp`dL_लेकिन यह एक ही लंबाई है, दुर्भाग्य से।
मार्टिन एंडर

@MartinEnder आपके 54 बाइट्स क्या थे?
लीक नन


4

सी #, 183 177 165 बाइट्स

string h(string s){s=string.Concat(s.Where(n=>n>47&n<58|n>64 &n<91));int m=s.Length;var x=new string('-',m);return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ', m + 1)}v";}

गुणा करने वाले वर्ण C # में भयानक हैं। सुझावों की सराहना की

-18 बाइट्स के लिए अलॉएडग के लिए धन्यवाद


आप के | |साथ बदल सकते हैं|
aloisdg

आप स्ट्रिंग इंटरपोलेशन का उपयोग कर सकते हैंreturn$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
अलोएडग ने कहा कि मोनिका जूल

1
एक प्यारी विधि!
downrep_nation

आप के string.Join("", साथ बदल सकते हैंstring.Concat(
aloisdg

1
आप के बाद अंतरिक्ष हटा सकते हैंreturn
aloisdg

4

एक्सेल VBA, 375 359 358 बाइट्स:

यह काम करता है, मैं इसे कम करने की कोशिश कर रहा हूँ ...

संपादित करें: यदि -16 बाइट्स से केस स्टेटमेंट पर स्विच किया गया

Edit2: u से छुटकारा पाया और लेन (b), -1 बाइट से प्रतिस्थापित किया गया

Function b(x)
For i = 1 To Len(x)
a = Mid(x, i, 1)
e = Asc(a)
If e > 64 And e < 91 Or e > 47 And e < 58 Then b = b & a
Next i
For Z = 1 To 4
y = ""
Select Case Z
Case 2
y = "|" & b & "|"
Case 4
For i = 1 To Len(b)
y = y & " "
Next i
y = y & "v"
Case Else
y = "+"
For i = 1 To Len(b)
y = y & "-"
Next i
y = y & "+"
End Select
Debug.Print y
Next Z
End Function

3
हालांकि, यह अच्छा है कि VBA कभी-कभी बकवास है।

मैं सिर्फ चुनौती के लिए ये करता हूं, मुझे पता है कि मैं VBA का मुकाबला नहीं कर सकता। आमतौर पर नामों से सभी अक्षरों को एक अक्षर में बदलने के बाद अंत में सुपर उलझन होती है।
tjb1

हाँ ikr तो सच है

क्या आप ऑपरेटरों के आसपास व्हाट्सएप को हटा सकते हैं?
मॉर्गन थ्रैप

3
"यू से मिला छुटकारा"
कोकोआबुल

4

लूआ, 145 99 बाइट्स

कहने के लिए ज्यादा नहीं है, स्ट्रिंग्स में हेरफेर करना हमेशा लुआ :) में चिंताजनक है। STDOUT के माध्यम से एक कमांड-लाइन तर्क और आउटपुट लेता है

मुझे 45 बाइट बचाने के लिए @LeakyNun को धन्यवाद!

n=(...):gsub("[^%u%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"

@LeakyNun द्वारा प्रस्तावित 100 बाइट्स

n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"

OLD 145 बाइट्स

g="|"..(...):gsub("%a+",function(w)return w:sub(1,1)end):gsub("%s",'').."|"S="+"..g.rep("-",#g-2).."+"p=print
p(S)p(g)p(S)p(g.rep(" ",#g-2).."v")

Ungolfed

g="|"                            -- g is the second, and starts with a |
  ..(...):gsub("%a+",            -- append the string resulting of the iteration on each word
    function(w)                  -- in the input, applying an anonymous function
      return w:sub(1,1)          -- that return the first character of the word
    end):gsub("%s",'')           -- then remove all spaces
  .."|"                          -- and append a |
S="+"..g.rep("-",#g-2).."+"      -- construct the top and bot of the box
p=print                          -- alias for print
p(S)p(g)p(S)                     -- output the box
p(g.rep(" ",#g-2).."v")          -- output #g-2 spaces (size of the shortened name), then v

1
उह, क्या आपका मतलब STDOUT के माध्यम से आउटपुट है? लेकिन मुझे कोई आपत्ति नहीं है क्योंकि इसके लिए OPPOSITE DAY !!!

1
@MatthewRoh का मतलब था कि मैं आपके टर्मिनल के स्टैडिन में आउटपुट कर रहा हूँ! (तय ... शर्म ....)
काटेंको

n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"है 100 बाइट्स
लीकी नून

@LeakyNun पैटर्न का उपयोग कर %u हम कुछ और बाइट्स प्राप्त करते हैं। वैसे भी, धन्यवाद :) (बाद में अपुष्ट अद्यतन करेगा)
काटेंको जू

3

2sable , 36 34 33 32 31 बाइट्स

पेश है 2sable :)। हालाँकि, यह 05AB1E के साथ बहुत आम है, यह वास्तव में ऑटो स्टैक के शीर्ष को आउटपुट करने के बजाय स्टैक से जुड़ता है। कोड:

žKA-ég'-×'+DŠJDU„
|®sX¶®gð×'v

CP-1252 एन्कोडिंग का उपयोग करता है ।


2
ಠ_ಠ कोई और अधिक गोल्फ या भाषा स्विच नहीं! छोड़ो अब यह कहाँ है! : पी
DJMcMayhem

@DrGreenEggsandIronMan Hahaha, यह अभी भी आपके जवाब से 3 दर्दनाक बाइट्स दूर है: पी।
अदनान

1
Haha, मैं जब मैं इसे 7 बाइट्स लंबे समय तक देखा मना रहा था, और फिर धीरे धीरे खाई गायब देखा, एक के बाद एक ...
DJMcMayhem

3

जावास्क्रिप्ट (ईएस 6), 99 बाइट्स

(s,t=s.replace(/[^0-9A-Z]/g,``),g=c=>t.replace(/./g,c))=>`${s=`+${g(`-`)}+
`}|${t}|
${s}${g(` `))v`

3

हास्केल, 107 बाइट्स

इस उत्तर भारी द्वारा जवाब पर आधारित है Zylviij और द्वारा टिप्पणी nimi । मैंने उस उत्तर में और टिप्पणियाँ जोड़ी होंगी, लेकिन अफसोस, मेरे पास पर्याप्त प्रतिनिधि नहीं हैं।

o n=t++'|':f++"|\n"++t++(f>>" ")++"v"where f=[c|c<-n,any(==c)$['0'..'9']++['A'..'Z']];t='+':(f>>"-")++"+\n"

उपयोग किए गए अतिरिक्त ट्रिक्स:

  • intersectइसके कार्यान्वयन द्वारा प्रतिस्थापित किया गया ताकि आयात को गिराया जा सके। (साइड नोट: कार्यान्वयन लगभग एक पुस्तकालय है, मुझे एक छोटा संस्करण नहीं मिला।)
  • सहायक कार्यों में ले जाया गया where क्लॉज ताकि फ़ंक्शंस nपैरामीटर का आंतरिक रूप से उपयोग कर सकें ।
  • उसके बाद, (#) इनलेट होने के लिए काफी कम था।
  • अतिरिक्त व्हाट्सएप को सीमित करने के लिए सब कुछ एक लाइन पर रखें।

2

पायथन 3.5, 114 93 112 बाइट्स:

import re;Y=re.findall('[A-Z0-9]',input());I='+'+'-'*len(Y)+'+\n|';print(I+''.join(Y)+I[::-1]+'\n'+' '*len(Y)+'v')

एक पूरा कार्यक्रम। मूल रूप से अपरकेस अक्षरों और संख्याओं की सभी घटनाओं का मिलान करने के लिए एक नियमित अभिव्यक्ति का उपयोग करता है, फिर मैचों की सूची की लंबाई के आधार पर सटीक आकार का बॉक्स बनाता है, और अंत में इसमें शामिल मैचों की सूची "अंदर" डालता है।

यह ऑनलाइन की कोशिश करो! (Ideone)


5
यह नीचे 'v' को याद कर रहा है।
कारल्स कंपनी

@CarlesCompany यह 19 और बाइट्स की कीमत पर तय किया गया है।
आर। कप

2

पायथन 3, 121 124 बाइट्स

स्थिर बेवकूफ गलती

s=''
for i in input():_=ord(i);s+=("",i)[91>_>64or 47<_<58]
x=len(s)
c='+'+"-"*x+'+'
print(c+"\n|"+s+"|\n"+c+"\n"+" "*x+"v")

अन्य अजगर जवाब की तरह पुस्तकालयों का आयात नहीं करता है।


सही ढंग से काम नहीं करता है। -1 यदि आप ठीक करते हैं तो सूचित करें।
15

@ E @Gʀɪᴋᴛʜᴇ फिक्स्ड। धन्यवाद
Destructible नींबू

वास्तव में, लिंक कुछ कोड को गोल्फ कर रहा था, और इसीलिए मैंने इसे वहां रखा।
एर्ग आउटफोलर

2

जावा 8, 149 बाइट्स

s->{s=s.replaceAll("[^A-Z0-9]","");String t="+",r;int l=s.length(),i=l;for(;i-->0;t+="-");for(r=(t+="+\n")+"|"+s+"|\n"+t;++i<l;r+=" ");return r+"v";}

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

स्पष्टीकरण:

s->{                     // Method with String as both parameter and return-type
  s=s.replaceAll("[^A-Z0-9]","");
                         //  Leave only the uppercase letters and digits
  String t="+",          //  Temp-String, starting at "+"
         r;              //  Result-String
  int l=s.length(),      //  Amount of uppercase letters and digits `l`
  i=l;for(;i-->0;t+="-");//  Loop and append `l` amount of "-" to the temp-String
  for(r=(t+="+\n")       //  Append "+" and a new-line to the temp-String
        +"|"+s+"|\n"+t;  //  Set the result to `t`, "|", modified input, "|", new-line, `t`
                         //  all appended to each other
      ++i<l;r+=" ");     //  Loop and append `l` amount of spaces to the result
  return r+"v";}         //  Return the result-String with appended "v"



1

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

def f(n):c=filter(lambda x:x.isupper()^x.isdigit(),n);L=len(c);h='+'+L*'-'+'+\n';return h+'|'+c+'|\n'+h+' '*L+'v'

क्या आप पायथन में एसेसी का उपयोग कर सकते हैं? यदि हाँ आप उपयोग कर सकते हैं 47<x<58|64<x<91:)
aloisdg

@aloisdg C / C ++ के विपरीत, Python एक अभिन्न charप्रकार का उपयोग नहीं करता है - Python स्ट्रिंग्स में सभी वर्ण स्वयं स्ट्रिंग्स हैं, और सीधे पूर्णांक के साथ तुलना नहीं की जा सकती। होने की जरूरत होगी 47<ord(x)<58or 64<ord(x)<91
Mego

[x for x in n if x.isupper()^x.isdigit()]एक बाइट से छोटा हैfilter(lambda x:x.isupper()^x.isdigit(),n)
लीक नून

@LeakyNun: फ़िल्टर एक स्ट्रिंग लौटाएगा, लेकिन सूची समझ एक सूची लौटाएगा, जो वापसी मूल्य अभिव्यक्ति में उपयोग करने योग्य नहीं होगा।
निकिता बोरिसोव

क्यों XOR? आप या इसके बजाय का उपयोग नहीं कर सकते? XOR अधिक जटिल है, और इस प्रकार AFAIK को धीमा कर देता है। x.isupper()^x.isdigit()->x.isupper()|x.isdigit()
निकोल निकोल

1

जोल्फ, 35 बाइट्स

Ά+,Alγ/x"[^A-Z0-9]"1'+'-'|γS*lγ" 'v

मुझे सभी लेकिन कैप्स और संख्या को हटाने के लिए एक छोटे तरीके की आवश्यकता है ...


1

सी, 171 163

फ़ंक्शन f()इसके इनपुट को संशोधित करता है और परिणाम को प्रिंट करता है।

l;f(char*n){char*p=n,*s=n,c[99];for(;*n;++n)isupper(*n)+isdigit(*n)?*p++=*n:0;*p=0;memset(c,45,l=strlen(s));c[l]=0;printf("+%s+\n|%s|\n+%s+\n%*.cv\n",c,s,c,l,32);}

परीक्षण कार्यक्रम

फ़ेविकॉन में उपयोग करने के लिए एक पैरामीटर, स्ट्रिंग की आवश्यकता होती है:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, const char **argv)
{
    char *input=malloc(strlen(argv[1])+1);
    strcpy(input,argv[1]);
    f(input);
    free(input);
    return 0;
}

आप argv तत्व की नकल क्यों करते हैं?
mame98

क्योंकि फ़ंक्शन इसके इनपुट को संशोधित करता है। मुझे यकीन नहीं है कि पैरामीटर परिभाषित किया गया है व्यवहार को परिभाषित किया गया है।
उल्लू के जूलर

इसके बारे में कभी नहीं सोचा ... इस SO उत्तर के अनुसार यह ठीक होना चाहिए: stackoverflow.com/a/963504/3700391
mame98

1

हास्केल, 161

import Data.List
r=replicate
l=length
f n=intersect n$['0'..'9']++['A'..'Z']
t n='+':(r(l$f n)'-')++"+\n"
o n=(t n)++"|"++(f n)++"|\n"++(t n)++(r(l$f n)' ')++"V"

प्रयोग

o"Stack Overflow"
+--+
|SO|
+--+
  V

o"Area 51"
+---+
|A51|
+---+
   V

1
आप उपयोग कर रहे हैं replicate, lengthऔर fविशेष रूप से इस संयोजन में, ताकि आप उन्हें एक समारोह में विलय कर सकते हैं: r=replicate.length.fऔर ऐसा लगता है फोन r n '-'। आप एक infix ऑपरेटर का उपयोग करके और भी अधिक बाइट्स बचा सकते हैं: (#)=replicate.length.fऔर n#'-'/ n#' '। इसके अतिरिक्त replicate.lengthहै >>, (एक सिंगलटन स्ट्रिंग के बजाय एक चार) के साथ तो यह है: (#)=(>>).fऔर n#"-"/ n#" ", दोनों के बिना ( )उसके चारों ओर।
निमि

1
... भी: ( )आसपास t nऔर के लिए कोई ज़रूरत नहीं है f n"|"++है '|':। सभी में सभी o n=t n++'|':f n++"|\n"++t n++n#" "++"V":।
नीम

1

बैश, 99 74 बाइट्स

s=$(sed s/[^A-Z0-9]//g);a=${s//?/-};echo -e "+$a+\n|$s|\n+$a+\n${s//?/ }v"

उपयोग: उपर्युक्त कमांड चलाएँ, साइट का नाम टाइप करें, एंटर दबाएँ और फिर Ctrl+ D('फाइल का अंत' भेजें)।



1

आर, 108 बाइट्स

cat(x<-gsub("(.*)","+\\1+\n",gsub(".","-",y<-gsub("[^A-Z0-9]","",s))),"|",y,"|\n",x,gsub("."," ",y),"v",sep="")

व्याख्या

अंदर से बाहर जा रहे हैं (क्योंकि जो एक रेगेक्स के अंदर से वैश्विक चर असाइन करना पसंद नहीं करता है), यह मानते हुए s कि हमारा इनपुट स्ट्रिंग है:

y<-gsub("[^A-Z0-9]","",s) राजधानियों और संख्याओं को रखता है, जिसके परिणामस्वरूप y को मूल्य प्रदान करता है।

gsub(".","-",y<-...) उपरोक्त में हाइफ़न के साथ सभी वर्णों को बदलता है।

x<-gsub("(.*)","+\\1+\n",gsub(...))+हाइफ़न की एक पंक्ति के एक छोर पर चक , और एक नई रेखा, और हम इसे एक्स के रूप में संग्रहीत करते हैं।

बाकी बहुत सीधा है, उचित क्रम में आउटपुट है, और इस तथ्य का उपयोग करें कि vइच्छा से पहले रिक्त स्थान की संख्या y की लंबाई के समान होगी।


1

Brachylog , 61 बाइट्स

पिछड़े संगतता सुनिश्चित करने के लिए जुलाई 7 पर भंडार से जुड़ा।

lybL:{,."-"}ac:"+"c:"+"rcAw@NNw"|"Bw?wBwNwAwNwL:{," "w}a,"v"w

गैर-प्रतिस्पर्धात्मक, 53 बाइट्स

lL:"-"rjb:"+"c:"+"rcAw@NNw"|"Bw?wBwNwAwNw" ":Ljbw"v"w

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


1

एपीएल, 52 49 बाइट्स

{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}

(टिप्पणी के लिए 49 से नीचे)।


{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}(आप कभी भी उलट-पुलट के तर्क-वितर्क में से किसी एक को गोल्फिंग के दौरान छोटा नहीं करते। यह हमेशा बाइट को बचाने के लिए सामान्य क्रम में हो सकता है।)
ज़ाचारि।

1

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

56 बाइट्स कोड + 1 के लिए -p

y/a-z //d;$d="-"x y///c;$_="+$d+
|$_|
+$d+
".$"x y///c.v

मैंने मूल रूप से केवल रेगीक्स का उपयोग करके इसे बनाने की कोशिश की, लेकिन मैं जितना आशा करता था, उससे कहीं अधिक बड़ा था, इसलिए मैंने इसके बजाय कुछ स्ट्रिंग पुनरावृत्ति का उपयोग किया है।

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


1

MATL , 34 बाइट्स

t1Y24Y2hm)T45&Ya'+|+'!wy&h10M~'v'h

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

t        % Implicit input. Duplicate
1Y2      % Uppercase letters
4Y2      % Digit characters
h        % Concatenate horizontally: string with uppercase letters and digits
m        % True for input chars that are uppercase letters or digits
)        % Keep only those
T45&Ya   % Pad up and down with character 45, which is '-'. Gives three-row char array
'+|+'!   % Push this string and transpose into a column vector
wy       % Swap, duplicate the second array from the top. This places one copy of the
         % column vector below and one above the three-row char array
&h       % Contatenate all stack arrays horizontally. This gives the box with the text
10M      % Retrieve the string with selected letters
~        % Logical negate. Gives zeros, which will be displayes as spaces
'v'      % Push this character
h        % Concatenate horizontally with the zeros.
         % Implicitly display the box with the text followed by the string containing
         % the zero character repeated and the 'v'

1

जावास्क्रिप्ट (ईएस 6), 119 बाइट्स

h=a=>"+"+"-".repeat(a.length)+"+\n";j=a=>(a=a.replace(/[^A-Z0-9]/g,""),h(a)+"|"+a+"|\n"+h(a)+" ".repeat(a.length)+"v");

1

जे , 52 बाइट्स

'v'(<3 _2)}4{.1":]<@#~2|'/9@Z'&I.[9!:7@'+++++++++|-'

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

   [9!:7@'+++++++++|-'            Set the box drawing characters.
        '/9@Z'&I.                 Interval index, 1 for numbers, 3 for 
                                  uppercase letters.
          ]  #~2|                 Mod 2, and filter
                                  the characters that correspond to 1s.
           <@                     Put them in a box.
           1":                    Convert to a character matrix, so we can do stuff to it.
           4{.                    Add a 4th line filled with spaces   
       'v'(<3 _2)}                Insert a “v” at 3,−2


0

आम लिस्प (लिस्पवर्ट्स), 159 बाइट्स

(defun f(s)(labels((p(c l)(dotimes(i l)(format t"~A"c))))(let((l(length s)))#1=(p"+"1)#2=(p"-"l)#3=(format t"+~%")(format t"|~A|~%"s)#1##2##3#(p" "l)(p"v"1))))

ungolfed:

(defun f (s)
  (labels ((p (c l)
             (dotimes (i l)
               (format t "~A" c))))
    (let ((l (length s)))
      #1=(p "+" 1)
      #2=(p "-" l)
      #3=(format t "+~%")
      (format t "|~A|~%" s)
      #1#
      #2#
      #3#
      (p " " l)
      (p "v" 1))))

उपयोग:

CL-USER 2 > (f "so")
+--+
|so|
+--+
  v
NIL

CL-USER 3 > (f "pcg")
+---+
|pcg|
+---+
   v
NIL
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.