পরের রঙ


20

চ্যালেঞ্জ

রংধনুকে সাতটি রঙ হিসাবে বিবেচনা করুন, যেমন স্ট্রিং দ্বারা প্রতিনিধিত্ব করা Red Orange Yellow Green Blue Indigo Violet
আপনার কাজ হ'ল এমন একটি প্রোগ্রাম তৈরি করা যা এই রংয়ের মধ্যে একটির ইনপুট হিসাবে গ্রহণ করে এবং পাশের রংধনু রঙের পরবর্তী আউটপুট। এর মধ্যে ওভারল্যাপিং অন্তর্ভুক্ত রয়েছেViolet -> Red

ইনপুট

একটি স্ট্রিং যা রংধনু রঙের একটি ধারণ করে।

আউটপুট

রংধনু পরবর্তী ক্রম রঙ।

বিধি

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

উদাহরণ ইনপুট এবং আউটপুট

Input -> Output
Red -> Orange
Orange -> Yellow
Yellow -> Green
Green -> Blue
Blue -> Indigo
Indigo -> Violet
Violet -> Red

1
"কমপক্ষে একটি উদাহরণ ইনপুট এবং আউটপুট সরবরাহ করুন the ইনপুটটি কেমন হওয়া উচিত তা আপনার নিজের বর্ণনার সাথে মিলে যায় তা নিশ্চিত করুন Make" আপনি কি নিজের চ্যালেঞ্জ পোস্টটি বর্ণনা করছেন? নাকি এটি সমাধানের প্রয়োজন?
পুনরাবৃত্তি

6
লোয়ার কেসের রং ঠিক আছে?
Emigna

4
কিন্তু 'ধূসর' পৌঁছলে কী ঘটে? ;)
এজেফারাডে

1
@ এমিগানা ওপিকে যেভাবে প্রশ্নটি চিহ্নিত করেছে, সেখান থেকে আমি অনুমান করব যে আপনি উপরের কেস, লোয়ার কেস বা সংবেদনশীল না হওয়া নির্বাচন করতে পারেন। Provide at least one example input and output. Make sure they match your own description of what the input should look like.
sonrad10

1
পিছনে স্থান ঠিক আছে?
ivzem

উত্তর:



22

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

s=>'RedOrangeYellowGreenBlueIndigoVioletRed'.match(s+'(.[a-z]*)')[1]

ইনপুট জন্য "Red", এই ফাংশনটি প্রথমে স্ট্রিংয়ের /Red(.[a-z]*)/সাথে মেলে একটি RegExp নির্মাণ করে 'RedOrangeYellowGreenBlueIndigoVioletRed'এবং তারপরে প্রথম ক্যাপচার ফলাফলটি ফেরত দেয়।


"ভায়োলেট" ইনপুট দেওয়ার ফলাফল কী? আমি অনুমান করি আপনার পাঠ্যটি কোনও 'RedOrangeYellowGreenBlueIndigoVioletRed'বা কোনও কিছুতে পরিবর্তন করা উচিত
অলিভিয়ের গ্রাগোয়ার

1
@ অলিভিয়েরগ্রোগোয়ার ওকে যোগ হয়েছে। উত্তর পোস্ট করার পরে এই নিয়মটি ওপি দ্বারা পরিবর্তন করা হয়েছে।
tsh

আমি জানতাম না: আমি কেবল প্রশ্নের চূড়ান্ত সংস্করণ দেখেছি।
অলিভিয়ার গ্রাগোয়ার

9

পার্ল 5 -p , 58 57 বাইট

#!/usr/bin/perl -p
$_={(Red,Orange,Yellow,Green,Blue,Indigo,Violet)x2}->{$_}

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

এখন যে চ্যালেঞ্জটি রেজেক্স সমাধানটিকে চক্রযুক্ত করে পরিবর্তন করা হয়েছে

say RedOrangeYellowGreenBlueIndigoVioletRed=~/$_(.[a-z]+)/

সর্বোত্তম নয় (দ্বিগুণ কারণে Red)

এছাড়াও 57 বাইট:

#!/usr/bin/perl -p
$_=(Indigo,Blue,Violet,Yellow,Orange,Red,Green)[ord>>2&7]

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


