Boustrophedonise


35

সম্পর্কিত কিন্তু খুব আলাদা।

একটি বুস্ট্রোফিডন এমন একটি পাঠ্য যেখানে লিখনের প্রতিটি লাইন উল্টানো অক্ষর সহ উল্টানো বা বিপরীত হয়।

এই চ্যালেঞ্জের মধ্যে আমরা কেবল প্রতিটি অন্যান্য লাইনের বিপরীত করব, তবে প্রকৃত অক্ষরগুলি অক্ষত রেখে দেব। আপনি যে লাইনগুলি বিপরীত করবেন তা চয়ন করতে পারেন, যতক্ষণ না এটি প্রতিটি অন্যান্য other

আপনি শিরোনামে শূন্য বা আরও বেশি অক্ষরযুক্ত প্রতিটি মুদ্রণযোগ্য এএসসিআইআই-র লাইনকে সমর্থন করলে আপনি যে কোনও উপযুক্ত বিন্যাসে পাঠ্য গ্রহণ করতে পারেন।

উদাহরণ:

["Here are some lines","of text for you","to make a","boustrophedon"]:

["Here are some lines","uoy rof txet fo","to make a","nodehportsuob"] or ["senil emos era ereH","of text for you","a ekam ot","boustrophedon"]


["My boustrophedon"]:

["My boustrophedon"] or ["nodehportsuob yM"]

[]:  
[]

["Some text","","More text","","","Last bit of text"]:

["Some text","","More text","","","txet fo tib tsaL"] or ["txet emoS","","txet eroM","","","Last bit of text"]

বুঝতে পারি না যে রিটার্ন এবং ইনপুটটির পাঠ্যকে পৃথক করা লাইন করা দরকার বা এটি কোনও ফাইল বা লাইনের একটি তালিকা হতে পারে।
সার্জিওল

@ সার্জিওল ডিফল্ট পিপিসিআই / ও বিধি প্রযোজ্য।
Adám

আমার কোডটি কি অসম্পূর্ণ আচরণ করতে পারে, যেমন কখনও কখনও প্রথম লাইন থেকে আবার কখনও কখনও দ্বিতীয় থেকে শুরু করে?
এরিক আউটগল্ফার

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

1
@ টোটালিহুমান হ্যাঁ, ওপি অনুযায়ী।
অ্যাডম

উত্তর:


20

এপিএল (ডায়ালগ ক্লাসিক) , 4 বাইট

⊢∘⌽\

ইনপুটটি চরিত্রের ভেক্টরগুলির একটি ভেক্টর।

হ'ল একটি ফাংশন যা ভেক্টরকে বিপরীত করে (যখন বৌদ্ধিকভাবে প্রয়োগ করা হয়)।

" ডেক্স " - এমন একটি ফাংশন যা তার সঠিক যুক্তিকে ফিরিয়ে দেয়। যখন (ক্ষান্ত ) অন্য ফাংশন fএটা আধুনিক বাধ্য করে পরমাণুসদৃশ্য যেমন হতে A ⊢∘f Bসমতূল্য A ⊢ (f B)এবং সেইজন্য f B

\হয় স্ক্যান অপারেটর। g\A B C ...হ'ল ভেক্টর A (A g B) (A g (B g C)) ...যেখানে gdyadically প্রয়োগ করা হয় (infix স্বরলিপি)। এটির ⊢∘⌽জন্য বিকল্পটি gএটিকে সহজতর করে:

A (A ⊢∘⌽ B) (A ⊢∘⌽ (B ⊢∘⌽ C)) ...
A (⌽B) (⌽⌽C) ....
A (⌽B) C ....

এমনকি সম অবস্থানগুলিতে বিপরীতগুলি (বা বিজোড়, আপনি কীভাবে গণনা করেন তার উপর নির্ভর করে) বাতিল হয়ে যায়।

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


4
এটি আক্ষরিকভাবে ]&|.&.>/\যারা জে পড়তে পারেন তাদের জন্য
ফ্রাউনফ্রগ

2
এটা সত্যিই চালাক।
এরিক আউটগল্ফার

13

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

zipWith($)l
l=id:reverse:l

এটি অনলাইন চেষ্টা করুন! ব্যবহারের উদাহরণ: zipWith($)l ["abc","def","ghi"]ফলন ["abc","fed","ghi"]

ব্যাখ্যা:

lidসত্তা ফাংশন এবং ক্রিয়াকলাপের মধ্যে বিভক্ত ফাংশনগুলির একটি অসীম তালিকা reverse

