পাঠ্যটি কেন্দ্র করুন!


40

পাঠ্যটি কেন্দ্র করুন!

এই চ্যালেঞ্জটিতে আপনি বিভিন্ন লাইনকে কেন্দ্র করে যাবেন।

উদাহরণ

Foo
barbaz

 Foo
barbaz
Hello
World

Hello
World
Programming Puzzles
&
Code Golf

Programming Puzzles
         &
     Code Golf

বিশেষ উল্লেখ

প্রতিটি ইনপুট লাইনে সর্বদা কমপক্ষে একটি অ-শ্বেতস্পেস অক্ষর থাকবে, আপনি ধরে নিতে পারেন কেবলমাত্র শ্বেতস্থান অক্ষরটি ফাঁকা স্থান ( ) এবং নিউলাইন। প্রতিটি ইনপুট লাইনে কোনও পিছনে এবং / অথবা নেতৃস্থানীয় সাদা স্থান থাকবে না (নতুন লাইন বাদে)। শেষের আউটপুটে হোয়াইটস্পেস হয় না অনুমোদিত।

আপনার ইনপুটটির দীর্ঘতম লাইনের মধ্যবর্তী হওয়া উচিত। যদি সেই লাইনটি দৈর্ঘ্যেও হয়, তবে আপনার প্রোগ্রাম / ফাংশনটি বামদিকে মাঝখানে পছন্দ করা উচিত। সর্বাধিক লাইনের দৈর্ঘ্য হ'ল আপনার ভাষা যা পরিচালনা করতে পারে তবে আপনার প্রোগ্রামটি কমপক্ষে 500 দৈর্ঘ্যের লাইনে কাজ করবে function


লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


এটি তাই বাইট জেতে সংক্ষিপ্ততম কোড!


একাধিক অভ্যন্তরীণ স্থান কখনও হবে না?
বিড়াল

@ বিড়াল কখনও কোনও লাইনে কোনও শীর্ষস্থানীয় শ্বেত স্পেস বা পেছনের শ্বেতস্পেস থাকবে না (নতুন লাইন থাকলে সেখানে আশা করুন)
ডাউনওয়েট

হ্যাঁ, তবে আমি শব্দটির মধ্যে অভ্যন্তরীণ- স্পেসগুলি বলতে চাইছি
বিড়াল

1
@ ক্যাট ওহ, শব্দের মধ্যে একাধিক সাদা জায়গা থাকতে পারে। উদাহরণস্বরূপ foo(space)(space)(space)barএকটি নিখুঁতভাবে গ্রহণযোগ্য ইনপুট
ডাউনগোট

আমরা কি ধরে নিতে পারি যে সর্বদা 1 টির বেশি লাইন থাকবে?
GamrCorps

উত্তর:


15

পাইথ, 19 17 বাইট

2 বাইট জাকুবে ধন্যবাদ