7

পাইথন , 79 বাইট

z="Red Orange Yellow Green Blue Indigo Violet".split()*2
dict(zip(z,z[1:])).get

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

হ্যান্ডলগুলি Violet -> Red। পছন্দসই ফাংশনটি দ্বিতীয় লাইনে বেনামে দেওয়া হয়।


80 বাইট

lambda x:"Red Orange Yellow Green Blue Indigo Violet Red".split(x)[1].split()[0]

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


7

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

{<Indigo Blue Violet Yellow Orange Red Green>[.ord/4%8]}

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

প্রতিটি বর্ণের প্রথম বর্ণের ASCII কোডগুলির 2-4 বিট ম্যাপে 0-6-এ আসে তা আবিষ্কার করে।

say map (*.ord +> 2) % 8, <R O Y G B I V>
# (4 3 6 1 0 2 5)

এখানে একটি দুর্দান্ত প্রতিযোগিতামূলক সমাধান যা "নীল" এবং "ভায়োলেট" (38 টি অক্ষর, 59 বাইট) এর পরিবর্তে "বেগুনি" ব্যবহার করে:

{'🍎🧡💛💚💙💜🍎'.uninames~~m/$^a.\S+.<(\S+/}

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


সর্বশক্তিমান ইউনিকোডের নামগুলি
ওয়েইজুন ঝাউ

এই সমাধান হিসাবে আকর্ষণীয় হিসাবে, এটি শেষ পর্যন্ত অনুমান অনুসরণ করে না। আপনি কি উত্তর দেওয়ার মতো কোনও উপযুক্ত সংস্করণ অন্তর্ভুক্ত করতে এবং এটিকে একটি সংযোজন হিসাবে পোস্ট করতে পারেন?
ডেনিস

%12নারকেলের জন্য একটি সমাধানও রয়েছে তবে অবশ্যই এটি আরও সুক্ষ্ম।
ওয়েইজুন চিউ

5

রুবি -n , 62 60 বাইট

-২ আসোন তুহিদ লিখেছেন।

p"RedVioletIndigoBlueGreenYellowOrangeRed"[/.[a-z]+(?=#$_)/]

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

রেজেক্স পদ্ধতির বিষয়টি রুবির পক্ষেও আশাব্যঞ্জক দেখাচ্ছে। যাইহোক, আমি ক্যাপচার গ্রুপগুলির সাথে খেলার চেয়ে লুকে হেড ব্যবহার করে সরাসরি ম্যাচটি প্রিন্ট করেছিলাম solution বর্ণের তালিকাটি বিপরীত দিকে রয়েছে কারণ লুকোহাইডের চেয়ে লকহ্যাডটি 1 বাইট কম সস্তা।


খুব সুন্দর, -2 বাইট ( /#$_/ইন্টারপোলিট)
Asone Tuhid

4

লাল , 87 বাইট

func[c][print first find/tail[Red Orange Yellow Green Blue Indigo Violet Red]to-word c]

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


4
এই কোডটি কী, আপনার কোড কীভাবে কাজ করে বা কীভাবে গল্ফড হয়েছে সে সম্পর্কে ধারণা নেই তবে কেবল এই চ্যালেঞ্জের জন্য "রেড" নামক একটি ভাষা ব্যবহারের জন্য একটি +1 আছে।
এমএস 210

@ msh210 এটি রেবোলের সাথে সম্পর্কিত (সম্পর্কিত এক্সপ্রেশন-ভিত্তিক অবজেক্ট ল্যাঙ্গুয়েজ)। ভাষা একই পদ্ধতিতে কোড, ডেটা এবং মেটাডেটা উপস্থাপন করে - [] দ্বারা বর্ণিত ব্লকগুলির সাথে। বর্তমানের রেড ডিস্ট্রিবিউশনটি কেবল ১.১ মেগাবাইট এবং এতে একটি কনসোল / ইন্টারপিটার এবং সেইসাথে সংকলক রয়েছে যা বিভিন্ন প্ল্যাটফর্মগুলিতে ক্রস-কমপ্লাই করতে পারে। আমার কোডটি সেই বোধে গল্ফ করা হয়েছে যে আমি বিভিন্ন সমাধানের চেষ্টা করেছিলাম এবং আমার সমস্ত স্থান সরিয়ে ফেলতে পারে। খারাপ জিনিসটি হ'ল স্থানটি প্রায় সর্বত্রই ডিলিমিটার। সমস্ত গণিতের এক্সপ্রেশনগুলির অপারেটরগুলির উভয় দিকে যেমন: বি + সি (a = বি + সি) এর ফাঁকা স্থান থাকা দরকার।
গ্যালেন ইভানভ


3

এক্সেল, 85 বাইট

=CHOOSE(MOD(CODE(A1),12),"green","indigo","yellow",,,"orange","blue",,"violet","red")

ছোট হাতের নাম ব্যবহার করে।

উচ্চতর অক্ষর 86 বাইট সহ একই পন্থা:

=CHOOSE(MOD(CODE(A1),12),"Violet","Red",,,"Green","Indigo","Yellow",,,"Orange","Blue")

3

হাস্কেল , 80 71 75 বাইট

9 বাইট সংক্ষিপ্ত করার জন্য লাইকোনিকে ধন্যবাদ!

g x=snd(span(/=x)$words"Red Orange Yellow Green Blue Indigo Violet Red")!!1

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


আর একটি সমাধান, কিছুটা বেশি মূio়, তবে আমি এটি সংক্ষিপ্ত করতে পারিনি:

data R=Red|Orange|Yellow|Green|Blue|Indigo|Violet deriving(Enum,Read,Eq)
succ.read

এটি Readইনপুটটি একটি স্ট্রিং এবং কমপক্ষে Eqবা Showহয় সাম্যতার জন্য পরীক্ষা করার জন্য বা ফলাফলটি দেখানোর জন্য প্রয়োজনীয়তার কারণে এটি অর্জন করা প্রয়োজন।



@ লাইকনি বাহ, দারুণ, ধন্যবাদ! আমি ভুলে গিয়েছিলাম span...
ক্রিশ্চিয়ান লুপাস্কু

1
ওপি স্পষ্ট করে জানিয়েছে যে এর Violetচারপাশে মোড়ানো উচিত Red, সুতরাং আপনাকে Redস্ট্রিংয়ের শেষে আবার যুক্ত করতে হবে।
লাইকোনি

দ্বিতীয়টির ধারণাটি আমার অনেক পছন্দ! তবে succ VioletEnum
এগুলি

@ বিএমও ঠিক আমি যখন এই সংস্করণটি তৈরি করলাম তখন মোড়কের আশেপাশের প্রয়োজনীয়তা সম্পর্কে আমি সচেতন ছিলাম না।
ক্রিশ্চিয়ান লুপাস্কু

3

রেটিনা , 65 58 বাইট

$
(.[a-z]+)
L$:`RedOrangeYellowGreenBlueIndigoVioletRed
$1

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

ব্যাখ্যা

$
(.[a-z]+)

আমরা ইনপুটটিতে সংযুক্তি (.[a-z]+)দিয়ে শুরু করি , এরপরে এটিকে একটি রেজেক্সে পরিণত করি যা সাথে সাথে ইনপুট রঙের সাথে মেলে, তত্ক্ষণাত্ ঠিক আরও একটি রঙ (পরবর্তীটি ক্যাপচার করে) অনুসরণ করে।

L$:`RedOrangeYellowGreenBlueIndigoVioletRed
$1

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



হ্যাঁ, আমি কেভিনের সমাধান দেখে আমার মন্তব্য সরিয়েছি। \1টার্গেটে সেট আপ করা এবং জাম্পিং করা অনেকগুলি বাইট অপচয় করে: :-)
টন হসপেল

@ টনহোপেল কিছু খুঁজে পেয়েছে। :)
মার্টিন ইন্ডার

1
@ কেভিন ক্রুইজসেন আপনার এবং টনের একটি বি-সীমিত সমাধানের জন্য চাপ দেওয়ার জন্য ধন্যবাদ, আমি 58-বাইটার খুঁজে পেয়েছি। ;)
মার্টিন এন্ডার

3

ভিম, 59 56 53 52 বাইট

-1 বাইট ধন্যবাদ tsh

2IYellow Green Blue Indigo Violet Red Orange <Esc>*wywVp

1
2IYellow সবুজ, নীল নীল বেগুনি লাল কমলা <Esc চাপুন> * wywVp
TSH

3

জাভা (জেডিকে 10) , 77 বাইট

s->"Red Orange Yellow Green Blue Indigo Violet Red".split(s)[1].split(" ")[1]

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

ক্রেডিট



@ কেভিন ক্রুইজসেন যে আপনি পেয়েছেন যে কিছু দুর্দান্ত রেগেক্স ফু!
অলিভিয়ার গ্রাগোয়ার

1
আমার মনে আছে যখন আমি একবার বিভাজনের সন্ধান করছিলাম যা ডিলিমিটরকে পৃথক আইটেম হিসাবে রাখে যে আমি যে উত্তর পেয়েছি সেটিতে সীমানাটি সীমানা বা পিছনের অংশ হিসাবে সংহত রাখার বিকল্প রয়েছে এবং অনুভূত হয়েছে যে এটি এখানে কার্যকর হবে। :) উল্লিখিত অন্য দুটি বিকল্পের জন্য চেহারা-এগিয়ে / চেহারা-সহ এই উত্তরটি এখানে রয়েছে।
কেভিন ক্রুইজসেন

