আপনার নিজের লাল এবং কালো তৈরি করুন


9

লেস মিসেবেরেসের সংগীত উপস্থাপনায় "লাল এবং কালো" নামে একটি গান উপস্থিত হয়েছে। এখানে সেই গানের অংশ:

লাল - ক্রুদ্ধ পুরুষদের রক্ত!

কালো - যুগে যুগে অন্ধকার!

লাল - ভোর হতে চলেছে বিশ্ব!

কালো - শেষ যে রাত!

সূত্র.

আপনার কাজটি ইনপুটটিকে একটি সুদৃ .় "লাল এবং কালো" গানে রূপান্তরিত করা।

ইনপুট

নিউলাইনস বা একটি অনুরূপ উপযুক্ত পাঠ্য ইনপুট দ্বারা সীমায়িত পাঠ্য। উদাহরণ স্বরূপ,

The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!

খালি ইনপুট অনির্ধারিত (সুযোগের বাইরে)।

আউটপুট

যদি ইনপুটটির দৈর্ঘ্য (রেখার সংখ্যা, বা ইনপুট অ্যারের দৈর্ঘ্য, বা অনুরূপ) বিজোড় হয় তবে আউটপুট কিছুই নয় বা আউটপুট মিথ্যা নয়। আপনার জমা দিতে পারে আউটপুট ত্রুটি বা সঠিক আউটপুট আউটপুট চেষ্টা না।

অন্যথায়, ইনপুটটিকে একটি লাল / কালো গীতায় পরিণত করুন। ছোট হাতের অক্ষরে রেখার শুরুতে কোনও বড় হাতের অক্ষর ঘুরিয়ে দিন। Redবিজোড় লাইনের সামনের অংশে একটি ডিলিমিটার যুক্ত করুন এবং Blackএমনকি লাইনগুলির সামনের দিকে একটি (দৃশ্যমান) ডিলিমিটার যুক্ত করুন। ডিলিমিটারটি অবশ্যই ফাঁকা জায়গায় ঘিরে রাখা উচিত, সুতরাং আউটপুটটি অবিচ্ছিন্ন দেখায় (এবং অবরুদ্ধ;))।

আপনার এখন আপনার আউটপুট আছে।

পরীক্ষার কেস

আউটপুট ডিলিমিটার হয় -

In:
The blood of angry men!
The dark of ages past!
A world about to dawn!
The night that ends at last!

Out:
Red - the blood of angry men!
Black - the dark of ages past!
Red - a world about to dawn!
Black - the night that ends at last!

In:
test test
1
[][][]
BBB

Out:
Red - test test
Black - 1
Red - [][][]
Black - bBB

In:
I feel my soul on fire!
The color of desire!
The color of despair!
Out:
falsey OR nothing

In:
Red - I feel my soul on fire!
Black - My world if she's not there!

Out:
Red - red - I feel my soul on fire!
Black - black - My world if she's not there!


"দ্বারা বা ইনপুটটির দৈর্ঘ্য বিজোড়", আপনি লাইন বা চরিত্র সম্পর্কে কথা বলছেন?
টটলম্যান

@ টুটম্যানের লাইনের সংখ্যা, আমি স্পষ্ট করে বলব
স্টিফেন

3
আমি মনে করি এই চ্যালেঞ্জটি ঠিক আছে ঠিক তবে সাধারণভাবে, জমাগুলি হ্যান্ডেল করা অবৈধ ইনপুটটি আসলে খুব বেশি যোগ করে না । কেবল ভবিষ্যতের রেফারেন্সের জন্য।
জেমস

@ ডিজেএমসিএমহেম যেহেতু কোনও উত্তর নেই, আমি খালি ইনপুটটি অপরিজ্ঞাত করে দেব - আরও অর্থবোধ তৈরি করে, ধন্যবাদ (আমি বিজোড় দৈর্ঘ্যের ইনপুটটি যেমন রাখতে চাই)
স্টিফেন

উত্তর:


4

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

কোড:

|©v”†¾ƒÏ”#Nè… - yćlìJ®gÈ×,

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

|                               # Take the input as an array of inputs
 ©                              # Keep a copy of this in the register
  v                             # Map over the array
   ”†¾ƒÏ”#                      #   Push the array ["Red", "Black"]
          Nè                    #   Get the Nth element (where N is the iteration index)
            … -                 #   Push the string " - "
                yć              #   Push the current element and extract the first element
                  lì            #   Convert to lowercase and prepend back to it's
                                    original place
                    J           #   Join the entire stack into a single string
                     ®g         #   Get the length of the input
                       È        #   Check if it is even (results in 1 or 0)
                        ×       #   String multiply the result by the string
                         ,      #   Pop and print with a newline

5

ভি , 31 , 30 বাইট

êuòIRed - 
IBlack - 
òñFRdH

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

Hexdump:

00000000: 16ea 75f2 4952 6564 202d 201b 0a49 426c  ..u.IRed - ..IBl
00000010: 6163 6b20 2d20 1b0a f2f1 4652 6448       ack - ....FRdH

এটি ভি এর ক্ষেত্রে তুচ্ছ, তবে বিজোড় ইনপুটগুলির প্রান্তের কেসটি এটি জটিল করে তোলে কারণ ভীতির সত্যই শর্তসাপেক্ষ নেই। ধন্যবাদ, আমরা +6বাইটের তুলনামূলকভাবে স্বল্প খরচে এটি পরিচালনা করতে পারি ।


5

হাস্কেল , 104 120 113 112 111 110 বাইট

import Data.Char
f x|odd$length$x=mempty|1<2=Just$zipWith(\(h:t)x->x++toLower h:t)x$cycle["Red - ","Black - "]

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

ব্যাখ্যার সাথে নিরবচ্ছিন্ন

import Data.Char

f :: [String] -> Maybe [String]
f x
  | even $ length $ x = Just $ zipWith (\(h : t) x -> x ++ toLower h : t) x $ cycle ["Red - ","Black - "]
  | otherwise         = Nothing

fএকটি ফাংশন যা স্ট্রিংগুলির একটি তালিকা নেয় (ওরফে তালিকার একটি তালিকা Char), এবং একইটি Maybeদেয়। হাস্কেলের ফাংশনগুলি বেশ "খাঁটি" এবং তাই আমাদের এটি পরিষ্কার করে দেওয়া দরকার যে এই ফাংশনটি কোনও কিছু ফেরত দিতে পারে না। (টাইপের একটি ফাংশন Maybe aহয় ফেরত দেয় ) Nothingবা Just a

|শর্তাধীন এক ধরনের - অপারেটর গার্ড নেই। যদি even $ length $ x(যা লেখার অন্য উপায় even (length x)) হয় তবে প্রথম শাখাটি অনুসরণ করা হয় True। অন্যথায়, দ্বিতীয়টি ( 1<2গল্ফযুক্ত উদাহরণে, যা অবশ্যই সর্বদা সত্য) অনুসরণ করা হয় এবং আমরা ফিরে আসি Nothing

zipWithএকটি দ্বি-যুক্তিযুক্ত ফাংশন নেয় এবং এটি দুটি তালিকার প্রতিটি উপাদানকে প্রয়োগ করে। আমরা এখানে ফাংশনটি ব্যবহার করছি \(h : t) x -> x ++ toLower h : th : tস্পষ্টভাবে আমাদের প্রথম যুক্তি থেকে প্রথম চরিত্রটি বিভক্ত করে তোলে, যা হ্যাসকেলে আপনি করতে পারেন এমন দুর্দান্ত জিনিস। প্রথম তালিকাটি হ'ল ইনপুট (যা আমরা ইতিমধ্যে জানি যে একাধিক লাইন রয়েছে), এবং দ্বিতীয়টি কেবল "রেড -" এবং "ব্ল্যাক -" পরিবর্তিত হয় (অসীম তালিকাগুলি এই মুহূর্তে সম্ভব যে এটি সম্ভব, এবার হ্যাসেল কারণ অলস - এটি কেবল আপনার যতটুকু ব্যবহার করুন তার পক্ষে যত্নশীল)।


(h:t)!x=x++toLower h:tকিছু বাইট সংরক্ষণ করে
লাইকনি

দুটি কেস স্যুইচ করা আরেকটি বাইট সংরক্ষণ করে:f x|odd$length$x=Nothing|1<2=Just ...
লাইকনি

@ লাইকোনি তাদের জন্য ধন্যবাদ! আমি হাস্কেলের কাছে বেশ নতুন এবং এটি আমার মধ্যে প্রথমবারের মতো গল্ফ করছে - এবং আমি সত্যিই এটি পছন্দ করছি!
ফেলিক্সহো

memptyতুলনায় 1 বাইট সাশ্রয় Nothing!
বার্তাভেল

এর পরিবর্তে সংজ্ঞা দিয়ে c="Red - ":"Black - ":cও ব্যবহার করে আপনি অন্য বাইট সংরক্ষণ করতে পারেন : এটি অনলাইনে চেষ্টা করুন! ccycle["Red - ","Black - "]
লাইকনি

3

জেলি , 29 বাইট

0
“ZœĠk»ḲṁJżj€“ - ”Y
ỴŒl1¦€LĿ

একটি সম্পূর্ণ প্রোগ্রাম।
বিজোড় সংখ্যক লাইনের ইনপুটগুলির জন্য "ফেলি" আউটপুট বিকল্প ব্যবহার করে।

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

কিভাবে?

0 - Link 1, return a falsey value: no arguments
0 - well, yeah, zero - that's falsey.