V.ztr+1.[l.T.zNd6

প্রদর্শন

আমার মনে হয় এটি প্রথমবারের সেন্টার-প্যাড ফাংশনটি কার্যকর .[হয়েছে। দীর্ঘতম লাইনের দৈর্ঘ্য নন-ট্র্যাঙ্কেটিং ট্রান্সপোজ ( .T) ব্যবহার করে পাওয়া যায় ।

ট্রেলিং স্পেসগুলি সামনের অংশে একটি অ-স্পেস অক্ষর যুক্ত করে স্পেসগুলি সরিয়ে, তারপরে যুক্ত অক্ষরটি সরিয়ে ফেলা হবে।


1
আমাদের সম্ভবত অ্যারেতে সর্বাধিক দৈর্ঘ্যের প্রয়োজন। এটি প্রায়শই উপায়ে আসে। +1
মাল্টেসেন

স্পেসিফিকেশনগুলি বলে যে "আউটপুটে শ্বেত স্পেস অনুসরণ করার অনুমতি নেই" " এতে আউটপুটে প্রতিটি স্বল্প লাইনে শ্বেত স্পেস রয়েছে বলে মনে হয়, সুতরাং আমি নিশ্চিত না যে এটি গণনা করেছে।
আলু

@ পোটাটো ধন্যবাদ - যেহেতু আমি উত্তর দিয়েছি তা যুক্ত হয়েছিল।
isaacg

31

vim, 43 36 35 বাইট

VGrx:sor
G:let &tw=col("$")
uu:%ce

পোস্ট না করা খুব ভাল। চলমান নিউলাইনটি নোট করুন; এটা উল্লেখযোগ্য।

একটি চরিত্র সংরক্ষণ করার জন্য @ মার্থকে ধন্যবাদ !

Vim- বন্ধুত্বপূর্ণ ফর্ম্যাট:

VGrx:sor<cr>G:let &tw=col("$")<cr>uu:%ce<cr>

ব্যাখ্যা:

VGrx                   replace every character with an "x"
:sor<cr>               sort (since all chars are now same, sorts by line length)
G                      go to the very last line
:let &tw=col("$")<cr>  set &tw to column number of last char on this line
                         "let &tw" is equivalent to "set tw"
                         tw is short for textwidth, used in :center
uu                     undo the sort, and the replacing-with-x too
:%ce<cr>               center over entire file (%), using textwidth set earlier

1
অবশ্যই এই সব করা উচিত, সন্নিবেশ মোডে?
অ্যালেক্স এ

9
@AlexA। এটির কোনও কিছুই সন্নিবেশ মোডে করা হয় না। ಠ_ಠ
ডুরকনব

আপনি যদি sor!সাজানোর ক্রমটি বিপরীত করতে ব্যবহার করেন, আপনি ব্যবহার col("$")না করে প্রথম লাইনের দৈর্ঘ্য (এখন অর্ডারটি বিপরীত হওয়ার পরে সবচেয়ে দীর্ঘতম) পেতে ব্যবহার করতে পারেন G$, একটি দুর্দান্ত মোট 1 বাইট সঞ্চয়! সম্পাদনা করুন : বা আপনি সাজানোর ক্রম রাখতে পারেন এবং G:let &tw=col("$")পরিবর্তে ব্যবহার করতে পারেন ।
Marth

@ মার্থ ধন্যবাদ! আমি পরেরটি বেছে নিয়েছি (কোনও নির্দিষ্ট কারণে নয়)।
ডুরকনব

:h :sortআমি সন্ধান করে সবেমাত্র জানতে পেরেছি যে আপনি সাজানোর ক্ষেত্রে মেলা পাঠটি এড়াতে একটি রেইজেক্স পাস করতে পারেন, সুতরাং আপনি :sor /./দৈর্ঘ্য (+4 বাইট) বাছাই করতে পারেন , যা আপনাকে VGrx(-4 বাইট) এবং দ্বিতীয়টি পূর্বাবস্থায় মুছে ফেলতে দেয় ( -1 বাইট)। আপনি কমান্ডগুলি শৃঙ্খলাবদ্ধ করার |পরিবর্তে পৃথককারীও ব্যবহার করতে পারেন <cr>, যা আপনাকে (-1 বাইট) এর :আগে এড়িয়ে যেতে দেয় let(নোট করুন যে sor!এরপরে আপনাকে সমাধানটি ব্যবহার করতে হবে , Gপ্রাক্তন কমান্ড নয়)। সুতরাং :sor! /./|let &tw=col("$")|u|%ce (একটি অনুসরণ সহ <CR>) 2 বাইট সংরক্ষণ করা উচিত।
Marth

23

গণিত, 96 বাইট

StringRiffle[#~StringPadLeft~Floor[Max@(l=StringLength)@a/2+l@#/2]&/@(a=#~StringSplit~"
"),"
"]&

এটি কীভাবে কাজ করে তা আমাকে জিজ্ঞাসা করবেন না, যতক্ষণ না এটি সঠিক আউটপুট তৈরি করে আমি তখনই এটির সাথে ফিড করেছিলাম।


27
"এটি কীভাবে কাজ করে তা আমাকে জিজ্ঞাসা করবেন না, এটি সঠিক আউটপুট তৈরি না করা পর্যন্ত আমি কেবল এটির সাথে ফিড করেছিলাম"
বিড়াল

4
@ কেট এইভাবে আমি আমার সমস্ত গল্ফিং করি।
lirtosiast

11

ফানসিটন , অ-প্রতিযোগিতামূলক

এই চ্যালেঞ্জটি অলস ক্রমের জন্য একটি "সর্বাধিক মান" (এবং সর্বনিম্ন মান) ফাংশনের ঘাটির অভাবকে হাইলাইট করেছে, তাই ... আমি তাদের মূল লাইব্রেরিতে যুক্ত করেছি (তাদের যথাক্রমে ⊤ এবং called বলা হয়)। অতএব আমি এটি একটি গল্ফ উত্তর হিসাবে জমা দেওয়ার বিরক্ত করিনি (এটি বৈধ হওয়ার জন্য ⊤ ফাংশন ঘোষণাকে অন্তর্ভুক্ত করতে হবে), সুতরাং এখানে কেবলমাত্র মূল প্রোগ্রাম।

সম্পাদন (function(){$('pre,code').css({lineHeight:5/4,fontFamily:'DejaVu Sans Mono'});})()আপনার ব্রাউজার কনসোলে কিছু সুন্দর রেন্ডারিং জন্য।

   ╓───╖         ╔════╗  ┌───╖  ╔═══╗
 ┌─╢ ‡ ╟─┐       ║ 10 ╟──┤ ǁ ╟──╢   ║
 │ ╙───╜ │       ╚════╝  ╘═╤═╝  ╚═══╝
 │ ┌───╖ │  ┌──────────────┴──────────────────┐
 └─┤ ‼ ╟─┘┌─┴─╖ ┌───╖ ┌───╖ ┌───╖ ┌───╖       │     │
   ╘═╤═╝  │ ɱ ╟─┤ ⊤ ╟─┤ + ╟─┤ ~ ╟─┤ ℓ ╟───┐ ┌─┴─╖ ┌─┴─╖ ╔════╗
     │    ╘═╤═╝ ╘═══╝ ╘═╤═╝ ╘═══╝ ╘═══╝   │ │ ɱ ╟─┤ ʝ ╟─╢ 10 ║
    ┌───╖ ╔═╧═╕ ╔═══╗ ┌─┴──╖ ┌───╖ ╔════╗ │ ╘═╤═╝ ╘═══╝ ╚════╝
  ┌─┤ ℓ ╟─╢   ├─╢ 1 ║ │ >> ╟─┤ … ╟─╢ 32 ║ │   │
  │ ╘═══╝ ╚═╤═╛ ╚═╤═╝ ╘═╤══╝ ╘═╤═╝ ╚════╝ │ ╔═╧═╕ ╔═══╗
  └─────────┘     └─────┘      │   ┌───╖  ├─╢   ├─╢ 0 ║
                               └───┤ ‡ ╟──┘ ╚═╤═╛ ╚═══╝
                                   ╘═╤═╝      │
                                     └────────┘

ব্যাখ্যা

আমি বিশ্বাস করি এটি ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে এমন এই প্রথম ফানসিটনের উত্তর হতে পারে।

  • প্রথমত, আমরা ǁইনপুট স্ট্রিংটিকে নতুন লাইনে বিভক্ত করতে ব্যবহার করি (এএসসিআইআই 10)) এটি একটি অলস ক্রম ফিরে আসে।
  • আমরা সেই ক্রমটি ɱ(মানচিত্র) এর মধ্য দিয়ে পাস করি , এটি একটি ল্যাম্বদা প্রদান করে যা প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য গণনা করে এবং তারপরে দীর্ঘতম লাইনের দৈর্ঘ্য পেতে চূড়ান্ত ক্রমটি পাস করে ।
  • আমরা সেই ক্রমটি অন্যটির মধ্য দিয়েও পাস করি ɱ, এটি একটি ল্যাম্বদা প্রদান করে যা প্রতিটি স্ট্রিংয়ের দৈর্ঘ্য গণনা করে, এটি আগে গণনা করা সর্বাধিক লাইন দৈর্ঘ্য থেকে বিয়োগ করে, 2 দ্বারা ভাগ করে দেয় (আসলে শিফট-ডান 1) যা অনেকগুলি স্পেস জেনার করে (ASCII 32) এবং তারপরে সেই স্পেসগুলিতে স্ট্রিংটি সংযুক্ত করে। (জ্যামিতিক কারণে, আমি একটি ফাংশন ঘোষণা করেছি যা কলগুলি (স্ট্রিং কনটেনেট) বিপরীত পরামিতিগুলির সাথে কল করে ))
  • পরিশেষে, আমরা ʝপৃথককারী হিসাবে নতুন লাইনের (ASCII 10) ব্যবহার করে সমস্ত স্ট্রিং একসাথে রেখে দিতে ব্যবহার করি।

এটি কতটা দুর্দান্ত এবং "এটি 716 টি অক্ষর, মোট 1,508 বাইট"
বিড়াল

9

রেটিনা , 54 52 বাইট

+m`^(.)+$(?<=(?=[^\t]*^..(?<-1>.)+(?(1)^))[^\t]*)
 $0 

\tগুলি প্রকৃত ট্যাব দিয়ে প্রতিস্থাপিত করতে পারেন, কিন্তু আমি ব্যবহার করেছি \tএখানে, কারণ অন্যথায় দঃপূঃ স্পেস ট্যাবস রূপান্তরিত করবে। নোট করুন যে দ্বিতীয় লাইনে একটি শীর্ষস্থানীয় স্থান রয়েছে।

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

ব্যাখ্যা

মূল ধারণাটি হ'ল একটি লাইনের সাথে মিলিত হওয়া যা দীর্ঘতম রেখার চেয়ে কমপক্ষে দুটি অক্ষর (বা প্রযুক্তিগতভাবে, অন্য কোনও রেখার চেয়ে দুটি অক্ষরই কম ), এবং এটি দুটি স্পেসে ঘিরে রাখা। এটি পুনরাবৃত্তি করা হয় যতক্ষণ না আমরা আর এই ধরণের লাইনটি খুঁজে পাই না, যার অর্থ হ'ল সমস্ত লাইন সর্বাধিক দৈর্ঘ্যের এক অক্ষরের মধ্যে রয়েছে (যেখানে একটি অক্ষরটি সমতা মেলে না এমন অ্যাকাউন্ট হিসাবে বিবেচিত হয় এবং গ্যারান্টি দেয় যে এই রেখাগুলি বাম দিকে সরানো হয়েছে- কেন্দ্র)।

প্রকৃত রেজেক্স হিসাবে:

^(.)+$

1প্রতিটি চরিত্রের জন্য গ্রুপে একটি ক্যাপচার চাপানোর সময় কেবল কোনও একটি লাইনের সাথে মেলে ।

(?<=...[^\t]*)

একটি লুকবিহাইড যা ডান থেকে বামে মিলছে এবং কার্সারটিকে স্ট্রিংয়ের শুরুতে নিয়ে যায়, যাতে ভিতরে লুকায়িত পুরো স্ট্রিংটি পরীক্ষা করতে পারে। নোট করুন যে অ্যাঙ্কারের অভাবে, লুকহ্যাড অন্য কোথাও থেকে প্রয়োগ করা যেতে পারে, তবে এটি অতিরিক্ত ম্যাচ তৈরি করে না। আমরা জানি যে স্ট্রিংয়ের যে কোনও চরিত্রের সাথে [^\t]সবসময় মিলবে , কারণ ইনপুটটি কেবল স্পেস এবং লাইনফিডগুলি যতটা সাদা স্পেসের সাথে সম্পর্কিত তা নিশ্চিত করে।

(?=[^\t]*^..(?<-1>.)+(?(1)^))

এই চেহারাটি বর্তমানে এমন একটি লাইন খুঁজে পাওয়ার চেষ্টা করে যা বর্তমানে আমরা মিল করছি তার চেয়ে কমপক্ষে দুটি অক্ষর দীর্ঘ। [^\t]*যে কোনও লাইনের সাথে মেলে ধরতে সক্ষম হতে স্ট্রিংয়ের মধ্য দিয়ে চলে moves ^নিশ্চিত করে যে আমরা লাইনের শুরু থেকে শুরু করছি। ..তারপরে দীর্ঘতর লাইনের জন্য আমাদের প্রয়োজনীয় দুটি অতিরিক্ত অক্ষরের সাথে মেলে। (?<-1>.)+গ্রুপ থেকে পপ করার সময় এখন সেই লাইনের পৃথক অক্ষরের সাথে মেলে 1(নোট যে .কোনও লাইনফিডের সাথে মেলে না, তাই এটি একটি লাইনেই সীমাবদ্ধ)। অবশেষে, (?(1)^)দৃ the়ভাবে জানায় যে আমরা পুরো গ্রুপটি খালি করতে পেরেছি 1। লাইনটি যদি প্রয়োজনের চেয়ে কম হয় তবে এটি সম্ভব নয়, কারণ লাইনটিতে গ্রুপ 1 থেকে পপ করার জন্য পর্যাপ্ত অক্ষর নেই প্রায়শই এটি খালি করতে পারে।


7

জल्फ , 3 বাইট

নন-কেপটিং, পোস্টের তারিখের প্রশ্ন আপডেট করুন।

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

pci
pc  center
  i  string input

¯ \ _ (ツ) _ / ¯ আমি ভেবেছিলাম এটি একটি কার্যকর ফাংশন হবে।


1
এটি একটি স্ট্যান্ডার্ড লুফোল এবং এটি পরিষ্কারভাবে নিষ্ক্রিয় না হওয়ার পরেও এটির খারাপ রূপটি যদি না আপনার ভাষা তৈরি হয় তবে এটি তৈরি না করে।
ইলিয়াস

3
@ এলিয়াসবিনভেদেস আমি প্রতিযোগিতার আগে বৈশিষ্ট্যটি যুক্ত করেছি। আমার কোডটি আপেক্ষিক না হওয়া পর্যন্ত আমি প্রায়শই আপডেট করি না।
কনর ও'ব্রায়েন

7

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

s=>(m=l=s.split`
`).map(x=>(v=x.length/2)<m?v:m=v).map((x,i)=>" ".repeat(m-x)+l[i]).join`
`

2 বাইট সংরক্ষিত হয়েছে @ এডসি 65 এর জন্য ধন্যবাদ !

ব্যাখ্যা

s=>(
  m=                // m = max line length (divided by 2)
    l=s.split`
`)                  // l = array of lines
.map(x=>            // for each line
  (v=x.length/2)    // v = current line length / 2
    <m?v:m=v        // set m to the max line length and return v
)
.map((x,i)=>        // for each line length / 2
  " ".repeat(m-x)   // add spaces before
    +l[i]           // add line text
)
.join`
`                   // return lines as a newline-separated string

পরীক্ষা


.repeatঅ-পূর্ণসংখ্যার মানগুলি গ্রহণ করে এবং সংক্ষিপ্ত করে, সুতরাং আপনার প্রয়োজন হবে না|0
edc65

7

সিজোম, 26 23 19 বাইট

qN/_z,f{1$,m2/S*\N}

আমার প্রথমবারের মত সিজাম ব্যবহার! চারটি বাইট মার্টিন বাটনারকে ধন্যবাদ রক্ষা করেছে। এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা

qN/    e# Read input and split each line
_z,    e# Transpose a copy and get its length to find the longest line
f{     e# For each line...
  1$,- e# Subtract its length from the longest length
  2/   e# Divide by two to get just the spaces to add to the left
  S*\  e# Add a string with that many spaces to the beginning
  N    e# Add a newline to go on to the next line
}

1
এখানে কিছু পরামর্শ রয়েছে :)qN/_z,f{1$,m2/S*\N}
মার্টিন এন্ডার

6

ল্যাবভিউ, 3 বা 35 ল্যাবভিউ পুরষ্কার

কোনওটি না ফেলে দেওয়া পর্যন্ত লাইনগুলি সন্ধান করে, তারপরে কতগুলি স্পেস যুক্ত করতে হবে এবং সমস্ত কিছু একসাথে রাখে তা গণনা করে।

বিকল্পভাবে আপনি স্ট্রিং সূচকগুলিতে অন্তর্নির্মিত সেন্টার প্রান্তিককরণটি ব্যবহার করতে পারেন, এটি যদিও প্রতারণার মতো বোধ করে না।


6

পাইথন 2, 83 81 বাইট

def f(s):
 t=s.split('\n')
 for y in t:print(max(len(f)for f in t)-len(y))/2*' '+y  

2x অক্ষর সংরক্ষণ করার জন্য @ এক্সনরকে ধন্যবাদ

উদাহরণ ইনপুট:

f("""Programming Puzzles
&
Code Golf""")

উদাহরণ আউটপুট:

Programming Puzzles
         &
     Code Golf

এবং স্ট্রেনসেন্টার () এবং স্ট্রিংস্ট্রিপ (ধন্যবাদ @ জেএফ) ব্যবহার করে ৮৪ বাইট নিয়ে দ্বিতীয় স্থানে রয়েছে।

def f(s):
 t=s.split('\n')
 for y in t:print y.center(max(len(f)for f in t)).rstrip()

lenআপনি দুবার ব্যবহার করে এমন কোনও ভেরিয়েবল বরাদ্দ করতে অক্ষর সংরক্ষণ করে না - এটি এমনকি 5 টি অক্ষরে (যেমন range) বিরতি দেয় । এছাড়াও, আপনি mapতালিকাটি কমপ জন্য ব্যবহার করতে পারেন ।
xnor

@ উইলিম, আপনি পিছনের স্থান থেকে মুক্তি পেতে str.rstrip()ফোন centerকরার পরে ব্যবহার করতে পারেন ।
জেএফ

আপনি একটি পূর্ণ প্রোগ্রামের সাথে 7 বাইট সংরক্ষণ করতে পারবেন এবং ব্যবহার len(max(a,key=len)), এই দেখুন
0

5

টিস্ক্রিপ্ট , 24 বাইট

£p.R((aßln)¯-ln)/2)+l,§)

লাইনগুলির মাধ্যমে লুপ হয়, floor((max line length - line length) / 2)শুরুর দিকে স্পেস যুক্ত করে।

Ungolfed

£   p.R((aß  ln)¯  -ln)/2)+l,§   )
xl(#p.R((am(#ln)X()-ln)/2)+l,`\n`)

xl(#    // Loops through newlines
    p.R(   // Repeats spaces
      (
       am(#ln)    // Map all line lengths
              X() // Get largest line length
       -ln)       // Subtract current line length
      /2)  // Divide by two
      +l,  // Add current line text
`\n`)

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


5
আমার উত্তরগুলি কেন ডাউনগয়েটেড হতে থাকবে? আমি মনে করি এটি এখন ব্যবহারকারীর নাম /
অবতারটি

2016-07-27 পর্যন্ত স্থির Fix : পি
ব্যবহারকারী 48538

5

পাওয়ারশেল, 58 67 বাইট

@ মাইজির মন্তব্যে 58 বাইটে ধন্যবাদ:

param($a)$a|%{$_|% *ft(($a|% le*|sort)[-1]/2+$_.length/2)}


# It takes an array of strings as input
PS C:\Temp> .\center.ps1 'aaa','bb','c'
aaa
bb
 c


# Or here, read from a file
PS C:\Temp> .\center.ps1 (gc t.txt)
info0:info1:info2:info3
      info0:info1
          ttt
          tt
           t
  • এটি স্ট্রিংগুলির একটি অ্যারে নেয় যেমন $aপ্রতিটি স্ট্রিংয়ের সাথে লুপ করে |%{...}
  • শর্টকাটের string.padleft()মাধ্যমে প্রতিটি স্ট্রিংয়ের পদ্ধতিটিকে কল করে % -member, যা প্যারামিটার হিসাবে পছন্দসই চূড়ান্ত লাইনের দৈর্ঘ্য নেয়।
    • আমাদের দরকার array_longest_line_length/2 + current_line_length/2
    • শেষ অংশটি হল current_line_length/2->$_.length/2
    • অন্য অংশটি লুপের মাধ্যমে প্রতিবার অ্যারের সর্বাধিক লাইন দৈর্ঘ্যের পুনরায় গণনা করছে এবং এটি নেস্টেড লুপের সাহায্যে লাইন দৈর্ঘ্যের একটি অ্যারে তৈরি করে, সাজায় যে এর পরে শেষটি নেয়।

আপনি 58 বাইট পেতে সংক্ষিপ্ত বিবরণ সম্পত্তি নাম এবং দৈর্ঘ্যের ব্যবহার করতে পারেন
mazzy

1
@ মমজি আরও ভাল! যেহেতু আপনি উত্তর হিসাবে পোস্ট করেন নি, আমি আমার উত্তরটিতে ক্রেডিট দিয়ে সম্পাদনা করেছি।
TessellatingHecler

3

ইমাস লিস্প, 203 বাইট

(let((f 0)(l 0))(dolist(s(split-string(buffer-string)"\n"))(set'l(string-width s))(when(> l f)(set'f l)))(let((fill-column f))(goto-char(point-min))(while(<(point)(point-max))(center-line)(next-line)))))

Ungolfed:

(let ((f 0) (l 0))
  (dolist (s (split-string(buffer-string) "\n"))
    (set 'l (string-width s))
    (when (> l f)
      (set 'f l)))
    (let ((fill-column f))
      (goto-char (point-min))
      (while (< (point) (point-max))
        (center-line)
        (next-line)))))

কেন্দ্রীভূত:

               (let ((f 0) (l 0))
 (dolist (s (split-string(buffer-string) "\n"))
           (set 'l (string-width s))
                 (when (> l f)
                  (set 'f l)))
             (let ((fill-column f))
            (goto-char (point-min))
         (while (< (point) (point-max))
                 (center-line)
                (next-line)))))

3

এইচটিএমএল, 40 বাইট

<xmp style=float:left;text-align:center>

স্নিপেটে </xmp>ট্যাগ অন্তর্ভুক্ত রয়েছে কারণ কোড স্নিপেট ভিউয়ার আমার ট্যাগগুলিকে ভারসাম্যযুক্ত করতে চায়।


2

এমএটিএল , 22 31 বাইট

`jtYz~]xXhc4X4H$ZuZ{Zv

প্রতিটি লাইন একটি পিছনের লাইনের সাথে ইনপুট (এটি, একটি enterকীস্ট্রোক)। একটি খালি লাইন (দুটি enterকীস্ট্রোক) ইনপুটটির শেষ চিহ্নিত করে।

উদাহরণ

>> matl `jtYz~]xXhc4X4H$ZuZ{Zv
> foo
> barbaz
> 
 foo
barbaz

ব্যাখ্যা

`          % do...
  j        % input one string
  tYz~     % is it not empty?
]          % ...while
x          % delete last input (empty string)
Xh         % concatenate all inputs into a cell array
c          % convert to char (2D array). This fills with spaces to the right
4X4H$Zu    % center justify
Z{         % convert to cell array of strings
Zv         % remove trailing blanks of each string

2

রুবি, 76 68 61 বাইট

->t{(s=t.split$/).map{|l|l.center(s.map(&:size).max).rstrip}}

নমুনা রান:

2.1.5 :001 > puts ->t{(s=t.split$/).map{|l|l.center(s.map(&:size).max).rstrip}}["Programming Puzzles\n&\nCode Golf"]
Programming Puzzles
         &
     Code Golf

53 বাইট:->t{(s=t.split$/).map{|l|l.center s.map(&:size).max}}
ডানিরো

আমি centerপ্রথমে উপায়টিও চেষ্টা করেছিলাম , কিন্তু আমি যেমন বুঝতে পেরেছি, কেবলমাত্র "আউটপুটটিতে ট্রেলিং হোয়াইট স্পেস অনুমোদিত নয়" নিয়মটি ভঙ্গ হবে। &:sizeঅংশটির জন্য আপনাকে ধন্যবাদ - আমি এটিও চেষ্টা করেছিলাম, তবে বাক্য গঠনের আশেপাশে আমি অবশ্যই কিছু ব্যঙ্ক করেছিলাম।
manatwork

2

হাস্কেল, 111 81 77 বাইট

l=length
f s|q<-lines s=unlines[([1..div(maximum(l<$>q)-l w)2]>>" ")++w|w<-q]

এফ ফাংশনে ইনপুট, আউটপুট মুদ্রিত হয় না।

ব্যবহার: ইন্টারপ্রেটারে লোড করুন ghci center.hsএবং তারপরে যদি আপনি কোনও প্রদত্ত স্ট্রিং এ f এর আউটপুট মুদ্রণ করতে চানputStr$f"Programming Puzzles\n&\nCode Golf"

সম্পাদনা করুন: 34 বাইটের জন্য নিমিকে ধন্যবাদ , দুর্দান্ত কাজ! : ডি


আরো দুটি জিনিস: প্রস্তাবনা এর সর্বশেষ সংস্করণ একজন পোতা সংস্করণ অন্তর্ভুক্ত করা হয়েছে map: <$>replicate(...)' 'দ্বারা প্রতিস্থাপন করা যেতে পারে [1.. ...]>>" "। সব সব: unlines[([1..div(maximum(l<$>q)-l w)2]>>" ")++w|w<-q]
নিমি

আহ হ্যাঁ আমি মনে করি আপনি আমার পূর্ববর্তী জমা দেওয়ার ক্ষেত্রে নতুন মানচিত্রের ইনফিক্সের কথা উল্লেখ করেছেন। প্রতিলিপি কৌশলটি কীভাবে কাজ করে?
বেসাইল-হেনরি

l1 >> l2l2 টির (দৈর্ঘ্যের l1) অনুলিপি তৈরি করে এবং সেগুলি সংযুক্ত করে। উদা "abcd" >> [1,2]-> [1,2,1,2,1,2,1,2](একক তালিকায় <- 4 টি অনুলিপি)। আমাদের ক্ষেত্রে এটি [1..n]>>" "একটি স্থানের এন কপি যা যা করে তা একই replicate
নিমি

সুন্দর, ব্যাখ্যা জন্য ধন্যবাদ! :)
বেসিল-হেনরি

