একটু বুল যাদু


20

চ্যালেঞ্জ

নিম্নলিখিত সি # পদ্ধতি দেওয়া:

private static bool Test(bool a, bool b)
{
    if (a && b) return false;
    if (a) if (b) return true;
    return false;
}

মান সরবরাহ করুন aএবং bতাই trueফিরে আসে।

জয়ের শর্ত

প্রথম এন্ট্রি যিনি প্রদত্ত পদ্ধতিটিকে trueজয়ের মূল্যায়ন করতে সঠিক যুক্তি সরবরাহ করতে পারেন ।


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

2
অতিরিক্ত জয়ের মানদণ্ড ব্যতীত প্রোগ্রামিং ধাঁধাটি বিতর্কিত উত্তরগুলি অগ্রাহ্য করা হয়েছে কিনা তা নিয়ে মেটা আলোচনাটি বিভক্ত । প্রশ্নটি অস্থির হয়ে থাকলে বরং আমি উন্মুক্ত রাখি, তাই আমি পুনরায় খুলতে ভোট দিচ্ছি। আপনার মতামত থাকলে দয়া করে তাদের আলোচনায় অংশ দিন contribute
xnor

2
@ ডেনারএফে আমি মনে করি না যে চারটি সুস্পষ্ট প্যারামিটার সংমিশ্রণের কোনওটিই কাজ করে।
মার্টিন এন্ডার

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

5
@ উইডি দেখুন যে কারণ "প্রথম বৈধ সমাধান" সেরা ধারণা নাও হতে পারে। আপনি একটি উদ্বেগজনক কিন্তু কার্যক্ষম সমাধান পেতে পারেন যা প্রতিচ্ছবিটির মাধ্যমে কিছু অভ্যন্তরীণ সাথে মেসেজ করে এবং তারপরে প্রতিবিম্ব ছাড়াই আরও আকর্ষণীয় সমাধানের সন্ধানের জন্য কারও জন্য উত্সাহ নেই।
মার্টিন এন্ডার

উত্তর:


20
static void Main(string[] args)
{
    bool a, b;
    unsafe
    {
        int* pa = (int*)&a;
        int* pb = (int*)&b;
        *pa = 1;
        *pb = 2;
    }

        Console.Write(Test(a, b));
}

এই Trueভিজুয়াল স্টুডিও 2015 এর সাথে উপস্থিত সি # বাস্তবায়ন নিয়ে আমার জন্য এটি মুদ্রণ করে I আমি আশা করছিলাম যে সংকলকটি ধরে নিবে যে সত্যটি সর্বদা 1 হিসাবে উপস্থাপিত হয় এবং কিছুটা বিপরীতভাবে এবং ব্যবহার করে। ডিবাগ মোডে, প্রকৃতপক্ষে এটি ক্ষেত্রে (এটি রিলিজের সাথেও কাজ করেছিল)। এটি প্রথম কন্ডিশনের জন্য কিছুটা বিপরীতভাবে এবং দ্বিতীয়টির তুলনায় শূন্যের জন্য দুটি তুলনা ব্যবহার করে:

            if (a && b) return false;
002C2E92  movzx       eax,byte ptr [ebp-3Ch]  
002C2E96  movzx       edx,byte ptr [ebp-40h]  
002C2E9A  and         eax,edx  
002C2E9C  and         eax,0FFh  
002C2EA1  mov         dword ptr [ebp-44h],eax  
002C2EA4  cmp         dword ptr [ebp-44h],0  
002C2EA8  je          002C2EB2  
002C2EAA  xor         edx,edx  
002C2EAC  mov         dword ptr [ebp-48h],edx  
002C2EAF  nop  
002C2EB0  jmp         002C2EE4  
            if (a) if (b) return true;
002C2EB2  movzx       eax,byte ptr [ebp-3Ch]  
002C2EB6  mov         dword ptr [ebp-4Ch],eax  
002C2EB9  cmp         dword ptr [ebp-4Ch],0  
002C2EBD  je          002C2EDC  
002C2EBF  movzx       eax,byte ptr [ebp-40h]  
002C2EC3  mov         dword ptr [ebp-50h],eax  
002C2EC6  cmp         dword ptr [ebp-50h],0  
002C2ECA  je          002C2EDC  
002C2ECC  mov         eax,1  
002C2ED1  and         eax,0FFh  
002C2ED6  mov         dword ptr [ebp-48h],eax  
002C2ED9  nop  
002C2EDA  jmp         002C2EE4  
            return false;
002C2EDC  xor         edx,edx  
002C2EDE  mov         dword ptr [ebp-48h],edx  
002C2EE1  nop  
002C2EE2  jmp         002C2EE4  
        }
002C2EE4  mov         eax,dword ptr [ebp-48h]  
002C2EE7  lea         esp,[ebp-0Ch]  
002C2EEA  pop         ebx  
002C2EEB  pop         esi  
002C2EEC  pop         edi  
002C2EED  pop         ebp  
002C2EEE  ret  

অ্যামেজিং! আমি পুরোপুরি নিশ্চিত হয়েছি যে এটি করা সম্ভব হয়নি
edc65

আমি একই জিনিস চেষ্টা করেছি তবে এটি লিনাক্সের অধীনে মনোতে কাজ করবে বলে মনে হয় না।
jimmy23013

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