দুটি স্ট্রিংয়ের অদলবদল মূলধন


27

your shift key is broken. wheNever you type two lines, the cApitaL
LetteRs in them get swappeD. you must write a program to fiX THIS!

বিবরণ

ইনপুটটি দুটি স্ট্রিং s1এবং s2সমান দৈর্ঘ্যের। এগুলির প্রতিটিতে কেবল মুদ্রণযোগ্য এএসসিআইআই থাকবে এবং দৈর্ঘ্যে কমপক্ষে একটি অক্ষর হবে। আপনি এগুলিকে দুটি স্ট্রিং, দুটি স্ট্রিংয়ের অ্যারে বা একটি একক স্ট্রিং হিসাবে s1এবং s2কোনও ট্যাব বা নিউলাইন দ্বারা পৃথক করে ইনপুট করতে পারেন ।

আউটপুট নিম্নলিখিত:

  • এতে প্রতিটি চরিত্রের cজন্য s1:

    • অক্ষরটি যদি অক্ষর না হয় তবে আউটপুট এটি অপরিবর্তিত থাকে।

    • অন্যথায়, যদি cএকটি চিঠি হয়:

      • এর সাথে মিলে যাওয়া চরিত্রটি (একই সূচকে একটি) সন্ধান করুন s2

        • যদি এটি মূলধনী হয় তবে আউটপুট cমূলধন হয়।

        • এটি যদি ছোট হাতের অক্ষর cহয় তবে ছোট হাতের আউটপুট ।

        • অন্যথায়, আউটপুট cঅপরিবর্তিত।

  • তারপরে s1এবং s2স্যুইচ করা বাদে একই জিনিসটি করুন ।

মূলত, সমস্ত অক্ষরের s1জন্য যার সাথে মিলের অক্ষর s2মূলধন হয়, এবং s1একই সূচীতে একটি ছোট হাতের অক্ষরের সমস্ত অক্ষর ছোট হাতের অক্ষরে s2পরিণত হয় (এবং বিপরীতে)।

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

ইনপুট:

ABCDEfghijKlMnOpqrstuvwxyz
aaaaaaaaaaaaaaaa----------

আউটপুট:

abcdefghijklmnopqrstuvwxyz
AAAAAaaaaaAaAaAa----------

ইনপুট:

PRogrammiNG puzZLes & CODe golf
SdlkhkfaladlKsdlalksdg7ldklDgsl

আউটপুট:

Programming Puzzles & Code Golf
SDlkhkfalADlksdLAlksdg7LDkldgsl

ইনপুট:

AAAbbb111
Cc2Dd3Ee4

আউটপুট:

AaABbb111
CC2dd3Ee4

33
আমার জীবনের জন্য আমি বুঝতে পারি না কীভাবে এটি একটি ভাঙ্গা শিফট কী দ্বারা সৃষ্ট হতে পারে তবে আমি সর্বশক্তিমান ডুরকনবকে নিয়ে কে তর্ক করব? : পি
জিওবিটস

1
ইনপুট একই লাইনে থাকতে হবে? বা আমি তাদের আলাদা করতে অন্য কোনও চরিত্র (একটি ট্যাব?) ব্যবহার করতে পারি?
kirbyfan64sos

@ ডেনিস নো, ইনপুটটি অবশ্যই প্রশ্নের মধ্যে দেখানো উচিত must
ডুরকনব

@ kirbyfan64sos আপনি দুটি স্ট্রিং, স্ট্রিংগুলির একটি অ্যারে বা একটি ট্যাব বা একটি নতুন লাইন দ্বারা পৃথক দুটি স্ট্রিং নিতে পারেন। আমি প্রশ্নে এটি সম্পাদনা করব।
ডুরকনব

একটি ট্রেলিং নিউলাইন অনুমোদিত?
ডাউনগোট

উত্তর:


7

পাইথ, 19 18 বাইট

LCmrW&@dG@drG1d2Cb

এটি এমন একটি ফাংশন y সংজ্ঞা দেয় যা স্ট্রিংগুলির একটি তালিকা গ্রহণ করে এবং ফেরত দেয়।

পাইথ কম্পাইলার / এক্সিকিউটারে একবারে সমস্ত পরীক্ষার কেস যাচাই করুন ।