2

আর, 126 বাইট

কোড

for(z in 1){l=scan(,"");m=sapply(l,nchar);t=max(m[m==max(m)]);for(i in 1:length(m))cat(rep(" ",(t-m[i])/2),l[i],"\n", sep="")}

ungolfed

for(z in 1){                          # any way to get rid of this?
  l=scan(,"")
  m <- sapply(l,nchar)
  t <- max(m[m==max(m)])
  for(i in 1:length(m)){
    cat(rep(" ",(t-m[i])/2),l[i],"\n", sep="")
  }
}

সম্ভবত এটি করার অপেক্ষা রয়েছে আরও ভাল উপায়, এটি এখনও কাজ করে।


1

Gema, 160 বাইট

\L<T>=@push{i;$0}@set{m;@cmpn{@length{$0};${m;};$m;$m;@length{$0}}}
?=
\Z=@repeat{@sub{@line;1};@set{o;@right{@div{@add{$m;@length{$i}};2};$i}\n${o;}}@pop{i}}$o

সঠিক অ্যারে কাঠামো এবং সঠিক লুপ নির্দেশনা ব্যতীত কোন ভাষায় কী করা যায় তা দেখার জন্য আমার কৌতূহলের জন্য বেশিরভাগই লিখেছেন।

নমুনা রান:

