স্ট্যাক এক্সচেঞ্জ ফ্যাভিকন উত্পন্ন করুন


25

আপনি কি পিপিসি লোগো চিনতে পারেন? এটির মতো দেখায়, যখন আপনি এটির একটি আসকি শিল্প করেন।

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

এখন, এই কোড গল্ফে, আপনি এমন একটি কোড তৈরি করবেন যা পিপিসিজি লোগোর অনুরূপ অন্যান্য সাইটের জন্য লোগো তৈরি করে।

আপনার কি করা উচিত

"সংক্ষিপ্ত" স্ট্রিংটি স্ট্রিংটি হবে এবং ইনপুট স্ট্রিংয়ের সমস্ত বড় হাতের অক্ষর এবং সংখ্যা থাকবে Which ( PPCGইনপুট স্ট্রিংটি কখন হবে Programming Puzzles & Code Golf)

বক্স" (

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

) সংক্ষিপ্ত স্ট্রিং পুরোপুরি ফিট করা উচিত ((বড় বা ছোট নয়)

এছাড়াও vঅংশটি ঠিক 1 নিচে এবং 1 বামে নীচে ডানদিকে হওয়া উচিত +

তারপরে বাক্সটি আউটপুট করুন যা এতে সংক্ষিপ্ত স্ট্রিং রয়েছে।

উদাহরণ

Stack Overflow:

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

Area 51:

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

বিধি

আপনি ধরে নিতে পারেন ইনপুটটিতে কমপক্ষে একটি ডিজিট বা আপার কেস লেটার রয়েছে।

স্ট্যান্ডার্ড বিধি প্রযোজ্য।



@ মার্টিনএন্ডার হ্যাঁ, খুব ঘনিষ্ঠভাবে সম্পর্কিত, তবে সদৃশ নয়।

1
@ ম্যাথেররোহ লিঙ্কগুলির উদ্দেশ্য যাতে চ্যালেঞ্জগুলি সাইডবারে প্রদর্শিত হয়, এটি কোনও দ্বাপের ভোট নয়। এটি বলেছিল, আমি ব্যক্তিগতভাবে মনে করি অযাচিত চরিত্রগুলি মুছে ফেলা এবং মুদ্রণ মুদ্রণ ^আমার সাথে যুক্ত দ্বিতীয় চ্যালেঞ্জের তুলনায় খুব বেশি যুক্ত হয় না, তবে আমি তাতে একটি দুপ হাতুড়ি নিক্ষেপ করব না তবে তারা এই সিদ্ধান্ত নিতে দেবে যে তারা এটিকে ডুপ হিসাবে বিবেচনা করে বা না.
মার্টিন ইন্ডার

4
যদি এটি হয় 99 Bottles Of Beer, এটি হবে 99BOB

1
@ মাথেরহোহ এখনও এর বাগদত্তা, আমাকে দেখতে দিন যে আমি সর্বোপরি কোনও বিএফ উত্তর পেতে পারি
রোহান ঝুনঝুনওয়ালা

উত্তর:


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

@ লুইস মেন্ডো ওউ, এটিকে ঘৃণা করুন! এটি নির্দেশ করার জন্য ধন্যবাদ, আমি আজকে কিছুটা সময় ঠিক করে দেব।
ডিজেএমসিএমহেম

@ ডিগ্রিগ্রিনএগ্রস এবং আইরনম্যান তাই, আপনি এটি ঠিক করেছেন, তাই না? [কখন? ইচ্ছাশক্তি? আপনি? পরিশেষে? ঠিক? এটি?]
এরিক দি আউটগল্ফার

আমি টিআইও তে কোনও আউটপুট পাচ্ছি না?
ডাউনগোট

@ ডাওনগোট ভি'র সাম্প্রতিক সময়ে একটি বিশাল আপডেট হয়েছে এবং দুর্ভাগ্যক্রমে এটি কিছু জিনিস এনেছে যা আমি এটির মধ্যে খুঁজছি, তবে আমি ঠিক করতে পারি না যে এটি ঠিক করতে কতক্ষণ সময় নেবে।
ডিজেএমসিএমহেম

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

আহ .. আমি অ্যাসেম্বলি কোডটি কিছুক্ষণ করিনি done

3
আমিও. শুধুমাত্র golfing সম্পর্কে এক সপ্তাহ আগে আবার শুরু
meden

3c 41 cmp al,a' এটা করা উচিত নয় 3c 41 cmp al,'a' ?
rav_kr

@ র্যাভ_কেআর, অবশ্যই, লক্ষ্য করার জন্য ধন্যবাদ। পঠনযোগ্যতার জন্য অক্ষরগুলির সাথে হেক্স কোডগুলি প্রতিস্থাপন করার সময় একটি উদ্ধৃতি মিস করেছেন।
মেডেন

4

রেটিনা , 43 বাইট

[^A-Z\d]

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

এটি অনলাইন চেষ্টা করুন!

মার্টিন ইন্ডারের গল্ফ ভাষা, রেটিনা প্রদর্শন করার জন্য এটিই সঠিক চ্যালেঞ্জ।

এই সমাধানটি দুটি ধাপে বিভক্ত (আমরা যাকে পর্যায়গুলি বলি), উভয় স্তরই প্রতিস্থাপনের পর্যায়ে।

প্রথম পর্যায়ে:

[^ জেড \ D]

এটি মেলে সাবস্ট্রিংয়ের সাথে মেলে [^A-Z\d] , কোনটি এমন অক্ষর যা বড় হাতের নয় এবং অঙ্কগুলি নয় এবং তারপরে এগুলি কোনও কিছুই দ্বারা প্রতিস্থাপন করে না, অর্থ তাদের মুছে ফেলা।

দ্বিতীয় পর্যায়ে:

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

দ্য .+পুরো ফলাফলের সাথে মিলে যায়, এবং তারপর দ্বিতীয় লাইন সঙ্গে এটি পরিবর্তে।

দ্বিতীয় লাইনে:

  • $& পুরো ম্যাচ বোঝায়
  • $.& পুরো ম্যাচের দৈর্ঘ্য বোঝায়
  • $*এর অর্থ পূর্বের পূর্ণসংখ্যা নেওয়া, পরবর্তী অক্ষরটি বহুবার পুনরাবৃত্তি করুন। এখানে$.&$*- পুনরাবৃত্তি করা মানে- ম্যাচটি দীর্ঘ হলেও ।
  • একটি নতুন লাইন বোঝায়।

ভাল, আমি এটি আগে চেষ্টা করেছি, তবে 54 বাইট দিয়ে শেষ করেছি। প্রথম পর্যায়ে বিকল্প হ'ল T`dLp`dL_দুর্ভাগ্যক্রমে এটি একই দৈর্ঘ্য।
মার্টিন ইন্ডার

@ মার্টিনইেন্ডার আপনার 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";}

গুণমানের অক্ষর সি # তে ভয়ানক। পরামর্শ প্রশংসা

ধন্যবাদ -১৮ বাইটের জন্য অ্যালোইসডিজের জন্য অনেক ধন্যবাদ


আপনি এর | |সাথে প্রতিস্থাপন করতে পারেন|
অ্যালোআইএসডিজি মনিকা

আপনি স্ট্রিং ইন্টারপোলেশন ব্যবহার করতে পারেনreturn$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
অ্যালোসডজি বলেছেন রিনস্টেট মনিকা

1
একটি মিষ্টি পদ্ধতি thats!
ডাউনরেপ_নেশন

আপনি এর string.Join("", সাথে প্রতিস্থাপন করতে পারেনstring.Concat(
অ্যালোআইএসডিজি মনিকা

1
আপনি স্থানটি সরিয়ে ফেলতে পারেনreturn
অ্যালয়েসডাগুলি পুনর্নির্ধারণ করুন মনিকা

4

এক্সেল ভিবিএ, 375 359 358 বাইট:

এটি কাজ করে, আমি এটিকে আরও ছোট করার চেষ্টা করা ছেড়ে দিচ্ছি ...

সম্পাদনা করুন: যদি বিবৃতি, -১ by বাইট থেকে কেস স্টেটমেন্টে স্যুইচ করা হয়

সম্পাদনা 2: আপনাকে মুক্তি পেয়েছে এবং লেন (বি), -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
যদিও এটি ভাল, বিবেচনা করে ভিবিএ কখনও কখনও আবর্জনা হয়।

আমি কেবল চ্যালেঞ্জের জন্য এগুলি করি, আমি জানি আমি ভিবিএর সাথে প্রতিযোগিতা করতে পারি না। নামগুলি থেকে একক বর্ণগুলিতে সমস্ত ভেরিয়েবলগুলি পরিবর্তন করে শেষে সাধারণত বিভ্রান্ত হন।
tjb1

হ্যাঁ ইকর এত সত্য

আপনি কি অপারেটরগুলির আশেপাশের সাদা স্থানটি সরাতে পারবেন?
মরগান থ্রাপ

3
"আপনার কাছ থেকে মুক্তি পেয়েছি"
হাসতে শুরু করে

4

লুয়া, 145 99 বাইট

বলা বাহুল্য, লুয়ায় স্ট্রিংগুলি হরহামেশাই শব্দযুক্ত always STDOUT এর মাধ্যমে একটি কমান্ড-লাইন আর্গুমেন্ট এবং আউটপুট নেয়

আমাকে 45 বাইট বাঁচানোর জন্য @ লিকইনকে ধন্যবাদ!

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

@ লিক্যুন দ্বারা প্রস্তাবিত 100 বাইট

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

ওল্ড 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 এর মাধ্যমে আউটপুট বোঝাতে চান? তবে আমি আপত্তি করি না কারণ এটির দিনটি পছন্দ করে !!!

1
@ ম্যাথেরহো মানে আমি আপনার টার্মিনালের এসটিডিনে আউটপুট দিয়েছি! (স্থির ... লজ্জা ....)
ক্যাটেনকিও

n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"100 বাইট হয়
লিকি নুন

@ লিক্যনুন প্যাটার্নটি ব্যবহার করে %uআমরা আরও কিছু বাইট অর্জন করি। যাইহোক, ধন্যবাদ :) (অবগাহিতদের পরে আপডেট করবেন)
ক্যাটেনকিও

3

2sable , 36 34 33 32 31 বাইট

উপস্থাপনা 2sable :)। যদিও এটি 05AB1E এর সাথে প্রচলিত রয়েছে তবে এটি একটি স্বয়ংক্রিয়ভাবে স্ট্যাকের শীর্ষে আউটপুট না করে স্ট্যাকের সাথে যোগ দেয়। কোড:

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

সিপি -1222 এনকোডিং ব্যবহার করে ।


2
!_ಠ আর গল্ফ বা ভাষা সুইচ নেই! এটি এখন যেখানে ছেড়ে দিন! : পি
ডিজেএমসিমেহেম

@ ডিগ্রিগ্রিনইগস্যান্ড আইরন ম্যান হাহাহাহা, এটি আপনার উত্তর থেকে এখনও 3 বেদনাদায়ক বাইট দূরে রয়েছে: পি।
আদনান

1
হাহাহা, আমি যখন এটি 7 বাইট বেশি লম্বা দেখছিলাম তখন আমি উদযাপন করছিলাম এবং তারপরে ধীরে ধীরে এই ফাঁকগুলি একে
অপরকে

3

জাভাস্ক্রিপ্ট (ES6), 99 বাইট

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

3

হাস্কেল, 107 বাইট

এই উত্তরটি জিলভিজের উত্তর এবং নিমির মন্তব্যের ভিত্তিতে ভারী । আমি এই উত্তরে আরও মন্তব্য যুক্ত করতে পারতাম, তবে হায়, আমার যথেষ্ট প্রতিবেদন নেই।

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
এটি নীচে 'ভি' অনুপস্থিত।
কার্লস সংস্থা

@ কার্লসকম্পানি এটি আরও 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 আপনি ঠিক করে দিলে অবহিত করুন।
এরিক দি আউটগল্ফার

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ ফিক্সড। আপনাকে ধন্যবাদ
ধ্বংসাত্মক লেবু

আসলে, লিঙ্কটি কিছু কোড গল্ফ করছিল, এবং সে কারণেই আমি এটি সেখানে রেখেছি।
এরিক আউটগল্ফার

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'

আপনি পাইথনে ascii ব্যবহার করতে পারেন? যদি হ্যাঁ আপনি ব্যবহার করতে পারেন 47<x<58|64<x<91:)
অ্যালোসডজি বলেছেন রিনস্টেট মনিকা