“ZœĠk»ḲṁJżj€“ - ”Y - Link 2, format the lines: list of lists of characters, the lines
“ZœĠk»             - "Red Black"
      Ḳ            - split at spaces -> ["Red","Black"]
        J          - range(length(lines)) -> [1,2,3,...,nLines]
       ṁ           - mould -> ["Red","Black","Red","Black",...,"Red","Black"]
         ż         - zip with lines -> [["Red",l1],["Black",l2],...]
            “ - ”  - " - " (really I cant find any save :/)
          j€       - join for each -> ["Red - l1","Black - l2",...]
                 Y - join with newlines

ỴŒl1¦€LĿ - Main link: string
Ỵ        - split at newlines
   1¦€   - apply to index 1:
 Œl      -   convert to lower case
       Ŀ - call link at index:
      L  -   length - Note: this is modular, so:
         -                  link 2 is called for even, and
         -                  link 1 is called for odd.


3

সি, 112 107 105 103 99 বাইট

-4 কেবলমাত্র এসসিআইআই
-2 -কে মেগোকে ধন্যবাদ জানায়

i;main(a,s)char**s;{for(;a%2&++i<a;)printf("%s - %c%s\n",i%2?"Red":"Black",tolower(*s[i]),s[i]+1);}

ইনপুট হিসাবে একটি "অ্যারে" নেয়। উদাহরণ:

bash$ ./a.out "The blood of angry men!" "The dark of ages past!" "A world about to dawn!"
bash$ ./a.out "The blood of angry men!" "The dark of ages past!" "A world about to dawn!" "The night that ends at last!"                                                 
Red - the blood of angry men!
Black - the dark of ages past!
Red - a world about to dawn!
Black - the night that ends at last!

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

  • iiসমস্ত ফাংশনের বাইরে একটি ভেরিয়েবল তৈরি করে যার অর্থ এটি স্বয়ংক্রিয়ভাবে 0 এ সূচনা হয়।
  • main(a,s)char**s;{মূল ফাংশন ঘোষণা করে, যা দুটি আর্গুমেন্ট গ্রহণ করে - একটি int a(কমান্ড লাইন আর্গুমেন্টের #), এবং একটি char ** s(কমান্ড লাইন আর্গুমেন্টের অ্যারে)।
  • for(;a%2&++i<a;)এটি একটি লুপ যা সমান a( a%2) হয় কিনা তা পরীক্ষা করে এবং এটি যদি কমান্ড লাইন আর্গুমেন্টের ( i<a) পাস করার চেয়ে কম হয় ।
  • printf("%s - %c%s\n",i%2"Red":"Black",tolower(*s[i]),s[i]+1 কপি করে প্রিন্ট:
    • "রেড" যদি iবিজোড় হয়, "black" যদি iএমনকি ( i%2?"Red":"Black")
    • লোয়ারকেসে বর্তমান কমান্ড-লাইন আর্গুমেন্টের প্রথম অক্ষর ( tolower(*s[i]))
    • প্রথম অক্ষর ছাড়া স্ট্রিং ( s[i]+1)

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


গ্লোবাল ভেরিয়েবলগুলি ডিফল্ট-আরম্ভ হয়, সুতরাং আপনি =0আরও 2 টি বাইট সংরক্ষণ করার জন্য অংশটি বাদ দিতে পারেন ।
কোডি ধূসর

@ কোডি গ্রে ওহ, ধন্যবাদ!
এমডি এক্সএফ





1

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

গানটিকে লাইনের অ্যারে হিসাবে নিয়ে যায়।

S=>S.length%2?0:S.map((L,i)=>(i%2?'Black':'Red')+' - '+L[0].toLowerCase()+L.slice(1)).join`
`


@ স্টিফেন-এস কি এই ইনপুটটিকে বৈধ হিসাবে গণনা করে?
ভিটিম.ওস

1

পাইথন 2 , 215-> 184-> 165 বাইট

স্টিফেন এস এর মন্তব্য অনুসারে 31 বাইট সংরক্ষণ করা হয়েছে

চ্যালেঞ্জার 5 এটি 165 বাইটে নেমেছে

l=[]
b=["Red","Black"]
d=" - "
while 1:
 a=raw_input()
 if a:l.append(a)
 else:break
q=len(l)
if q%2<1:
 for i in range(q):n=l[i];print b[i%2]+d+n[0].lower()+n[1:]

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


আপনি ইনডেন্টেশনের জন্য একক স্পেস ব্যবহার করে কিছু বাইট সংরক্ষণ করতে পারেন? আমি পাইথনকে সেভাবে ভাল জানি না তবে আমি মনে করি এটি কার্যকর হয়
স্টিফেন

@ স্টেফেন এস: হ্যাঁ, আমি মনে করি আপনি ঠিক বলেছেন।
এলএমডি


1

জাভাস্ক্রিপ্ট, 118 বাইট

v=s=>(s=s.split`\n`).length%2==0?s.map((l,i)=>(i%2==0?'Red':'Black')+' - '+l[0].toLowerCase()+l.substr`1`).join`\n`:!1

পরীক্ষা

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