তাদের চিঠি দিয়ে শব্দগুলি রূপরেখা


14

বর্তমান চ্যালেঞ্জের উদ্দেশ্যে একটি শব্দকে "রূপরেখা" দেওয়ার অর্থ শেষ অক্ষর দিয়ে শুরু করে এবং শেষ পর্যন্ত ফাঁক দিয়ে কেন্দ্রের মূল শব্দটি প্রতিস্থাপন করে তার নিজের অক্ষর দিয়ে ধারাবাহিকভাবে ঘিরে রাখা:

       oooooo 
       onnnno 
on ->  on  no 
       onnnno
       oooooo

টাস্ক:

শব্দের একটি তালিকা দেওয়া হয়েছে, কেবল ছোট হাতের অক্ষর এবং / অথবা বড় হাতের ইংরাজী অক্ষর সমন্বয়ে প্রতিটি শব্দের বাহ্যরেখা তৈরি করে এবং ফলস্বরূপ সমস্ত ফলকগুলি একে অপরের পাশে অনুভূমিকভাবে প্রদর্শন করে, একক স্থানের একটি কলাম দ্বারা পৃথক করে ব্লকগুলির কেন্দ্রগুলিতে উল্লম্বভাবে সাজানো থাকে।

আপনি একটি সম্পূর্ণ প্রোগ্রাম, বা একটি ফাংশন লিখতে পারেন।

ইনপুট:

শব্দের একটি তালিকা, বা আপনি যদি পছন্দ করেন - একটি স্থান- বা অন্যান্য প্রতীক- সীমিত স্ট্রিং

আউটপুট:

বর্ণিত শব্দের জন্য ব্লকগুলির ASCII উপস্থাপনা। শীর্ষস্থানীয় / পিছনের সাদা স্থানের অনুমতি রয়েছে ace

পরীক্ষার কেস:

Input 1: ["code", "golf"] (or "code golf")
Output 1:

    cccccccccccc gggggggggggg
    cooooooooooc goooooooooog
    coddddddddoc gollllllllog
    codeeeeeedoc golfffffflog
    code    edoc golf    flog
    codeeeeeedoc golfffffflog
    coddddddddoc gollllllllog
    cooooooooooc goooooooooog
    cccccccccccc gggggggggggg

Input 2: ["I", "am", "just", "a", "man"]  (or "I am just a man")
Output 2: 

           jjjjjjjjjjjj
           juuuuuuuuuuj     mmmmmmmmm
    aaaaaa jussssssssuj     maaaaaaam
III ammmma justtttttsuj aaa mannnnnam
I I am  ma just    tsuj a a man   nam  
III ammmma justtttttsuj aaa mannnnnam
    aaaaaa jussssssssuj     maaaaaaam 
           juuuuuuuuuuj     mmmmmmmmm 
           jjjjjjjjjjjj

জয়ের মানদণ্ড:

প্রতিটি ভাষায় বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়লাভ করে। আপনি যদি আপনার কোড এবং পদ্ধতির মন্তব্য / ব্যাখ্যা করেন তবে আমি প্রশংসা করব।


আমরা কি কমপক্ষে একটি শব্দ আছে অনুমান করতে পারি?
পূর্বকুডারী

@ পিটু ১৯৯৮ হ্যাঁ, সর্বদা কমপক্ষে একটি শব্দ থাকতে পারে
গ্যালেন ইভানোভ

1
@ কেভিন ক্রুইজসেন ট্রান্সপোজ?
গ্যালেন ইভানভ

উত্তর:


7

ক্যানভাস , 22 20 বাইট

l *;±21*{;l└*e⟳} ]r⤢

এখানে চেষ্টা করুন!

ব্যাখ্যা:

{                 ]    map over the inputs
 l *                     array of length spaces - the canvas of the current word
    ;                    get the word back on top
     ±                   reverse it
      21*                repeat each character twice
         {      }        for each character
          ;l└              push the height of the item below (the canvas)
             *             repeat the character that many times vertically
              e            and encase the canvas in that char column
               ⟳           and rotate it clockwise for encasing the next time
                 ∙      push another space as the separator of words
                   r   center the words
                    ⤢  and transpose the final output (as everything was built vertically)