1 জ্যাকেট বন্ধ করার জন্য @ জাকুবেকে ধন্যবাদ

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

                   " (implicit) Initialize G to 'abcdefghijklmnopqrstuvwxyz'.

L                  " Define y(b):
                Cb "   Zip to turn the two strings into an array of char pairs.
  m                "   Map (implicit variable d):
      @dG          "     Intersect d with G.
         @drG1     "     Intersect d with G.upper().
    W&             "     If both are non-empty:
   r          d2   "       Apply swapcase() to d.
 C                 "   Zip to turn the character pairs back into two strings.

12

সিজেম, 25 বাইট

{z{_el_eu&\__:^32&f^?}%z}

এটি একটি বেনাম ফাংশন যা স্ট্যাক থেকে স্ট্রিংগুলির একটি অ্যারে পপ করে এবং বিনিময়ে একটি ছেড়ে দেয়।

সমর্থিত ব্রাউজারগুলিতে, আপনি সিজেএম ইন্টারপ্রেটারে একবারে সমস্ত পরীক্ষার কেস যাচাই করতে পারেন ।

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

কোড

qN/2/                     e# Read input and split into arrays of two strings.

{z{_el_eu&\__:^32&f^?}%z}

%                         e# Map the block over all string arrays.
:+N*                      e# Separate the strings by linefeeds.

ইনপুট

ABCDEfghijKlMnOpqrstuvwxyz
aaaaaaaaaaaaaaaa----------
PRogrammiNG puzZLes & CODe golf
SdlkhkfaladlKsdlalksdg7ldklDgsl
AAAbbb111
Cc2Dd3Ee4

আউটপুট

abcdefghijklmnopqrstuvwxyz
AAAAAaaaaaAaAaAa----------
Programming Puzzles & Code Golf
SDlkhkfalADlksdLAlksdg7LDkldgsl
AaABbb111
CC2dd3Ee4

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

z                       e# Zip to transform the array of strings into an array
                        e# of character pairs.
 {                  }%  e# For each character pair:
  _el                   e#   Push a copy and convert to lowercase.
     _eu                e#   Push a copy and convert to uppercase.
        &               e#   Intersect. The result will be an empty string if
                        e#   and only if both characters are letters.
         \              e#   Swap the character pair on top of the stack.
          __            e#   Push two copies.
            :^          e#   XOR both characters.
              32&       e#   Logical AND with 32. This pushes 32 for letters of
                        e#   different cases and 0 for letters of the same case.
                 f^     e#   XOR each character with the result.
                   ?    e#   Select the original copy for non-empty intersection
                        e#   and the modified one otherwise.
                      z e# Zip to turn the characters pairs back into two strings.

8

সি, 126 বাইট

এটি কোনও কোড গল্ফের মধ্যে আমার প্রথম চেষ্টা। আমি কোনও ভুল করেছি কিনা তা আমাকে জানান Let

আমি স্যুইচিং সম্পাদনা করতে বিটওয়াইজ অপারেশনগুলি ব্যবহার করছি

Golfed:

main(u,a,s,t)char**a,*s,*t;{for(s=a[1],t=a[2];*t;s++,t++)isalpha(*s)*isalpha(*t)?u=(*t^*s)&32,*t^=u,*s^=u:0;*s=10;puts(a[1]);}

Ungolfed:

main(u,a,s,t) char**a,*s,*t; {       // K&R style arguments
    for(s=a[1],t=a[2];*t;s++,t++)    // initialize loop.
        isalpha(*s) * isalpha(*t) ? // ensure both characters are letters (if)
            u = (*t^*s) & 0x20,      // check if characters have swapped case
            *t^=u,                   // if so, xor the bit which represents case
            *s^=u                    // for both characters in the string.
        :0;                          // end ternary statement (endif)
    *s=10;                           // replace null terminator in first string 
    puts(a[1]);                      // with newline. This allows both output to 
}                                    // be printed out all at once

সম্পাদনা করুন: প্রতিস্থাপন & সাথে *


6

এসকিউএল (পোস্টগ্রিজএসকিউএল), 427 বাইট

