বিপরীত বোস্ট্রোফডন পাঠ্য


19

বাস্ট্রোফিডন দ্বি-নির্দেশমূলক পাঠের এক ধরণের পাঠ যেখানে বাম থেকে ডান এবং ডান থেকে বামে পড়ার মাঝে ধারাবাহিক রেখার বিকল্প থাকে। চরিত্রের দিকনির্দেশটি পড়ার দিক থেকে সম্মানের সাথেও মিরর করা হয়েছিল। বিপরীত বুস্ট্রোফিডন রাইটিং সিস্টেমে, অক্ষরগুলি মিরর করার পরিবর্তে 180 টি ঘোরানো হয়েছিল।

চ্যালেঞ্জ

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

ইনপুট

আপনার প্রোগ্রামটি দুটি যুক্তি গ্রহণ করা উচিত:

  • এস, বিন্যাসে পাঠ্যের স্ট্রিং
  • এন, কলামের সংখ্যা

আউটপুট

আপনার প্রোগ্রামটি 180 ডিগ্রি উল্টানো বিকল্প লাইনের সাথে এন কলামগুলিতে এস মোড়ানো এসকে আউটপুট দেয়।

  • প্রথম লাইনের পাঠের দিকটি সর্বদা বাম থেকে ডানে থাকে।
  • লাইন বিরতি কোথায় রাখবেন তা নিয়ে চিন্তা করবেন না, লাইনগুলি কোনও চরিত্রে বিভক্ত হতে পারে, শব্দের কোনও হাইপেনেশনের প্রয়োজন নেই।
  • আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংটিতে কোনও লাইন ব্রেক থাকবে না।

আপনার প্রোগ্রামটি তাদের ফ্লিপ হওয়া অংশগুলির সাথে এমন অক্ষরগুলি সমর্থন করতে পারে:

Uppercase:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z

Lowercase:
abcdefghijklmnopqrstuvwxyz
ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz

Punctuation:
&_?!"'.,
⅋‾¿¡„,˙'

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

S: The quick brown fox jumps over the lazy dog.
N: 30
Output:
The quick brown fox jumps over
                ˙ƃop ʎzɐl ǝɥʇ 

S: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vel libero arcu. Nunc dictum elementum lectus nec aliquet. Donec dolor nunc, sodales at dolor rhoncus, hendrerit scelerisque purus. Pellentesque vel sagittis libero, et rutrum leo. Nullam vulputate enim et massa dictum, vitae venenatis augue lobortis. Fusce sollicitudin ultrices consequat. Vestibulum quis nunc non tortor eleifend facilisis. In at nunc elit. Aliquam pellentesque, lectus quis aliquam posuere, quam lectus sagittis metus, ut auctor sem quam a neque. Integer rhoncus lobortis nisl. Pellentesque mi dui, laoreet in metus quis, mollis accumsan est. Nunc dignissim tortor ac eleifend tempus. Ut ut tellus aliquam, luctus nulla quis, consectetur nunc. Suspendisse viverra molestie condimentum. Curabitur et hendrerit augue.
N: 50
Output:
Lorem ipsum dolor sit amet, consectetur adipiscing
uǝɯǝlǝ ɯnʇɔᴉp ɔunN ˙nɔɹɐ oɹǝqᴉl lǝʌ ǝnbsᴉnQ ˙ʇᴉlǝ 
tum lectus nec aliquet. Donec dolor nunc, sodales 
lǝԀ ˙snɹnd ǝnbsᴉɹǝlǝɔs ʇᴉɹǝɹpuǝɥ 'snɔuoɥɹ ɹolop ʇɐ
lentesque vel sagittis libero, et rutrum leo. Null
sᴉʇɐuǝuǝʌ ǝɐʇᴉʌ 'ɯnʇɔᴉp ɐssɐɯ ʇǝ ɯᴉuǝ ǝʇɐʇndlnʌ ɯɐ
 augue lobortis. Fusce sollicitudin ultrices conse