@aloisdg সি / সি ++ এর বিপরীতে পাইথন একটি অবিচ্ছেদ্য charপ্রকার ব্যবহার করে না - পাইথন স্ট্রিংয়ের সমস্ত অক্ষর নিজেই স্ট্রিং হয় এবং সরাসরি সংখ্যার সাথে তুলনা করা যায় না। এটা হতে হবে 47<ord(x)<58or 64<ord(x)<91
মেগো

[x for x in n if x.isupper()^x.isdigit()]এর চেয়ে এক বাইট সংক্ষিপ্তfilter(lambda x:x.isupper()^x.isdigit(),n)
লিকি নুন

@ লেকিউন: ফিল্টার একটি স্ট্রিং ফিরিয়ে দেবে, তবে তালিকা অনুধাবন একটি তালিকা ফিরিয়ে দেবে, যা প্রত্যাবর্তন মানের অভিব্যক্তিতে ব্যবহারযোগ্য হবে না।
নিকিতা বরিসভ

এক্সওআর কেন? আপনি কি পরিবর্তে ওআর ব্যবহার করতে পারবেন না? এক্সওআর আরও জটিল, এবং এফএইকে ধীরে ধীরে। 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);}

পরীক্ষা প্রোগ্রাম

ফেভিকনে ব্যবহার করার জন্য একটি প্যারামিটার প্রয়োজন the

