পাওয়ারশেল, 154 , 152 , 99 , 86 বাইট
আপনাকে ধন্যবাদ টিমিডি আমাকে একটি বৃহত 47 টি বাইট সংরক্ষণ করার জন্য (আমি অতিরিক্ত 6 টিও সংরক্ষণ করেছি)
অতিরিক্ত 13 বাইট সংরক্ষণ করার জন্য আপনাকে @ টেসেল্ল্যাটিংহেকলারের ধন্যবাদ।
সর্বশেষ:
param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})
মূল:
param($a);$x=0;(($a[-1..-$a.length])|%{$_=$_.tostring().tolower();if([regex]::matches($a,"[A-Z]").index-contains$x){$_.toupper()}else{$_};$x++})-join''
সাধারণ বিন্যাস:
সর্বশেষ (আমার মতে দুটি লাইন হিসাবে সেরা দেখাচ্ছে):
param($a)
-join($a[$a.length..0] | %{("$_".ToLower(), "$_".ToUpper())[$a[$i++] -in 65..90]})
ব্যাখ্যা:
param($a)-join($a[$a.length..0]|%{("$_".ToLower(),"$_".ToUpper())[$a[$i++]-in65..90]})
param($a)
# Sets the first passed parameter to variable $a
-join( )
# Converts a char array to a string
$a[$a.length..0]
# Reverses $a as a char array
|%{ }
# Shorthand pipe to foreach loop
("$_".ToLower(),"$_".ToUpper())
# Creates an array of the looped char in lower and upper cases
[$a[$i++]-in65..90]
# Resolves to 1 if the current index of $a is upper, which would output "$_".ToUpper() which is index 1 of the previous array
মূল:
param($a)
$x = 0
(($a[-1..-$a.length]) | %{
$_ = $_.tostring().tolower()
if([regex]::matches($a,"[A-Z]").index -contains $x){
$_.toupper()
}else{
$_
}
$x++
}
) -join ''
এখানে প্রথমবারের পোস্টারটি উত্সাহিত হয়েছিল কারণ আমি খুব কমই পাওয়ারশেল দেখি, তবে 154 152 বাইটে এটি দেখতে পেলাম কেন!কোন পরামর্শ প্রশংসা।
আমি শিখেছি যে আমাকে অবশ্যই কোডিং এবং এর মজাদার মধ্যে গল্ফের জন্য আমার চিন্তাভাবনার পদ্ধতিটি পুরোপুরি পরিবর্তন করতে হবে!