5

কাঠকয়লা , 35 বাইট

FA«≔LιθMθ↑Fθ«B⁻׳θ⊗κ⊕⊗⁻θκ§ικ↘»M⊕⊗θ→

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

FA«

ইনপুট তালিকার উপরে লুপ করুন।

≔Lιθ

বর্তমান শব্দের দৈর্ঘ্য পান।

Mθ↑

ফলাফলের বাহ্যরেখার উপরের বাম কোণে যান Move

Fθ«

প্রতিটি চরিত্রের জন্য একবার লুপ।

B⁻׳θ⊗κ⊕⊗⁻θκ§ικ

উপযুক্ত উচ্চতা, প্রস্থ এবং অক্ষরের একটি বক্স আঁকুন।

↘»

পরের বাক্সের উপরের বাম কোণে যান।

M⊕⊗θ→

পরবর্তী রূপরেখায় যান।


4

হাস্কেল , 188 183 174 171 167 বাইট

-9 -13 বাইট লাইকোনি ধন্যবাদ ।

e=[]:e
c#a=k c<$>k(c<$a!!0)a
k c s=c:s++[c]
f w=foldr(#)[p w]w
p=(' '<$)
s w=unlines.map unwords.foldr(zipWith(:))e$until(\a->all((p a>=).p)$f<$>w)(k=<<p.head)<$>f<$>w

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


\a->and[p a>=p x|x<-f<$>w]হতে পারে \a->all((p a>=).p)$f<$>wএবং k c=(++[c]).(c:)হতে পারে k c s=c:s++[c]
লাইকনি

3

পাইথ, 34 33 বাইট

Jsm+;uCjR*2HG_.iddm\ dQjCm.[lJd;J

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

অতিরিক্ত গোটা স্পেসের পুরো গোছা ফেলে দেয়, তবে এটি চ্যালেঞ্জের দ্বারা অনুমোদিত।

ব্যাখ্যা

  • m... Qপ্রতিটি শব্দ জন্য নিম্নলিখিত আছে dইনপুটে Q:

    • m\ dশব্দের সাথে শব্দের x => " "যতগুলি [" ", ..., " "]আইটেম রয়েছে ততগুলি প্রয়োজনীয়ভাবে তালিকা তৈরি করে শব্দটি ম্যাপ করে ।
    • .iddশব্দের চিঠিগুলি দু'বার পুনরাবৃত্তি করে শব্দটি নিজের সাথে ইন্টারলেভ করে। _এই স্ট্রিং বিপরীত। wordহয়ে ddrrooww
    • uGস্পেসগুলির অ্যারে = দিয়ে শুরু হয় এবং আন্তঃবাহিত স্ট্রিংয়ের প্রতিটি অক্ষরের সাথে নিম্নলিখিতটি প্রয়োগ করে H:
      • *2H চরিত্রটি দু'বার পুনরাবৃত্তি করে।
      • jRGপ্রতিটি স্ট্রিং Gঅক্ষরের জোড়ার মধ্যে রাখে ।
      • Cসারি এবং কলামগুলি অদলবদল করে। যখন এই তিনটি পদক্ষেপ একই অক্ষরটির সাথে দু'বার করা হয় তখন এটি সেই চরিত্রটির সাথে Hরেখাগুলি রূপরেখা দেয় G
    • আমাদের কাছে এখন বাহ্যরেখ করা শব্দের জন্য কলাম রয়েছে d+;একটি স্থান কলাম প্রিপেন্ড করে।
  • sপ্রতিটি শব্দের জন্য কলামের অ্যারে সমতল করে Jএবং এটি পরিবর্তনশীলে সংরক্ষণ করে J
  • mJআউটপুট প্রতিটি কলামের জন্য নিম্নলিখিতগুলি করে:
    • .[lJd;কলামের উভয় পক্ষকে ফাঁক দিয়ে প্যাড করুন যাতে কলামের দৈর্ঘ্য কলামের সংখ্যার সমান হয়। কলামগুলি উল্লম্বভাবে সারিবদ্ধ করতে এটি সর্বদা পর্যাপ্ত প্যাডিং।
  • Cকলামগুলি সারিগুলিতে পরিণত করে এবং jনতুন লাইনের সাথে সারিগুলিতে যোগদান করে।

বিকল্প সমাধান, 33 বাইট

j.tsm.[L\ l+dsQ+;uCjR*2HG_.iddm\ 

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

মনে রাখবেন এখানে একটি পিছনের স্থান রয়েছে। বেশিরভাগ একই অ্যালগরিদম, উপরে কেবল প্যাড কলামগুলি বাদে এবং পরে স্থান পূরণ করে স্থানান্তরিত হয়।


3

আর , 189 বাইট

function(x,S=32,`+`=rbind,`*`=cbind)cat(intToUtf8(Reduce(`+`,Map(function(s,K=utf8ToInt(s),o=S-!K){for(i in rev(K))o=i+i*o*i+i
for(j in(0:(max(nchar(x))-nchar(s)))[-1])o=S*o*S
o+S},x))+10))

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

DigEmAll এবং নিজেকে মধ্যে একটি সহযোগিতা চ্যাটে

function(x){
 S <- 32			# space
 `+` <- rbind			# alias for rbind
 `*` <- cbind			# alias for cbind
 outlineWord <- function(s){	# function to construct the outline for each word
  chars <- utf8ToInt(s)		# convert to code points
  output <- S - !chars		# replace each char with 32 (space)
  for(i in rev(chars))
   o <- i + i * o * i + i	# o <- rbind(i,cbind(i,o,i),i)
  for(j in(0:(max(nchar(x))-nchar(s)))[-1])
   o <- S * o * S		# pad with spaces
   o + S}			# return with an additional row of spaces between words
 outlines <- Map(outlineWord,x)	# apply outlineWord to each element of x
 outlines <- Reduce(`+`,outlines)# reduce by rbind
 outlines <- outlines+10	# add row of newlines
 cat(intToUtf8(outlines))	# convert back to strings and print
}

187 একটি সুস্পষ্ট উপন্যাস সহ
জে.ডো

@ J.Doe এটা এর সম্প্রদায় উইকি তাই সম্পাদন করা বিনা দ্বিধায় যে :-)
: Giuseppe



1

05 এ বি 1 ই , 46 বাইট

εg©;ò<Uyη央∍«®>∍}y𫩪®Xиª˜».º.∊}¶«».C.B€SζJ»

এটি সম্পর্কে খুব খুশি নয়, তবে আমি আনন্দিত যে এটি কাজ করছে।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ε                             # Map `y` over the (implicit) input-list
 g                            #  Take the length of the current item
  ©                           #  Store it in the register (without popping)
   ;                          #  Halve it
    ò                         #  Ceil and cast to integer at the same time
     <                        #  Decrease it by 1
      U                       #  Pop and store it in variable `X`
 yη                           #  Take the prefixes of the current string `y`
   ε       }                  #  Map over these prefixes:
    ¤                         #   Take the last character of the string
     ®×                       #   Increase it to a size equal to the length from the register
       «                      #   Append it to the current prefix
        ®>                    #   Take the length from the register, and add 1
                             #   Shorten the string to that size
 y                            #  Push the string `y` again
  ð«                          #  Append a space
    ©                         #  Store it in the register (without popping)
     ª                        #  Append it at the end of the list of modified prefixes
      ®                       #  Push the string with space from the register again
       Xи                     #  Repeat it `X` amount of times
         ª                    #  Append them to the list
          ˜                   #  Flatten to remove the empty appended list if `X` was 0
           »                  #  Join by newlines
            .º.∊              #  Intersect mirror both horizontally and vertically
                }             # Close outer map
                 ¶«           # Append a newline after each (for the space delimiters)
                   »          # Join everything by newlines
                    .C        # Centralize it horizontally
                              # (too bad a centralize vertically isn't available..)
                      .B      # Split on newlines again
                        S    # Convert each line to a list of characters
                          ζ   # Zip, swapping rows/columns (with space filler by default)
                           J  # Join the loose characters of every line to a string again
                            » # Join the lines by newlines (and output implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.