1
একটি বাইট সংরক্ষণ করুন:s->"Red Orange Yellow Green Blue Indigo Violet Red".split(s)[1].split(" ")[1]
Okx

2

নারকেল , 79 বাইট

s->"# Violet Red # # Green Indigo Yellow # # Orange Blue".split()[ord(s[0])%12]

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


নারকেল চেনো না। তবে মনে করুন আপনার ছোট হাতের অক্ষর ব্যবহার করে 2 বাইট কাটতে সক্ষম হবেন কারণ এটি সর্বাধিক s->"# green indigo yellow # # orange blue # violet red".split()[ord(s[0])%12]
মডুলোর

@ ওয়ার্নিশ এই পরামর্শের জন্য ধন্যবাদ। যদিও আমি অপেক্ষার অবধি অপেক্ষায় থাকি যতক্ষণ না আপডেটের আগে ছোট হাতের অক্ষর গ্রহণযোগ্য কিনা তা ওপি সাড়া দেয় না।
লাইকোনি

2

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

S!o→€⁰w¨ṙ}ΘΞĠ«ẇ₇G²€ḃλBżḃIÿö⌉

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

তর্কগুলি পরিচালনা করার জন্য আরও ভাল বিকল্প থাকতে পারে তবে আমি এটি খুঁজে পেতে পারি এটি সেরা