এটি বিশাল আকার সত্ত্বেও, এটি আমার প্রত্যাশার চেয়ে কিছুটা ছোট ছিল। আমি যথেষ্ট নিশ্চিত ছিলাম না যে আমি এটি করতে সক্ষম হব সত্যবাদী হওয়ার জন্য। আমার সন্দেহ আছে যে এখনও অনেক কিছুই করা যায় :)

CREATE FUNCTION F(TEXT,TEXT)RETURNS TABLE(S TEXT) AS'SELECT unnest(array[string_agg(CASE WHEN T~''[A-Z]''THEN upper(S)WHEN T~''[a-z]''THEN lower(S)ELSE S END,''''),string_agg(CASE WHEN S~''[A-Z]''THEN upper(T)WHEN S~''[a-z]''THEN lower(T)ELSE T END,'''')])FROM(SELECT ROW_NUMBER()OVER()N,S FROM regexp_split_to_table($1,'''')X(S))A JOIN(SELECT ROW_NUMBER()OVER()M,T FROM regexp_split_to_table($2,'''')Y(T))B ON N=M'LANGUAGE SQL

ফর্ম্যাট এবং মন্তব্য

-- Declare the function spec
CREATE FUNCTION F(TEXT,TEXT)RETURNS TABLE(S TEXT) AS  
'SELECT unnest(   -- turns array into a table
    array[        -- build array of the column results
    string_agg( -- Aggregate the result into a string
        CASE 
        WHEN T~''[A-Z]''THEN upper(S) -- uppercase it if corresponding char is uppercase
        WHEN T~''[a-z]''THEN lower(S) -- lowercase it if corresponding char is lowercase
        ELSE S END
        ,''''),
    string_agg( -- Same as the previous but swap strings
        CASE 
        WHEN S~''[A-Z]''THEN upper(T)
        WHEN S~''[a-z]''THEN lower(T)
        ELSE T END
        ,'''')
    ])