bash-4.3$ gema '\L<T>=@push{i;$0}@set{m;@cmpn{@length{$0};${m;};$m;$m;@length{$0}}};?=;\Z=@repeat{@sub{@line;1};@set{o;@right{@div{@add{$m;@length{$i}};2};$i}\n${o;}}@pop{i}}$o' <<< $'Programming Puzzles\n&\nCode Golf'
Programming Puzzles
         &
     Code Golf

1

পার্ল 6 , 61 বাইট

$/=(my@l=lines)».chars.max;for @l {put ' 'x($/-.chars)/2~$_} # 61 bytes

ব্যবহার:

$ perl6 -e '$/=(my@l=lines)».chars.max;for @l {put " "x($/-.chars)/2~$_}' <<< \
'Programming Puzzles
&
Code Golf'
Programming Puzzles
         &
     Code Golf

পার্ল 5 তোমার মত জিনিস স্পেস ড্রপ সম্ভব হবে for @l {পরিবর্তন করতে, খেউরি 2 বাইট, এবং put " "থেকে put" "অন্য বাইট খেউরি। পার্ল 6 এর পক্ষে কি এটি সত্য? (আমি পার্ল 6 জানি না) এছাড়াও, এখানে প্রদর্শিত আপনার আউটপুট প্রয়োজনীয় আউটপুটটির সাথে মেলে না; এটা কি টাইপো?
msh210

@ এমএস 210 পার্ল 6 এর সিনট্যাক্সের সাথে কিছুটা আরও বাধাজনক। যদিও এটি অন্যান্য ক্ষেত্রে এটির চেয়ে বেশি।
ব্র্যাড গিলবার্ট বিস্কুট

1

জাপট, 28 25

¡V=VwXl}R;¡Sp½*(V-Xl¹+X}R

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

কিভাবে এটা কাজ করে

¡     V=VwXl}R;¡     Sp½*(V-Xl¹ +X}R
UmXYZ{V=VwXl}R;UmXYZ{Sp½*(V-Xl) +X}R

           // Implicit: U = input string, V = 0
UmXYZ{  }  // Map each item X in U through this function,
         R // splitting U at newlines beforehand:
  V=VwXl   //  Set V to max(X, Y.length).
           // V is now set to the length of the longest line.

UmXYZ{  }  // Map each item X in U with this function,
         R // again splitting U at newlines beforehand:
 ½*(V-Xl)  //  Take V minus X.length, and multiply by 1/2.
Sp         //  Repeat a space that many times.
        +X //  Concatenate X to the end.


-1

05 এ বি 1 , 2 বাইট

.c

বিল্টিনগুলি ftw ¯ \ _ (ツ) _ / ¯ ¯

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

ব্যাখ্যা:

.c   # Centralize the (implicit) multi-line input-string with preference to the left
     # (output the result implicitly)

(ডানদিকে অগ্রাধিকার .Cপরিবর্তে মূলধনের সাথে থাকবে : পার্থক্যগুলি দেখুন ))


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.