ব্যাখ্যা

S!o→€⁰w¨ṙ}ΘΞĠ«ẇ₇G²€ḃλBżḃIÿö⌉
       ¨ṙ}ΘΞĠ«ẇ₇G²€ḃλBżḃIÿö⌉    Compressed string with all the colors
                                "Red Orange Yellow Green Blue Indigo Violet"
      w                         Split on spaces
S                               Pass the list to both the following functions:
    €⁰                          1) Find the index of the input in the list
  o→                                  and increase it by one
 !                              2) Get the element of the list at the
                                   resulting position (indexing is cyclical)

2

স্ট্যাক্স , 31 30 29 বাইট

ÇôF┘≡▓ƒ◄╙>┘☼░⌂╪B<U[ÇQ╒eöΣQ╔÷n

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

এটি রিং অনুবাদ নির্দেশ ব্যবহার করে। এটি অ্যারের প্রতিটি উপাদানকে "ডিকোডার রিং" থেকে নিম্নলিখিতটির সাথে প্রতিস্থাপন করে। সাধারণত, এটি একটি স্ট্রিং-এ অক্ষর প্রতিস্থাপন করতে ব্যবহৃত হয়, তবে এটি একটি সম্পূর্ণ স্ট্রিংয়েও ব্যবহার করা যেতে পারে, যদি এটি একটি সিঙ্গলটন অ্যারেতে আবৃত থাকে।

এখানে আনপ্যাকড, অসম্পূর্ণ, একই প্রোগ্রামটির আসকি উপস্থাপনা মন্তব্য করা হয়েছে।

]   wrap input in singleton array
`5^bZ_9G*h]h%oM~X9e-0ZQJkb2`    compressed string literal with color names
:.j title case and split on spaces
:t  do ring translation