ɔɐɟ puǝɟᴉǝlǝ ɹoʇɹoʇ uou ɔunu sᴉnb ɯnlnqᴉʇsǝΛ ˙ʇɐnb
ilisis. In at nunc elit. Aliquam pellentesque, lec
ʇǝɯ sᴉʇʇᴉƃɐs snʇɔǝl ɯɐnb 'ǝɹǝnsod ɯɐnbᴉlɐ sᴉnb snʇ
us, ut auctor sem quam a neque. Integer rhoncus lo
snʇǝɯ uᴉ ʇǝǝɹoɐl 'ᴉnp ᴉɯ ǝnbsǝʇuǝllǝԀ ˙lsᴉu sᴉʇɹoq
 quis, mollis accumsan est. Nunc dignissim tortor 
u snʇɔnl 'ɯɐnbᴉlɐ snllǝʇ ʇn ʇ∩ ˙sndɯǝʇ puǝɟᴉǝlǝ ɔɐ
ulla quis, consectetur nunc. Suspendisse viverra m
˙ǝnƃnɐ ʇᴉɹǝɹpuǝɥ ʇǝ ɹnʇᴉqɐɹnƆ ˙ɯnʇuǝɯᴉpuoɔ ǝᴉʇsǝlo

উত্তর:


5

বাশ + জিএনইউ ইউটিলিটিস, 204

fold -$1|sed 2~2{s/.\\+/printf\ %$1's "`echo "&"|rev`"/e
y/'`printf %s {A..Z} {a..z}`"&_?!\"'.,/∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Zɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz⅋‾¿¡„,˙'/
}"

কমান্ড লাইনে এন দেওয়া হয় এবং এসটিডিএন এর মাধ্যমে এস দেওয়া হয়:

$ echo "The quick brown fox jumps over the lazy dog." | ./boustrophedon.sh 30
The quick brown fox jumps over
                ˙ƃop ʎzɐl ǝɥʇ 
$ 

ব্যাখ্যা

  • fold -N দৈর্ঘ্যের এন লাইনে ইনপুট বিভক্ত করে
  • বাকি প্রক্রিয়াজাতকরণ লম্বা লাইন দ্বারা চালিত হয়:
    • 2~2 লাইন 2 থেকে শুরু করে, অন্য প্রতিটি লাইনের সাথে মেলে
    • s/.+/printf %'N's "`echo "&"|rev`"/e লাইনটি রিভার্স করতে শেলকে কল করতে GNU Sed এর এক্সিকিউট বৈশিষ্ট্যটি ব্যবহার করে এবং এটিকে এন স্পেস সহ বাম-প্যাড করুন
    • y/ABC.../∀qƆ.../ অক্ষর রূপান্তর

নোটটি ABC...ব্যাশ সম্প্রসারণ এবং প্রিন্টফ ব্যবহার করে তৈরি করা হয়। এছাড়াও সমস্ত অভিনব চরিত্রের জন্য কিছু অভিনব উদ্ধৃতি।


ধন্যবাদ @ আইসএইচজি - আমি ভেবেছিলাম আমি ডাবল ব্যাকটিক চেষ্টা করেছি, তবে আমার ধারণা আমি এটি মিস করেছি।
ডিজিটাল ট্রমা

3

জাপট , 182 179 বাইট

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়অনুবাদক