#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;
}

আপনি আরগভি উপাদানটি অনুলিপি করেন কেন?
mame98

কারণ ফাংশনটি তার ইনপুটটিকে পরিবর্তন করে। আমি নিশ্চিত না যে স্থানে পরামিতিগুলি পরিবর্তন করা সংজ্ঞায়িত আচরণ।
owacoder

: এই সম্পর্কে চিন্তা না ... এই এইরকম উত্তর দেন এটা জরিমানা করা উচিত অনুযায়ী 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 '-'। আপনি একটি ইনফিক্স অপারেটর ব্যবহার করে আরও বাইট সংরক্ষণ করতে পারেন: (#)=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(...)) ছানা a + সারির উভয় প্রান্তে এবং এবং আমরা এটি এক্স হিসাবে সংরক্ষণ করি।

বাকিগুলি বেশ সোজা, যথাযথ ক্রমে আউটপুট, এবং সত্যটি ব্যবহার করুন যে ফাঁকের সংখ্যাটি vy এর দৈর্ঘ্যের সমান হবে।



1

এপিএল, 52 49 বাইট

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

(মন্তব্যে 49 টি নিচে ধন্যবাদ)


{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}(আপনি একটি বিপরীত যুক্তি ফাংশনে arguents এক parenthesize কখনো যখন golfing এটা সবসময় একটি বাইট সংরক্ষণ করতে স্বাভাবিক অনুক্রমে হতে পারে।।)
Zachary

1

পার্ল, 57 বাইট

56 বাইট কোড +1 এর জন্য -p

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

আমি মূলত কেবলমাত্র রেজিক্সগুলি ব্যবহার করে এটি তৈরি করার চেষ্টা করেছি, তবে এটি আমার প্রত্যাশার চেয়ে অনেক বড় ছিল, সুতরাং আমি পরিবর্তে কিছু স্ট্রিং পুনরাবৃত্তি ব্যবহার করেছি।

এটি অনলাইন চেষ্টা করুন!


1

এমএটিএল , 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

জাভাস্ক্রিপ্ট (ES6), 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.