এটি চালান


ঠিক আছে ... আমি এই ভাষাগুলি পছন্দ করি =)
লাউড

3
ভায়োলেট -> লাল
ওয়েইজুন চিউ

1
@ ওয়েইজুনঝৌ: এই জমা দেওয়ার পরে সেই পরীক্ষার কেস যুক্ত করা হয়েছিল ।
পুনরাবৃত্ত হবে

1
@ ওয়েইজুনঝৌ: আমি সেই পরীক্ষার কেসটি ঠিক করেছি এবং একটি বাইট শেভ করেছি।
পুনরাবৃত্তির

1
@ ওয়েইজুনঝৌ: এটি স্ট্যাক্সের সি # এবং জেএস বাস্তবায়নের মধ্যে একটি অসঙ্গতি বলে মনে হচ্ছে। আমি একটি পরীক্ষার কেস যুক্ত করব এবং পরবর্তী প্রকাশের জন্য আচরণটি স্বাভাবিক করব।
পুনরাবৃত্তি


2

R, 109 93 bytes

function(x){y=c("Red","Orange","Yellow","Green","Blue","Indigo","Violet");y[match(x,y)%%7+1]}

Try it online!

-16 thanks to Giuseppe for the use of match advice


welcome to PPCG! this is a nice first answer. I think match(y,x)%%7+1 is shorter for indexing than your if statement. Additionally, the builtin colors() contains a lot of color names, if you find the indices :)
Giuseppe

oops, looks like colors() doesn't contain indigo! Ah well, still, +1!
Giuseppe

thanks! match is better here
DS_UNI


and yeah I first tried to use colors() :/
DS_UNI

1

Batch, 97 bytes

@set s=Red Orange Yellow Green Blue Indigo Violet Red
@call set s=%%s:*%1 =%%
@echo %s: =&rem %

Explanation: The call on the second line has the effect of substituting the parameter into the command and evaluating it, turning it into e.g. set s=%s:Red =%, which deletes the prefix of the string that includes the parameter. The substitution on the third line then replaces all the spaces with statement separators and comments. This works because string substitution happens before parsing.


1

Ruby -n, 75 69 bytes

a=%w{Red Orange Yellow Green Blue Indigo Violet};p a[-~(a.index$_)%7]

Try it online!


1
Why the i&& thing? No need to check for nil, as “Ignore any errors if this is not a colour.”
manatwork

@manatwork I understood it as "catch and ignore any errors" but alright.
Asone Tuhid

1

Julia 0.6, 76 bytes

f(s)=match(Regex("$s(.[a-z]*)"),"RedOrangeYellowGreenBlueIndigoViolet"^2)[1]

Try it online!

This handles the Violet->Red by recycling the string with the power ^ operator.

Here's a slightly longer solution without regexes:

g(s,l=split("Red Orange Yellow Green Blue Indigo Violet"," "))=l[(findin(l,[s])[1])%7+1]

1

PowerShell, 74 bytes

(-split("Red Orange Yellow Green Blue Indigo Violet "*2-split$args)[1])[0]

Try it online!

Takes the string "Red ... Violet " and string-multiplies it out by two to properly handle the Violet -> Red test case. We then -split that string on input $args to give us an array of two strings. We take the second string thereof [1], then -split that on whitespace to give us an array of strings and take the first [0].

For example, for input "Yellow", the first step will result in @("Red Orange ", " Green Blue Indigo ... Indigo Violet "). We take the second one of that, split it on whitespace (which removes the whitespace), resulting in @("Green", "Blue", ... "Violet"), so taking the [0] one thereof results in the proper next string.


1

IBM/Lotus Notes Formula Language, 79 74 bytes

@Left(@Right("Red Orange Yellow Green Blue Indigo Violet Red ";a+" ");" ")