Ur'.+".?"pV-1 ,@A++%2?SpV-Xl)+Xw m@"„\xA1⅋,'˙¿∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z[\\]^‾`ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz"g(Q+"!&',.?"+65o124 m@Xd)a)bX)||X +R:X+R

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

             // Implicit: U = input string, V = input number, A = 10
Ur           // Take U and replace each group X of:
'.+".?"pV-1  //  at least one char, followed by up to V-1 other chars
             //   literally: RegExp("." + ".?".repeat(V-1))
@            // with: (@ is compiled to (X,Y,Z)=>)
A++%2?       //  If we're on an odd row:
SpV-Xl)+     //   Pad it with spaces, then concatenate it with
Xw m@        //   X reversed, with each character X mapped to:
"..."g       //   The character at position N in the string, where N is:
(Q+"!&',.?"  //    Build a string from a quote mark and these chars,
65o124 m@Xd)a) //   and all chars from A..z.
bX)          //    Return the index of X in this string.
||X          //   or if this number is outside the string, default to the original char.
+R           //   Either way, add a newline.
:X+R         //  Otherwise, return the original row text plus a newline.
             // Implicit: output last expression

বেশ কয়েকটি সমস্যা রয়েছে, তবে তাদের প্রোগ্রামের বৈধতা প্রভাবিত করা উচিত নয়:

  1. ব্যবহারকারী @ Vɪʜᴀɴ সাম্প্রতিক সময়ে আমাকে ইউনিকোড শর্টকাটগুলি বাস্তবায়িত করতে সহায়তা করেছে, বা 00A1-00FF পরিসীমাতে একক অক্ষর যা সাধারণত ব্যবহৃত বেশ কয়েকটি চর সিকোয়েন্সগুলির জন্য দাঁড়ায়। এটির সাথে সমস্যাটি হ'ল এটি বর্তমানে স্ট্রিংগুলির অভ্যন্তরে প্রতিস্থাপন করে, তাই আমরা এখনকার জন্য স্ট্রিংয়ে সরাসরি ব্যবহার করতে পারি না। নিরাপদ বিকল্প, \xA1তিন বাইট দীর্ঘ।
  2. ডাবল-উদ্ধৃতি চরিত্রটি ইনপুট করা বর্তমানে অসম্ভব। এটি শীঘ্রই ঠিক করা হবে।

সম্ভবত স্ট্রিংটি ছোট করার কোনও উপায় আছে। পরামর্শ স্বাগত!


নিস! আমি আমার সমাধানটি পরে জাপটে রূপান্তর করার চেষ্টা করতে চেয়েছিলাম, তবে এটি পিষ্টক লাগে takes
স্কট

2

সিজেম, 152

l~_q/\f{Se]}2/{)26,'Af+_el+"&_?!'.,"`+"∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Zɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz„⅋‾¿¡,˙'"erW%}%N*

এটি এখানে পরীক্ষা করুন।

আমার ধারণা আমি ইউনিকোড স্ট্রিংটি কিছুটা কমপ্রেস করা উচিত ...


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

2

জাভাস্ক্রিপ্ট (ES6), 407 400 366 360 353 বাইট

আমি এই স্নিপেটে প্রথম দুটি "লাইন" গণনা করছি মোট সংখ্যা হিসাবে, বাকিটি এটি চালানোর কোড হিসাবে।

s=`ABCDEFGHIJKLMNOPQRSTUVWXYZqƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMXZabcdefghijklmnopqrstuvwxyzɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz&_?!"'.,⅋‾¿¡„,˙'`,f=(i,w)=>(i=i.match(RegExp(`.{1,${w}}`,"g")),i.map((c,x)=>x%2?" ".repeat(w-c.length)+[...c].reverse().map(b=>(d=s.indexOf(b),"A"<=b&&"z">=b?s[d+26]:" "==b?b:s[d+8])).join``:c).join`
`)

let input = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vel libero arcu. Nunc dictum elementum lectus nec aliquet. Donec dolor nunc, sodales at dolor rhoncus, hendrerit scelerisque purus. Pellentesque vel sagittis libero, et rutrum leo. Nullam vulputate enim et massa dictum, vitae venenatis augue lobortis. Fusce sollicitudin ultrices consequat. Vestibulum quis nunc non tortor eleifend facilisis. In at nunc elit. Aliquam pellentesque, lectus quis aliquam posuere, quam lectus sagittis metus, ut auctor sem quam a neque. Integer rhoncus lobortis nisl. Pellentesque mi dui, laoreet in metus quis, mollis accumsan est. Nunc dignissim tortor ac eleifend tempus. Ut ut tellus aliquam, luctus nulla quis, consectetur nunc. Suspendisse viverra molestie condimentum. Curabitur et hendrerit augue.";
console.log(f(input, 50));

ব্যাখ্যা

s=`A∀ .. ZZaɐ .. &⅋ ..`,                            //Character translation "map"
f=(i,w)=>                                           //Create a function named "f" that takes an (i)nput string and (w)idth
    (                                               //Implicitly return
        i=i.match(RegExp(`.{1,${w}}`,"g")),         //Cut string into arrays every w-th match of anything
        i.map((c,x)=>                               //Loop through each element in array by (c)ut at inde(x)
            x%2                                     //If the index is odd
                ?" ".repeat(w-c.length)                 //Output spaces for padding
                    +[...c].reverse()                   //Split this cut into each character, and read it backwards
                    .map((b,d)=>(                       //Translate each character
                        d=s.indexOf(b),                 //Save where this character appears in the mapping
                        "A"<=b&&"z">=b                  //If the character is a-zA-Z
                        ?s[d+26]                            //Print the flipped character by looking 26 characters ahead of where this character is found
                        :" "==b                             //Else, if it's a space
                            ?b                              //Output the space
                            :s[d+8]))                   //Else, print the flipped punctuation character (only 8 of these)
                    .join``                         //Join everything back into a continuous string
                :c                                  //Else just output the whole cut
            ).join`                                 
`)                                                  //Finally join each cut by a newline

  • -6 বাইটের জন্য ডেন্ড্রোবিয়ামকে ধন্যবাদ!
  • -34 বাইটের জন্য ক্লোজার সংকলককে ধন্যবাদ!
  • -7 বাইটের জন্য ן nɟuɐɯɹɐ ן oɯ ধন্যবাদ!