lফাংশন অ্যাপ্লিকেশন সহ প্রধান ফাংশন জিপ এবং ইনপুট তালিকা $, এটি ["abc", "def", "ghi"]আমরা পাই একটি ইনপুট [id$"abc", reverse$"def", id$"ghi"]


11

কাস্তে , 4 বাইট

z*İ_

স্ট্রিংগুলির একটি তালিকা গ্রহণ করে এবং ফেরত দেয় (দোভাষী মুদ্রণের আগে নতুন লাইনের মাধ্যমে ফলাফলটিতে যোগ দেয়)। প্রথম স্ট্রিংটি বিপরীত হয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

z*İ_  Implicit input.
  İ_  The infinite list [-1,1,-1,1,-1,1..
z     Zip with input
 *    using multiplication.

হাস্কে, একটি সংখ্যার সাথে একটি স্ট্রিংকে গুণিত করা এটি বহুবার পুনরাবৃত্তি করে, সংখ্যাটি নেতিবাচক হলে এটিও বিপরীত হয়।


6

জাভাস্ক্রিপ্ট (ES6), ফায়ারফক্স, 43 বাইট

এই সংস্করণটি ফায়ারফক্সের বাছাই করা অ্যালগরিদমকে অপব্যবহার করে । এটি ক্রোমে আবর্জনা তৈরি করে এবং এজতে স্ট্রিংগুলিতে মোটেও পরিবর্তন করে না।

a=>a.map((s,i)=>[...s].sort(_=>i&1).join``)

পরীক্ষার মামলা

অথবা এটি অনলাইন চেষ্টা করুন! (্যত)


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

a=>a.map(s=>(a^=1)?s:[...s].reverse().join``)

পরীক্ষার মামলা


6

এপিএল (ডায়ালগ ইউনিকোড) , 10 বাইট

⌽¨@{2|⍳≢⍵}

উভয় উপায়ে কাজ করে:

এটি অনলাইন চেষ্টা করুন! সঙ্গে⎕IO←1

এটি অনলাইন চেষ্টা করুন! সঙ্গে⎕IO←0

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

⌽¨@{2|⍳≢⍵}  tacit prefix fn
   {   ≢⍵}  Length of the input
           generate indexes from 1 (or 0 with IO0)
    2|      mod 2; this generates a boolean vector of 0s (falsy) and 1s (truthy)
  @         apply to the truthy indexes...
⌽¨          reverse each element




3

কে (ওকে) , 17 14 বাইট

সমাধান:

@[;&2!!#x;|]x:

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

উদাহরণ:

@[;&2!!#x;|]x:("this is";"my example";"of the";"solution")
("this is"
"elpmaxe ym"
"of the"
"noitulos")

ব্যাখ্যা:

প্রয়োগ করা reverseইনপুট তালিকার বিজোড় সূচকগুলিতে করুন:

@[;&2!!#x;|]x: / the solution
            x: / store input as variable x
@[;      ; ]   / apply @[variable;indices;function] (projection)
          |    / reverse
       #x      / count (length) of x, e.g. 4
      !        / til, !4 => 0 1 2 3
    2!         / mod 2, 0 1 2 3 => 0 1 0 1       
   &           / where true, 0 1 0 1 => 1 3

নোট:

  • 3 বাইট সংরক্ষণ করার &(#x)#0 1জন্য স্যুইচ আউট&2!!#x




3

জে , 9 বাইট

(,|.&.>)/

ডানে থেকে বামে হ্রাস করুন, ফলাফলের সমস্ত স্ট্রিংকে বিপরীত করে এবং পরবর্তী স্ট্রিংটিকে যেমন প্রিপেন্ড করছেন।

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

আমরা ngn এর পদ্ধতির সাহায্যে 6 টি করতে পারি , তবে অতিরিক্ত স্থান থাকবে:

]&|./\

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


2

আর , 85 বাইট

for(i in seq(l<-strsplit(readLines(),"")))cat("if"(i%%2,`(`,rev)(l[[i]]),"\n",sep="")

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

স্টিডিন এবং আউটপুট থেকে স্টডআউট ইনপুট।

প্রতিটি লাইন অবশ্যই একটি লাইনফিড / ক্যারেজ রিটার্ন / সিআরএলএফ দ্বারা সমাপ্ত করা উচিত এবং এটি একটি নতুন লাইন দিয়ে মুদ্রণ করে। সুতরাং, ইনপুটগুলির একটি ট্রেলিং লাইনফিড থাকা দরকার।


2

জেলি , 5 4 বাইট

U¹ƭ€

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

-1 বাইটের জন্য হাইপার নিউট্রিনো ধন্যবাদ ! (আসলে কারণ আমি কখনই জানতাম না যে কীভাবে ƭডকুমেন্টেশনের অভাবে কাজ করে, এবার আমি ভাগ্যবান হয়ে উঠলাম)


(7 বাইট) ¦দিয়ে চেষ্টা করা হয়েছে ms2U2¦€;/এছাড়াও 7 বাইট।
ব্যবহারকারী 202729

2

টি এসকিউএল, 65 বাইট

আমাদের স্ট্যান্ডার্ড ইনপুট নিয়মগুলি এসকিউএলকে প্রাক-বিদ্যমান সারণী থেকে মানগুলি ইনপুট করতে দেয় এবং এসকিউএল অন্তর্নিহিতভাবে আনর্ডারড না থাকায় মূল পাঠ্যের ক্রম সংরক্ষণের জন্য সারণীতে সারি নম্বর থাকতে হবে।

আমি একটি পরিচয় কলাম দিয়ে সারণীটি সংজ্ঞায়িত করেছি যাতে আমরা কেবল পাঠ্যক্রমের লাইনগুলি ধারাবাহিকভাবে সন্নিবেশ করতে পারি (বাইট মোটের দিকে গণনা করা হয় না):

CREATE TABLE t 
    (i int identity(1,1)
    ,a varchar(999))

সুতরাং বিকল্প সারি নির্বাচন এবং বিপরীত করতে:

SELECT CASE WHEN i%2=0THEN a
ELSE reverse(a)END
FROM t
ORDER BY i

নোট যে আমি ব্যতীত 11 বাইট সংরক্ষণ করতে পারবেন ORDER BY i, এবং যে হয় সম্ভবত (এটা অবশ্যই 4-লাইন উদাহরণস্বরূপ করে) মূল অর্ডারে কোনো যুক্তিসংগত দৈর্ঘ্যের জন্য তালিকা দেখাবে। তবে এসকিউএল কেবল গ্যারান্টি দেয় এটির দেয় যদি আপনি অন্তর্ভুক্ত করেন ORDER BY, সুতরাং আমাদের যদি বলুন, 10,000 সারি রয়েছে, আমাদের অবশ্যই এটির প্রয়োজন হবে।



2

কমা দ্বারা বিভাজিত:

স্ট্যাক্স , 12 বাইট

ü«äì╠▒╕█╬pεû

এটি চালান এবং এটি ডিবাগ করুন

ইনপুট: এবিসি, ডিএফ, জিআইএইচ, জেকেএল, এমএনও, পিক্রি, এসটিইউ

নিউলাইন সীমানা:

স্ট্যাক্স , 8 বাইট

Çε÷┘)¼M@

এটি চালান এবং এটি ডিবাগ করুন

ইনপুট:

ABC
def
GHI
jkl
MNO
pqr
STU

উভয়ের জন্য আউটপুট:

CBA
def
IHG
jkl
ONM
pqr
UTS


1

এলিস , 13 বাইট

M%/RM\
d&\tO/

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

পৃথক কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে ইনপুট। প্রথম লাইনটি (এবং তার পরে প্রতিটি অন্যান্য লাইন) বিপরীত করে।

ব্যাখ্যা

       At the beginning of each loop iteration there will always be zero
       on top of the stack (potentially as a string, but it will be
       converted to an integer implicitly once we need it).
M      Push the number of remaining command-line arguments, M.
%      Take the zero on top of the stack modulo M. This just gives zero as
       long as there are arguments left, otherwise this terminates the
       program due to the division by zero.
/      Switch to Ordinal mode.
t      Tail. Implicitly converts the zero to a string and splits off the
       last character. The purpose of this is to put an empty string below
       the zero, which increases the stack depth by one.
M      Retrieve the next command-line argument and push it as a string.
/      Switch back to Cardinal mode.
d      Push the stack depth, D.
&\R    Switch back to Ordinal mode and reverse the current line D times.
O      Print the (possibly reversed) line with a trailing linefeed.
\      Switch back to Cardinal mode.
       The instruction pointer loops around and the program starts over
       from the beginning.

1

স্ট্যান্ডার্ড এমএল (এমএলটন) , 51 বাইট

fun$(a::b::r)=a::implode(rev(explode b)):: $r| $e=e

এটি অনলাইন চেষ্টা করুন! ব্যবহারের উদাহরণ: $ ["abc","def","ghi"]ফলন ["abc","fed","ghi"]

ব্যাখ্যা:

$স্ট্রিংগুলির তালিকার উপরে পুনরাবৃত্তি করা একটি ফাংশন। এটি দুটি স্ট্রিং নেয় aএবং bতালিকাটি থেকে, প্রথমটি অপরিবর্তিত রাখে এবং দ্বিতীয়টিকে বিপরীত করে অক্ষরগুলির তালিকায় রূপান্তর করে ( explode), তালিকাটি উল্টো করে ( revএবং) আবার স্ট্রিং ( implode) এ রূপান্তর করে ।


+1, পর্যাপ্ত এমএল সমাধান নয় ইমো
jfh

1

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

{O$^`\G.

*2G`
2A`

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: প্রথম পর্যায়ে প্রথম লাইনটি বিপরীত করা হয়, তারপরে দ্বিতীয় পর্যায়ে প্রথম দুটি লাইন প্রিন্ট করে, তৃতীয় স্তরটি তাদের মুছে ফেলে। পুরো প্রোগ্রামটি তখন পর্যন্ত পুনরাবৃত্তি করে যতক্ষণ না কিছু থাকে না। একটি শীর্ষস্থানীয় নতুন লাইনে একটি শীর্ষস্থানীয় ব্যয় সরানো যেতে পারে ;


1

ওল্ফ্রাম ভাষা (গণিত) , 33 বাইট

Fold[StringReverse@*Append,{},#]&

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

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

StringReverse@*Appendযখন স্ট্রিংগুলির তালিকা দেওয়া হয় এবং ইনপুট হিসাবে অন্য স্ট্রিং দেওয়া হয়, তালিকার শেষে স্ট্রিং যুক্ত করে এবং তারপরে সমস্ত স্ট্রিংকে বিপরীত করে দেয়।

Foldউপরোক্ত সম্মানের সাথে ইনপুট যুক্ত করার অর্থ আমরা:

  • প্রথম লাইনে বিপরীত।
  • দ্বিতীয় লাইনটি শেষের দিকে যুক্ত করুন এবং তাদের উভয়টিকে বিপরীত করুন।
  • শেষের দিকে তৃতীয় লাইন যুক্ত করুন এবং তিনটিই বিপরীত করুন।
  • চতুর্থ লাইনটি শেষে যুক্ত করুন এবং চারটি বিপরীত করুন।
  • এবং তাই, যতক্ষণ না আমরা লাইন শেষ।

প্রতিটি লাইন পূর্ববর্তী রেখার চেয়ে এক সময় কম বিপরীত হয়, সুতরাং লাইনগুলি বিকল্প দিকের দিকে।


1

সিজেম , 11 বাইট

{2/Waf.%:~}

এটি অনলাইন চেষ্টা করুন!(সিজেএম অ্যারে লিটারালগুলি পৃথক উপাদানগুলির জন্য স্পেস ব্যবহার করে)

ব্যাখ্যা:

{              Begin block, stack: ["Here are some lines" "of text for you" "to make a" "boustrophedon"]
 2/            Group by 2:         [["Here are some lines" "of text for you"] ["to make a" "boustrophedon"]]
   W           Push -1:            [["Here are some lines" "of text for you"] ["to make a" "boustrophedon"]] -1
    a          Wrap in array:      [["Here are some lines" "of text for you"] ["to make a" "boustrophedon"]] [-1]
     f.%       Vectorized zipped array reverse (black magic):
                                   [["senil emos era ereH" "of text for you"] ["a ekam ot" "boustrophedon"]]
        :~     Flatten:            ["senil emos era ereH" "of text for you" "a ekam ot" "boustrophedon"]
          }

Waf.%"কালো যাদু" অংশের জন্য ব্যাখ্যা :

  • Wএটি একটি পরিবর্তনশীল পূর্বনির্ধারিত -1aএকটি অ্যারের মধ্যে একটি উপাদান মোড়ানো, তাই Waহয় [-1]
  • %একটি সংখ্যা nএবং একটি অ্যারে পপ aকরে এবং অ্যারের প্রতিটি nতম উপাদান নেয় । যখন nনেতিবাচক হয়, এটি এটিকে বিপরীতও করে দেয় যার অর্থ W%একটি অ্যারেকে বিপরীত করে।
  • .একটি বাইনারি অপারেশন দ্বারা অনুসরণ একটি অ্যারের সম্পর্কিত উপাদানগুলির সাথে সেই অপারেশন প্রয়োগ করে, তাই [1 2 3] [4 5 6] .+হয় [5 7 9]। যদি একটি অ্যারে অন্যের চেয়ে দীর্ঘ হয় তবে উপাদানগুলি পরিবর্তন ছাড়াই রাখা হয়, যার অর্থ Wa.%অ্যারের প্রথম উপাদানটি বিপরীত হয়।
  • fবাইনারি অপারেশন অনুসরণ করে স্ট্যাক থেকে একটি উপাদান নেবে এবং তারপরে কাজ করবে {<that element> <that operation>}%, অর্থাৎ অ্যারেতে প্রতিটি উপাদান পেরিয়ে যাবে, তার উপাদানটিকে ধাক্কা দেবে, স্ট্যাক থেকে প্রথমে পপ করা উপাদানটিকে চাপ দেবে, অপারেশন চালাবে এবং তারপরে ফলাফল সংগ্রহ করবে ফিরে একটি অ্যারে মধ্যে। এর অর্থ হ'ল Wa.f%অ্যারের প্রতিটি উপাদানের প্রথম উপাদানটিকে বিপরীত করে।


1

সুইফট , 90 85 82 72 বাইট

-10 বাইটস @ মিঃ এক্সএক্সকোডারকে ধন্যবাদ thanks

func f(a:[String]){print(a.reduce([]){$0.map{"\($0.reversed())"}+‌​[$1]})}

আপনি printরিটার্ন প্রকারের ঘোষণাটি ব্যবহার করতে এবং ফেলে দিতে পারেন:func f(a:[String]){print(a.reduce([]){$0.map{"\($0.reversed())"}+[$1]})}
মিস্টার এক্সকোডার

1

চুনি , 19 + 2 = 21 বাইট

-nlপতাকাগুলির জন্য +2 বাইট ।

$.%2<1&&$_.reverse!

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

ব্যাখ্যা

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

শ্বেত স্পেসের সাথে কোডটি দেখতে এমন দেখাচ্ছে:

$. % 2 < 1 && $_.reverse!

-pবিকল্প তোলে রুবি কার্যকরভাবে এই মত একটি লুপ আপনার স্ক্রিপ্টটি মোড়ানো:

while gets
  # ...
  puts $_
end

বিশেষ চলকটি $_শেষ লাইনটি পড়ে getsএবং by$. এতে লাইন নম্বর থাকে।

-lপ্রক্রিয়াকরণ শেষ স্বয়ংক্রিয় লাইন, যা স্বয়ংক্রিয়ভাবে কল সম্ভব chop!যা সরিয়ে ফেলা হবে প্রতিটি ইনপুট লাইনে, \nআগে আমরা এটা বিপরীত।


1

জিএনইউ সেড , 31 + 1 = 32 বাইট

-rপতাকা জন্য +1 বাইট ।

G
:
s/(.)(.*\n)/\2\1/
t
s/.//
N

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

ব্যাখ্যা

G                   # Append a newline and contents of the (empty) hold space
:
  s/(.)(.*\n)/\2\1/   # Move the first character to after the newline
  t                   # If we made the above substitution, branch to :
s/.//               # Delete the first character (now the newline)
N                   # Append a newline and the next line of input

1

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

EN⎇﹪ι²⮌SS

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। দ্রষ্টব্য: কাঠকয়লা তালিকার দৈর্ঘ্য জানেন না, তাই আমি এটিকে একটি অতিরিক্ত উপাদান হিসাবে যুক্ত করেছি। ব্যাখ্যা:

 N          First value as a number
E           Map over implicit range
    ι       Current index
     ²      Literal 2
   ﹪        Modulo
  ⎇         Ternary
       S    Next string value
      ⮌     Reverse
        S   Next string value
            Implicitly print array, one element per line.

1

বেফঞ্জ -৩৩, ৪৮ বাইট

 <~,#_|#*-+92:+1:
#^_@  >:#,_"#"40g!*40p91+,~:1+

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

বিপরীতে প্রথম লাইন মুদ্রণ করে। একটি ট্রেলিং নিউলাইন রয়েছে।

মূলত, এটি মুদ্রণের মধ্যে বিকল্প হিসাবে কাজ করে যেহেতু এটি ইনপুট পায় এবং স্ট্যাকের ইনপুটটি সংরক্ষণ করে। যখন এটি একটি নিউলাইন বা ইনপুটটির শেষে পৌঁছায়, এটি স্ট্যাকটি প্রিন্ট করে, একটি নিউলাইন প্রিন্ট করে এবং 0,4 এ অক্ষরটি মোড পরিবর্তন করার জন্য একটি # বা কোনও বিকল্প হিসাবে পরিবর্তিত করে। যদি এটি ইনপুটটির শেষ হয় তবে প্রোগ্রামটি শেষ করুন

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