FROM
    -- split the first string
   (SELECT ROW_NUMBER()OVER()N,S FROM regexp_split_to_table($1,'''')X(S))A
    JOIN
    -- split the second string
   (SELECT ROW_NUMBER()OVER()M,T FROM regexp_split_to_table($2,'''')Y(T))B 
   ON N=M
'
LANGUAGE SQL

টেস্ট রান

SELECT F(A,B) AS Result
FROM (VALUES 
    ('AAAbbb111', 'Cc2Dd3Ee4'), 
    ('ABCDEfghijKlMnOpqrstuvwxyz', 'aaaaaaaaaaaaaaaa----------'), 
    ('PRogrammiNG puzZLes & CODe golf', 'SdlkhkfaladlKsdlalksdg7ldklDgsl')
    )A(A,B)

Result
-----------------------------
AaABbb111
CC2dd3Ee4
abcdefghijklmnopqrstuvwxyz
AAAAAaaaaaAaAaAa----------
Programming Puzzles & Code Golf
SDlkhkfalADlksdLAlksdg7LDkldgsl

4

জুলিয়া, 140 বাইট

f(s,t)=(C(x,y)=(i=0;z="";for c=x i+=1;z*=string(isalpha(c)?isupper(y[i])?uppercase(c):islower(t[i])?lowercase(c):c:c)end;z);(C(s,t),C(t,s)))

এটি একটি ফাংশন তৈরি করে যা দুটি স্ট্রিং গ্রহণ করে এবং বেশ কয়েকটি স্ট্রিং প্রদান করে। এখানে বিশেষত চালাক কিছুই চলছে না; আমরা কেবলমাত্র একটি অভ্যন্তরীণ ফাংশনটি সংজ্ঞায়িত করি যা স্পেকের মধ্যে সরাসরি অ্যালগরিদম প্রয়োগ করে এবং দু'বার কল করে।

Ungolfed:

function f(s, t)
    C(x, y) = begin
        i = 0
        z = ""
        for c in x
            i += 1
            if isalpha(c)
                if isupper(y[i])
                    z *= string(uppercase(c))
                elseif islower(y[i])
                    z *= string(lowercase(c))
                else
                    z *= string(c)
                end
            else
                z *= string(c)
            end
        end
        return z
    end

    return (C(s, t), C(t, s))
end

4

জাভাস্ক্রিপ্ট ES6, 128 108 বাইট

s=(a,b,t)=>[...a].map((l,i)=>/[^a-z]/.exec(b[i])?l.toUpperCase():l.toLowerCase()).join``+(t?'':`
`+s(b,a,1))

জাভাস্ক্রিপ্ট এর toUpperCase()এবং toLowerCase()প্রচুর বাইট নেয় তবে String.fromCharCode()আরও লম্বা


1
এটি এমন শর্তের জন্য দায়বদ্ধ করে না যেখানে কোনও অক্ষর s2অক্ষর নয় এবং এতে সংশ্লিষ্ট চরিত্রটি s1বড় হাতের হয়। এই ক্ষেত্রে, cমধ্যে s1অপরিবর্তিত ফিরে যেতে হবে।
cPu1

@ সিপিই 1 আমি এটি সম্বোধন করেছি :)
ডাউনগোট

4

গণিত, 173 169 155 বাইট

f=0>1;t=!f;c=Characters;u=ToUpperCase;StringJoin/@MapThread[#@#2&,{Reverse[{LetterQ@#,#==(u@#)}&/@c@#/.{{f,_}->(#&),{t,t}->u,{t,f}->ToLowerCase}&/@#],c/@#},2]&

এটি একটি ফাংশন দুটি স্ট্রিংয়ের অ্যারের গ্রহণ করে, উদাহরণস্বরূপ {"Foo","bAR"}এবং দুটি স্ট্রিংয়ের অ্যারের আউটপুট করে। এটা আন স্থানিক-সংকুচিত স্কিম rewriting, f@xযেমন f[x]যেখানেই থাকুন না কেন মনে হচ্ছে স্বরলিপি বর্ণমালা (বিস্তৃত f=0>1ওরফে False, t=!fওরফে True, c=Charactersএবং u=ToUpperCaseQ), এবং অ-প্রতিস্থাপন সঙ্গে UpperCaseQ [#] #==u@#(এই অক্ষর এর uppercased সংস্করণ সমান), এটি হল:

StringJoin /@ MapThread[#[#2] &, {
    Reverse[
        { LetterQ[#], UpperCaseQ[#] } & /@ Characters[#] /. 
        { {False, _} -> (# &), {True, True} -> ToUpperCase, 
          {True, False} -> ToLowerCase } & /@ #
    ],
    Characters /@ #
}, 2] &

ইন্টারফেসিং: ট্রেলিং &এটি একটি ফাংশন করে। এর যুক্তি দুটি ক্ষেত্রেই "#" হিসাবে .োকানো হয়েছে /@ #। উদাহরণস্বরূপ f=0>1; ... & [{"AAAbbb111", "Cc2Dd3Ee4"}]আউটপুট উত্পাদন করে {AaABbb111,CC2dd3Ee4}

প্রক্রিয়াজাতকরণ: বাইরে যথারীতি বলা হয়:

  • এর আউটপুট MapThread[...]হল অক্ষরের দুটি তালিকার একটি তালিকা। স্ট্রিংজইন অক্ষরের এই দুটি তালিকার প্রতিটিটিতে প্রয়োগ করা হয় আউটপুট দুটি স্ট্রিংয়ের একটি তালিকা তৈরি করতে।
  • MapThread[#[#2]&, ... , 2]দুটি 2-বাই-এন উপাদান তালিকার অ্যারেতে কাজ করে। প্রথম তালিকাটি 2-বাই-এন ফাংশনের অ্যারে। দ্বিতীয় তালিকাটি একটি 2-বাই-এন অক্ষরের অ্যারে, Characters /@ #দুটি ইনপুট স্ট্রিংগুলিতে অক্ষরের তালিকা। এটি কার্যকারিতা এবং স্বতন্ত্র চরিত্রগুলিতে 2 গভীরতার সাথে কাজ করে।
  • Reverse[...] ফাংশনের দুটি সাবলিস্টি অদলবদল করে যাতে ম্যাপথ্রেড দ্বিতীয় স্ট্রিংয়ের ফাংশনগুলিকে প্রথম স্ট্রিংয়ে প্রয়োগ করে এবং বিপরীতে।
  • { ... } & একটি বেনাম ফাংশন যা দুটি ইনপুট স্ট্রিংয়ের প্রতিটিটিতে প্রয়োগ করা হয়।
  • {LetterQ[#], UpperCaseQ[#]} & /@ Characters[#]অক্ষরগুলির তালিকায় একটি স্ট্রিং বিভক্ত হয়, তারপরে প্রতিটি অক্ষর দুটি উপাদান তালিকার সাথে প্রতিস্থাপন করে। এই দুটি উপাদান তালিকায় প্রথম উপাদানটি হ'ল Trueঅক্ষর যদি অক্ষর হয় এবং Falseঅন্যভাবে, একইভাবে, দ্বিতীয় উপাদানটি নির্দেশ করে যে অক্ষরটি আপার ক্ষেত্রে হয় কিনা। UpperCaseQ[]কোনও চিঠি না পেলে সত্য ফিরে আসতে পারে না।
  • /. {{False, _} -> (# &), {True, True} -> ToUpperCase, {True, False} -> ToLowerCase}এই দুটি উপাদান তালিকাগুলির সাথে ফাংশনগুলি প্রতিস্থাপন করে। (সংক্ষিপ্তসারগুলির প্রসারণ tএবং fকোনও মিলের চেষ্টা করার আগে ঘটে before) যদি দুটি উপাদান তালিকার Falseপ্রথম উপাদান হিসাবে থাকে তবে এটি ফাংশন (# &), পরিচয় ফাংশন দ্বারা প্রতিস্থাপিত হবে । (প্রথম বন্ধনী প্রয়োজনীয়, অন্যথায় তীরটি এম্পারস্যান্ডের চেয়ে আরও দৃ tight়ভাবে আবদ্ধ হয়)) অন্যথায় দুটি উপাদান তালিকাটি শুরু হয় True, চরিত্রটি একটি চিঠি ছিল, এবং আমরা ফাংশনগুলি আউটপুট করি ToUpperCaseএবং ToLowerCaseতার ক্ষেত্রে অনুরূপ। (এটি শেষের Falseজন্য অনুসন্ধান করা অপ্রয়োজনীয়, বাস্তবে {_,_}->ToLowerCaseএমন কোনও জিনিস যা এখনও প্রতিস্থাপন করা হয়নি তা ধরে ফেলবে, তবে এটি কোনও ছোট এবং আরও অস্পষ্ট হবে না))

একমাত্র চ্যালেঞ্জটি ছিল আর্গুমেন্টের অ্যারেতে দুটি দ্বিমাত্রিক অ্যারে ফাংশনটি জিপ করার একটি সংক্ষিপ্ত উপায় আবিষ্কার করা।

সম্পাদনা করুন: "সহায়ক" কাট / পেস্ট লাইনব্রেক ব্যাকস্ল্যাশগুলি, 1>0এবং 1<0সংক্ষিপ্তসারগুলি ধরার জন্য এবং মার্টিন বাটনারকে ধন্যবাদ , এবং বাইটগুলিতে অক্ষর নয় (যেগুলিই হোক না কেন) দৈর্ঘ্য গণনা করার জন্য দিকনির্দেশনার জন্য (সে যাই হোক না কেন :-))

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


আরও গল্ফিউডিউড: এর f@gপরিবর্তে f[g](আপনার কোড জুড়ে) ব্যবহার করুন। আমিও নিশ্চিত যে আপনার ব্লকের দরকার নেই। শুধু কর (f=0>1;t=!f;c=Characters;StringJoin/@...)&। এটি গ্লোবাল নেমস্পেসকে দূষিত করে, কিন্তু গল্ফ করার সময় আমরা এটির সাথে পুরোপুরি ভাল। এছাড়াও, আমি গণনা করা করেছেন, কিন্তু আপনার মজুত করে বাইট সংরক্ষণ করতে সক্ষম হতে পারেন ToUpperCase(একটি পরিবর্তনশীল মধ্যে u, বলতে) এবং প্রতিস্থাপন UpperCaseQ@#সঙ্গে #==u@#
মার্টিন ইন্ডার

3

পাইথন 3, 131 বাইট

def j(s,g):p=lambda s,g:''.join(i.upper()if j.istitle()else i.lower()if j.islower()else i for i,j in zip(s,g));return p(s,g),p(g,s)

ফাংশন একটি tuple মধ্যে স্ট্রিং ফেরত


1
@ mbomb007 আমি কি আমার পোস্টটি সম্পাদনার বিষয়টি জিজ্ঞাসা করতে পারি? আমার মতে ধর্মঘটগুলি অগোছালো, সে কারণেই আমি সেগুলি কখনই ব্যবহার করি না।
বিটা ক্ষয়

এটি একটি স্ট্যান্ডার্ড ফর্ম্যাট এবং এটি এমন ব্যক্তিদেরকে কিছুটা ক্রেডিট দেয় যা আপনাকে এটির গল্ফ করতে সহায়তা করেছিল, এটি দেখিয়ে যে আপনি মূলত এটাই আসেন নি। অন্যথায়, আপনি এটিকে একেবারে উল্লেখযোগ্যভাবে পরিবর্তন করেছেন তা দেখতে তাদের সম্পাদনার ইতিহাস দেখতে হবে। বাইট-পরিবর্তনটি দেখানো আরও ব্যবহারকারী-বান্ধব, তবে আমি অনুমান করি যে আপনাকে যারা সহায়তা করেছেন তাদের creditণ দেওয়া হবে না বা না it's
mbomb007

কেন এটি সহায়ক তা সম্পর্কিত আরও বিবরণের জন্য এই মেটা পোস্টটি দেখুন ।
mbomb007

@ mbomb007 আপনার লিঙ্কিত মেটা পোস্টের স্বীকৃত উত্তরটি বলে যে এটির বিষয়ে নীতিমালা হওয়ার দরকার নেই এবং নেই, যদিও এটির কারণগুলির কারণে কেউ এগুলি অন্তর্ভুক্ত করতে পছন্দ করে, তাই আমি মনে করি এটি প্রতিটি পোস্টারের উপর নির্ভর করে।
xnor

@ এক্সনর আমি উপরে যা বলেছি তা সংক্ষিপ্ত করার জন্য ধন্যবাদ। খুব উপকারী.
mbomb007

2

এরলং, 157 বাইট

f(A,B)->S=string,G=fun(A,B)->[if Q>64andalso Q<91->S:to_upper(P);Q>96andalso Q<123->S:to_lower(P);true->P end||{P,Q}<-lists:zip(A,B)]end,G(A,B)++"\n"++G(B,A).

দুটি অক্ষর (প্রকৃতপক্ষে তালিকাগুলি) দুটি অক্ষর-টিপল তালিকায় জিপ করুন এবং তালিকা উপলব্ধি ব্যবহার করে প্রতিটি অক্ষরকে যথাযথ ক্ষেত্রে মানচিত্র করুন।


2

পাইথন 2, 101 বাইট

lambda*I:["".join([a.upper(),a.lower(),a][~-b.isalpha()or"Z"<b]for a,b in zip(*X))for X in I,I[::-1]]

একটি অনামী ফাংশন যা দুটি স্ট্রিং নেয় এবং একটি তালিকায় আউটপুট স্ট্রিংগুলি দেয়। আমি এটিকে পাইথন 2 হিসাবে চিহ্নিত করেছি কারণ পাইথন 3 I,I[::-1]শেষের দিকে একা বসে থাকতে দেয় না ।


1

পাইথন, 126 বাইট

t="".join;s="low","upp";y=lambda a,b:eval("a"+".%ser()"%s[b.isupper()]*b.isalpha());f=lambda a,b:(t(map(y,a,b)),t(map(y,b,a)))

ফাংশন fএকটি tuple মধ্যে স্ট্রিং ফেরত


এটি এখন ঠিক করা হয়েছে, এটি এখন সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে।
নীল

1

সি, 181 বাইট

char*x,*y;main(int a,char**_){a?x=_[2],y=_[1],main(0,0),putchar(10),x=_[1],y=_[2],main(0,0):(*x?putchar(!isupper(*x)?!islower(*x)?*y:tolower(*y):toupper(*y)),x++,y++,main(0,0):0);}

যথাযথ উপায়ে স্ট্যান্ডার্ড লাইব্রেরির নামগুলি সংক্ষিপ্ত করতে সমস্যা হয়েছে, (তাদের সংজ্ঞায়িত করতে # ওভারহেডের 11 টি অক্ষর লাগে)। আর্গুমেন্ট হিসাবে প্রধান পুনরাবৃত্তি এবং গ্লোবাল ভেরিয়েবল x এবং y ব্যবহার করে।

প্রধান (<নন- এজো>, আরগভি) = কল করুন মেইন (0, {আরজিভি [1], আরজিভি [2]}) তারপরে নিউলাইন মুদ্রণ করুন এবং তারপরে মূল কল করুন (0, g আরজিভি [2], আরজিভি [1]})

প্রধান (0, {x, y}) = যদি x স্ট্রিং এর রিটার্ন 0 এর সমাপ্ত হয়, অন্যথায় x এর প্রথম অক্ষরের সঠিক কেসটি মুদ্রণ করুন এবং মুখ্য কল করুন (0, {x + 1, y + 1 call)।

যুক্তি হিসাবে দুটি স্ট্রিং দিয়ে চালান।


আপনি কি আমার ব্যবহারকারীর নাম চুরি করছেন? ;)
বিটা ক্ষয়

1

সি - 164 153 বাইট - জিসিসি

#define r z[_][w]
main(_,z,w)char**z;{while(--_)for(w=0;r;r+=r<25?97:r<91&&r>64?z[!(_-1)+1][w]-=32,_-1?z[_-1][w]-=97:0,32:0,w++);puts(z[1]),puts(z[2]);}

জিসিসি প্রগ্রে

./a.out আফডজিএফ a2dfsd

আমি ডাব্লুসি-সি ডাউন পেতে আপডেট করতে হবে। আসলে খুব ভাল কাজ করে


আপনি কি একটি নিরবচ্ছিন্ন সংস্করণ পোস্ট করতে পারেন? আমি কী আগ্রহী তা কীভাবে কাজ করে তবে আপনার প্রতীকগুলি পড়ে খুব কঠিন সময়
কাটাতে হবে

ঠিক. আমাকে এক মিনিট দাও.
জেক

0

এফ #, 211 অক্ষর

let n x y=List.fold2(fun a i j->a@match j with|c when c>='A'&&c<='Z'->[Char.ToUpper i]|c when c>='a'&&c<='z'->[Char.ToLower i]|_->[i])[](x|>Seq.toList)(y|>Seq.toList)|>String.Concat
let m a b =n a b+"\n"+n b a

ভালো হতে পারত ...


0

মতলব, 140

function [s,t]=f(s,t)
c=s>96&s<123;C=s>64&s<91;d=t>96&t<123;D=t>64&t<91;s(c&D)=s(c&D)-32;s(C&d)=s(C&d)+32;t(d&C)=t(d&C)-32;t(D&c)=t(D&c)+32;

Ungolfed:

function [s,t] = f(s,t)
c = s>96 & s<123;         % letters that are lowercase in 1st string
C = s>64 & s<91;          % letters that are uppercase in 1st string
d = t>96 & t<123;         % letters that are lowercase in 2nd string
D = t>64 & t<91;          % letters that are uppercase in 2nd string
s(c&D) = s(c&D) - 32;     % make uppercase in 1st string
s(C&d) = s(C&d) + 32;     % make lowercase in 1st string
t(d&C) = t(d&C) - 32;     % make uppercase in 2nd string
t(D&c) = t(D&c) + 32;     % make lowercase in 2nd string

উদাহরণ:

>> [s,t]=f('PRogrammiNG puzZLes & CODe golf','SdlkhkfaladlKsdlalksdg7ldklDgsl')
s =
Programming Puzzles & Code Golf
t =
SDlkhkfalADlksdLAlksdg7LDkldgsl

0

সি, 164 বাইট

সমস্যাটিতে বর্ণিত হিসাবে অ্যালগরিদমটি বেশ কার্যকর করে। ইনপুট পরামিতি হিসাবে 2 টি স্ট্রিং নেয়।

char*a,*b;main(c,v)char**v;{for(a=v[1],b=v[2];*a&&*b;++a,++b)isupper(*a)&&islower(*b)?*a+=32,*b-=32:isupper(*b)&&islower(*a)?*b+=32,*a-=32:0;puts(v[1]);puts(v[2]);}

Ungolfed:

char *a, *b; /* Helpers */

main(c, v)
char **v;
{
    /* While strings not terminated... */
    for (a = v[1], b = v[2]; *a && *b; ++a, ++b)
        isupper(*a) && islower(*b)
            ? *a += 32, *b -= 32 /* Make first string lowercase, second uppercase */
            : isupper(*b) && islower(*a)
                ? *b += 32, *a -= 32; /* Make second string lowercase, first uppercase */

    puts(v[1]); /* print out first string */
    puts(v[2]); /* print out second string */
}

0

রুবি, ১০২

$><<gets.chars.zip(gets.chars).map{|i|/[a-z][A-Z]|[A-Z][a-z]/=~i*''?(i.map &:swapcase):i}.transpose*''

মূল স্ট্রিংগুলি নিয়ে যায়, অ্যারেগুলিতে অক্ষরগুলি বন্ধ করে দেয়। সেগুলি যদি নিম্ন / ক্যাপ বা ক্যাপ / নিম্ন হয় তবে উভয়টিতে স্ব্যাপকেস। তারপরে অ্যারেগুলিকে আমাদের অর্ডার করা অ্যারেতে স্থানান্তর করুন।

এর জন্য ইনপুটটিতে একটি ট্রেলিং নিউলাইন দরকার।


0

পার্ল 5.10+, 101 99 বাইট

perl -p00e '/\n/;s/([a-z])(?=.{$-[0]}([a-z]))/$x=($1^$2)&" ";$s{$-[2]}=$2^$x;$1^$x/egis;s|.|$s{$-[0]}//$&|eg'

কমান্ড লাইনের পতাকাগুলির জন্য 96 বাইট + 3 বাইট p00। ইনপুট হিসাবে একটি একক নিউলাইন-সীমাবদ্ধ স্ট্রিং নেয়:

$ echo -e "AAAbbb111\nCc2Dd3Ee4" | perl -p00e '...'

অথবা আপনি STDIN এ ইনপুট প্রবেশ করতে পারেন:

$ perl -p00e '...'
AAAbbb111 <Enter>
Cc2Dd3Ee4 <Ctrl+D>

ভেঙ্গে পড়া:

perl -p00e'  # Slurp everything into $_, print $_ automatically at the end
    /\n/;    # Match first newline, setting $-[0] to length(s1)

    s/
        ([a-z])  # Match a single letter in s1
        (?=
            .{$-[0]}  # Match n chars where n is length(s1) (until corresponding char in s2)
            ([a-z])   # Corresponding letter in s2
        )
    /
        $x=($1^$2)&" ";   # Check whether bit 6 is the same for both chars.
                          # (Only difference between a lowercase and uppercase ASCII letter
                          # is bit 6; ASCII space is 100000 in binary)

        $s{$-[2]}=$2^$x;  # Swap case of corresponding char in s2 and store in %s,
                          # with position as the key

        $1^$x             # Swap case of current char
    /egis;

    s|.|$s{$-[0]}//$&|eg  # Do a second pass through $_. If there's a value stored in %s
                          # corresponding to this position, use it
'

0

স্কেলে প্রথম প্রচেষ্টা, ১৩৮ টি অক্ষর

def f(s:String,t:String)={val g=(a:Char,o:Char)=>if(o.isUpper)a.toUpper else a.toLower;s.zip(t).map(c=>(g.tupled(c),g(c._2, c._1))).unzip}

f একটি ফাংশন যা দুটি ইনপুট স্ট্রিং নেয় এবং একটি স্থানীয় ফাংশন সহ স্ট্রিংয়ের ক্ষেত্রে পরিবর্তন করার জন্য দুটি বার ব্যবহৃত হয়।

ইন্ডেন্টেশন এবং কেবল একটি লিট আরও পাঠযোগ্য নাম সহ একই কোড:

def f_ungolfed(first : String, second : String) = {
  val aux = (c1: Char, c2: Char) => if (c2.isUpper) c1.toUpper else c1.toLower
    first.zip(second).map(
         c => (aux.tupled(c), aux.tupled(c.swap))
    ).unzip
} 




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