Previous version for 79:

R:=@Explode("Red,Orange,Yellow,Green,Blue,Indigo,Violet,Red");R[@Member(a;R)+1]

Takes input from an editable text field called a.

There is no TIO for formula language so here's a couple of screenshots.

enter image description here

enter image description here

enter image description here



1

Kotlin, 73 bytes

x->"RedOrangeYellow Green  BlueIndigoVioletRed".substringAfter(x).take(6)

Try it online!

Taking advantage of the fact that many colors are 6 characters, the ones that are not are prefixed with spaces to make them 6 characters long. Hopefully it's acceptable that some of the colors are outputted with spaces before them.
e.g. Red is " Red", Blue is " Blue"


1

SmileBASIC, 94 84 bytes

C$="Red   OrangeYellowGreen Blue  IndigoViolet
INPUT I$?MID$(C$*2,INSTR(C$,I$)+6,6)

1

Gema, 67 characters

*=@subst{*\?<J>=\?\$2\;\?=;RedOrangeYellowGreenBlueIndigoVioletRed}

Sample run:

bash-4.4$ echo -n Yellow | gema '*=@subst{*\?<J>=\?\$2\;\?=;RedOrangeYellowGreenBlueIndigoVioletRed}'
Green

bash-4.4$ echo -n Violet | gema '*=@subst{*\?<J>=\?\$2\;\?=;RedOrangeYellowGreenBlueIndigoVioletRed}'
Red

Gema, 59 characters

R=Orange
O=Yellow
Y=Green
G=Blue
B=Indigo
I=Violet
V=Red
*=

Boring one. Dumbest approach ever, but quite short.

Sample run:

bash-4.4$ gema 'R=Orange;O=Yellow;Y=Green;G=Blue;B=Indigo;I=Violet;V=Red;*=' <<< 'Yellow'
Green

bash-4.4$ gema 'R=Orange;O=Yellow;Y=Green;G=Blue;B=Indigo;I=Violet;V=Red;*=' <<< 'Violet'
Red

1

q/kdb+, 59 55 bytes

Solution:

.[!;2 8#($)`Red`Violet`Indigo`Blue`Green`Yellow`Orange]

Examples:

q).[!;2 8#($)`Red`Violet`Indigo`Blue`Green`Yellow`Orange]"Red"
"Violet"
q).[!;2 8#($)`Red`Violet`Indigo`Blue`Green`Yellow`Orange]"Orange"
"Red"
q).[!;2 8#($)`Red`Violet`Indigo`Blue`Green`Yellow`Orange]"Blue"
"Green"

Explanation:

Create a dictionary of colour => next colour, the input is the key to the dictionary:

.[!;2 8#($)`Red`Violet`Indigo`Blue`Green`Yellow`Orange] / the solution
.[ ;                                                  ] / apply multiple args to function
           `Red`Violet`Indigo`Blue`Green`Yellow`Orange  / list of colours
         ($)                                            / convert to strings
    2 8#                                                / reshape into 2x8 grid
  !                                                     / create dictionary

Bonus:

It's 53 bytes in K4:

.[!;2 8#$`Red`Violet`Indigo`Blue`Green`Yellow`Orange]


1

sed, 72 bytes

s/$/%RedOrangeYellowGreenBlueIndigoVioletRed/;s/(.+)%.*\1(.[a-z]+).*/\2/

Try it Online

Example 1:

Input:

Red
Orange
Yellow
Green
Blue
Indigo
Violet

Output:

Orange
Yellow
Green
Blue
Indigo
Violet
Red

Example 2:

Input:

Indigo
Yellow
Red
Red
Blue
Green
Orange
Violet
Green
Green
Green
Blue
Blue
Violet

Output:

Violet
Green
Orange
Orange
Indigo
Blue
Yellow
Red
Blue
Blue
Blue
Indigo
Indigo
Red

Welcome to the site! Could you provide a link to an online interpreter, such as Try It Online! where we can test this solution?
caird coinheringaahing

@cairdcoinheringaahing: Hi, thank you very much for the welcome and the website recommendation! I've updated my answer with a link to the page where you can test the code online.
lucasb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.