1
আপনি আপনার সব কমে যায় .split("")'s এবং .join("")এর থেকে .split``এবং .join``কয়েক বাইট বন্ধ করতে শেভ। এর .join("\n")পরিবর্তে আক্ষরিক নিউলাইন দিয়ে উপরের মতো আবারও লেখা যেতে পারে \n
ডেনড্রোবিয়াম

দুর্দান্ত টিপস, আপনাকে অনেক ধন্যবাদ!
স্কট

1
আপনি রেজেক্সের জন্য নতুন কীওয়ার্ডটি বের করতে পারেন। ম্যাচের পরিবর্তে এক্সেক ব্যবহার করুন। ওহ হ্যাঁ, সি.স্প্লিটের পরিবর্তে [... গ] ব্যবহার করুন ``
মামা ফান রোল

@! Nɟuɐɯɹɐ ן oɯ ভাল লাগল, ধন্যবাদ! আমি কীভাবে এটি ব্যবহার করব execএবং এটি সংক্ষিপ্ত রাখব তা বুঝতে পারি না , যেহেতু execসমস্ত ম্যাচ পাওয়ার জন্য লুপ করা দরকার।
স্কট

ওহ, এক্সিকিউট সম্পর্কে কিছুই নয় ...
মামা ফান রোল

1

পাইথ, 141 বাইট

FNrZlKczQI%N2X.[" "Q_@KN++GrG1"&_?!\"'.,""ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z⅋‾¿¡„,˙'")E@KN

একটি অনলাইন পাইথ কম্পাইলার দিয়ে পরীক্ষিত।

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

FNrZlKczQI%N2X.[" "Q_@KN)E@KN    █
                                 █
FN                               █ For N in 
  r                              █  ├ Range
   Z                             █  |  ・Start: 0 
                                 █  |  ・End: 
    l                            █  |     Length of
     K                           █  |      └─K = 
      c                          █  |         Split
       z                         █  |           ・String z
        Q                        █  |           ・By input int Q
         I%N2                    █  └─If divisible by 2
             X                   █     └─Translate
                                 █         ├─Source:
              .[                 █         | ├─Pad left
                " "              █         | |   ・With spaces
                   Q             █         | |   ・Until input int Q
                    _            █         | └──Reverse
                     @KN         █         |     ・Nth line of K
                        ++GrG1...█         ├─From: Normal  (See below)
                        "ɐqɔpǝ...█         └─To:   Flipped (See below)
                        )E@KN    █     Else print Nth line of K

মানচিত্র

সাধারণ

++                               █ Append:
  G                              █  1) a to z
   rG1                           █  2) A to Z
      "&_?!\"'.,"                █  3) Punctuation

উল্টানো (অভিনব কিছু নয়)

"ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z⅋‾¿¡„,˙'"

এটি 108 টি অক্ষর দীর্ঘ; তবে কোড-গল্ফ প্রোগ্রামগুলির দৈর্ঘ্য পরিমাপের ডিফল্ট উপায় বাইটগুলিতেএই পৃষ্ঠা অনুসারে , এই উত্তরের দৈর্ঘ্য 141 বাইট
ETH প্রোডাকশনগুলি

ধন্যবাদ ETH প্রডাকশন ধন্যবাদ। পরিবর্তন হয়েছে।
হেলিক্স কোয়ার

0

পাইথন, 453 363 বাইট

s,n=input()
o="""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&_?!"'.,"""
p="""∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Zɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz⅋‾¿¡„,˙'""".decode('utf8')
s=map(''.join,zip(*[iter(s+' '*(n-1))]*n))
for i in range(len(s)):
 if i%2:s[i]=''.join(p[o.find(c)].encode('utf8')for c in s[i][::-1])
for l in s:print l
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.