ক্লাসিক প্রুফ মিথ্যাচার [বন্ধ]


18

পটভূমি

সুতরাং, আমরা সকলেই এর মতো ক্লাসিক প্রমাণটি জানি:

a = b
a² = ab
a² - b² = ab - b²
(ab) (a + b) = b (ab)
(a + b) = b
b + b = b
2b = b
2 = 1 (হা হা!)
এর অবশ্যই, ভুলটি হল যে আপনি 0 দ্বারা ভাগ করতে পারবেন না, যেহেতু a = b, a - b = 0, সুতরাং 0 দ্বারা একটি গোপন বিভাগ ছিল।

চ্যালেঞ্জ

আপনাকে এই প্রমাণটি প্রতিলিপি করতে হবে। প্রথমে দুটি এবং দুটি পূর্ণসংখ্যা ঘোষিত করুন (আপনি তাদেরকে কী বলবেন তা বিবেচ্য নয়) এটি সমান। তারপরে aMod এবং bMod কে a এবং b এর সংশোধনযোগ্য সংস্করণ হিসাবে ঘোষণা করুন এবং প্রথমে যথাক্রমে a এবং b এর সমান। আপনাকে অবশ্যই উভয়কে একটি দ্বারা গুণিত করতে হবে, তারপরে উভয় থেকে বি * বি বিয়োগ করুন। তারপরে আপনাকে অবশ্যই খ - বি দ্বারা ভাগ করতে হবে এবং তারপরে বি (বা ক) দ্বারা ভাগ করতে হবে। তারপরে, এ্যামড এবং বিএমডের মধ্যে একটি সমান চিহ্ন সহ প্রিন্ট আউট করুন।

আন্ডারহ্যান্ডড

অবশ্যই, যেহেতু আপনি a এবং b কে সমান ঘোষণা করেছেন, a - b = 0, এবং 0 দিয়ে ভাগ করলে ত্রুটির কারণ হয়। সুতরাং আপনি অবশ্যই এটি সৃজনশীল জাল। এছাড়াও, আপনি প্রমাণটি প্রতিলিপি করার চেষ্টা করছেন বলে, মোড এবং বিমডের সমস্ত ক্রিয়াকলাপের ফলাফল মুদ্রিত হওয়ার পরে অবশ্যই সমান হবে না। তাদের ঠিক 2 এবং 1 সমান করতে হবে না, কেবল দুটি সংখ্যা যা সমান নয়।

এখানে একটি উদাহরণ:

#include <iostream>
#define subtract(a, b) a - b

using namespace std;
int main()
{
    int a = 4, b = 4;
    int a_2 = a, b_2 = b;

    a_2 *= a;
    b_2 *= b;

    a_2 -= b * b;
    b_2 -= b * b;

    a_2 = a_2 / subtract(a, b);
    b_2 = b_2 / subtract(-b, -a); // a - b == (-b) - (-a)

    a_2 /= a;
    b_2 /= a;

    cout << a_2 << " = " << b_2 << " because I did the same operations on both of them.";

    return 0;
}

সেরা নাও হতে পারে তবে এটি পয়েন্টটি চিত্রিত করে।

আন্ডারহ্যান্ডড বোনাস

সমান চিহ্নটি মুদ্রণের পরিবর্তে, আপনি কেবল দুটি ভেরিয়েবল (এমড এবং বিএমড) মুদ্রণ করতে পারেন এবং তারপরে এমন কোড রয়েছে যা দুটি ভেরিয়েবলের সাথে সাম্যের জন্য তুলনা করে তবে বাস্তবে সত্য যে এগুলি সমান হয় (এবং কিছু রূপ মুদ্রণ করে true)।

মনে রাখবেন, এটি একটি জনপ্রিয়তা প্রতিযোগিতা, সুতরাং সর্বোচ্চ সংখ্যক আপভোট জিতেছে।
এছাড়াও, গণিত 2.0 নামে গণিতের একটি নতুন সংস্করণ স্ট্যান্ডার্ড লুফোলগুলি স্বয়ংক্রিয়ভাবে প্রমাণকে অকার্যকর করে তুলেছে।


এখানে গাণিতিক ছদ্মবেশের একটি উইকিপিডিয়া লিঙ্ক রয়েছে যাতে লোকেরা আরও ভাল বুঝতে পারে

3
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ ছদ্মবেশী চ্যালেঞ্জগুলি এখন আর এই সাইটে অন টপিক নয়। meta.codegolf.stackexchange.com/a/8326/20469
বিড়াল

উত্তর:


17

জাভাস্ক্রিপ্ট

var a=3,b=3,a2=3,b2=3
[a2,b2]=[a2*a,b2*a]
[a2,b2]=[a2-b*b,b2-b*b]
[a2,b2]=[a2/(a-b),b2/(a-b)]
console.log([a2/a,b2/a])

আউটপুট:

[1, NaN]

নোট করুন 0/0 = NaN

ইঙ্গিত

কিছু সেমিকোলন যুক্ত করার চেষ্টা করুন।
এই প্রোগ্রামটি আসলে var a=3,b=3,a2=3,b2=3[a2,b2]=...=[a2/(a-b),b2/(a-b)];console.log([a2/a,b2/a])
এবং এনএএন হয় [3/0,undefined/0]/3


কি দারুন. এটি অত্যন্ত চালাক ছিল , "দুর্ঘটনাক্রমে" পুরো প্রোগ্রামটিকে একটি রান-অন বাক্য জুড়ে সেমিকোলন তৈরি করতে ভুলে গিয়েছিল (প্রায়)।
ব্যবহারকারী 155698

3

পাইথন 2

আমি দৃ sure়ভাবে নিশ্চিত যে এটি সুস্পষ্ট যেহেতু প্রত্যেকে পাইথন জানে তবে এখানে আমার চেষ্টা রয়েছে:

a=b=1
x,y=a*a,a*b
x,y=x-b*b,y-b*b
x,y=a+b/a-b,b
x,y=x/a,y/a
print(x==y)

এটি আউটপুট True

ইঙ্গিত:

আমার বিভাগ পরীক্ষা করুন।


যেহেতু প্রত্যেকে পাইথন ব্যবহার করে । আমি পাইথন জানি, তবে আমি খুব কমই এটি ব্যবহার করি
rpax

@ আরপ্যাক্স এটাই আমি বোঝাতে চাইছিলাম
mbomb007

দুঃখিত, আমি আপনার উত্তরটি সঠিকভাবে পড়িনি।
rpax

2

চুনি

def calculate a,
  b = a
  left, right = a, b
  left, right = [left, right].map { |x| x * a     }
  left, right = [left, right].map { |x| x - b*b   }
  left, right = [left, right].map { |x| x / a - b }
  left, right = [left, right].map { |x| x / b     }
  puts $/=[left, right].join(' = ')
end

calculate 3,
STDOUT.write($/)

ideone

ইঙ্গিত:

,

ব্যাখ্যা:

কমাতে শেষ হওয়া দুটি লাইনের ফলে প্রোগ্রামটি তার চেয়ে আলাদা আচরণ করে। কমা ছাড়া, পদ্ধতিটি একটি একক আর্গুমেন্ট নেয় a, সেট করেb সমান করে a, প্রতিটিটির প্রমাণ থেকে রূপান্তরগুলি সম্পাদন করে (কিছু অনুপস্থিত বন্ধনীর কারণে, এটি 0 দ্বারা ভাগ হয় না) এবং ফলাফলকে আউটপুট দেয় (3 এর ইনপুট সহ) , এটি আউটপুটটি "-1 = -1" করবে। পেছনের কমা দিয়ে, তবে b = aলাইনটি পদ্ধতি স্বাক্ষরের অংশ হয়ে যায়, এর অর্থ এটি ডিফল্ট মান সহ দ্বিতীয় যুক্তি ঘোষণা করে। শেষে পদ্ধতিটি প্রার্থনাটি পাস করে এর ফলাফল STDOUT.write($/), যা 1 (এটি STDOUT এ লিখিত বাইটের সংখ্যা, যেহেতু $/এটি একটি নতুন লাইন চরিত্রের জন্য পূর্বনির্ধারিত হয়েছে)) সুতরাং a 3 এবং b 1, সমীকরণটি "3 = 1" হিসাবে শুরু হবে G আবর্জনা.


আপনার নতুন লাইনের সাথে দুর্দান্ত কৌশল।
LegionMammal978

আপনি কি নন-রুবিবাদীদের জন্য একটি ব্যাখ্যা যুক্ত করতে পারেন?
kirbyfan64sos

@ kirbyfan64sos অবশ্যই, সম্পন্ন
হিস্টোক্র্যাট

2

GolfScript

সতর্কতা: এই প্রোগ্রামটি কিছুটা প্রতারণা করছে, এটি এমড এবং বিমড প্রিন্ট করে না

1nt main(){
  int a = 2, b = 2;
  int aMod,bMod;
//The next line should throw and error, but why doesn't it??/
  aMod = (a*a - b*b) / (a-b);
//The next line should throw and error, but why doesn't it??/
  bMod = (b*a - b*b) / (a-b);
//The if should fail, but it works??/
  if(aMod == bMod)
    printf("1");
  return 0;
};

চেষ্টা করে দেখুন এখানে করুন !

তো কেমন যাচ্ছে?

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


ত্রিগ্রাফগুলি সনাক্ত করা হয়েছে। স্বয়ংক্রিয় -1 সিস্টেম সক্রিয় করা হচ্ছে। ত্রুটি: -1 ব্যর্থ হয়েছে (4792, আরপিএলএস)
ক্যালকুলেটরফলাইন

এটি লুক্কায়িত, কারণ এটি আপনাকে ভ্রান্ত করতে ব্যর্থ হয়েছে এমন ভেবে চালিত করে। +1
আর

1

Prolog

areEqual(A, B) :-
    Amod = A,
    Bmod = B,

    Amod = Amod * A,
    Bmod = Bmod * B,

    Amod = Amod - B*B,
    Bmod = Bmod - B*B,

    Amod = Amod / (A-B),
    Bmod = Bmod / (A-B),

    Amod = Amod / A,
    Bmod = Bmod / A,

    Amod == Bmod.

আউটপুট যখন areEqual(4,4)ডাকা হয় (বা অন্য কোনও সংখ্যক সংখ্যক সত্যই):

false

কেন?

প্রোলোগে, অপারেটর "=" প্রভাবিত হয় না; এটি "একীকরণ"। সুতরাং Amod = Amod * Aব্যর্থ হয়েছে কারণ Amodইতিমধ্যে একত্রিত হয়েছে A, এবং সম্ভবত এটির সাথে একত্রিত হতে পারে না Amod * A। প্রোলোগ তাত্ক্ষণিকভাবে বর্তমান বিধি কার্যকর করা বন্ধ করে এবং প্রত্যাবর্তন করে false


2
আমি মনে করি এটি অন্য উপায়ে হওয়া উচিত, যখন দুটি মানের সমান হয় তখন আপনাকে "সত্য" আউটপুট দিতে হয়
they

1

জাভাস্ক্রিপ্ট

//Very badly written code!
//No! It is "poetic" code!
while(true){break;}{ 
let scrollMaxX = 3, screenX = 3;
var scrollBarWithBeerMax = scrollMaxX, Yscroll = screenX; for(var i = 0; i<1; i++){}}

scrollBarWithBeerMax *= scrollMaxX;
Yscroll *= screenX;

scrollBarWithBeerMax -= screenX * screenX;
Yscroll -= screenX * screenX;

scrollBarWithBeerMax /= (scrollMaxX - screenX);
Yscroll /= (scrollMaxX - screenX);

alert(scrollBarWithBeerMax + ' = ' + Yscroll);

আউটপুট:
http://jsbin.com/furino/2/edit?js, জেএসবিন এই কোডটি কার্যকর করতে সক্ষম হবে বলে মনে হয় না। পরিবর্তে ব্রাউজার কনসোল ব্যবহার করুন।

কেন?

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

আরেকটি জাভাস্ক্রিপ্ট এক: এটি নিয়মগুলি ঠিক অনুসরণ করে না, ভেরিয়েবলগুলি সমান হয় বা না হয় তবেই এটি আউটপুট দেয়।

var a = 2;
var b = 2;

var a_duplicate = a;
var b_duplicate = b;

a_duplicate*=a
b_duplicate*=b;

a_duplicate-=b*b;
b_duplicate-=b*b;

a_duplicate/=(a-b);
b_duplicate/=(a-b);

alert(a_duplicate==b_duplicate);

কেন?

আইএনইই ফ্লোট স্পেসিফিকেশন দ্বারা NaN NaN এর সমান নয়। এটি কেবল জাভাস্ক্রিপ্টের জন্য প্রযোজ্য নয় তা নির্দেশ করার জন্য অ্যালেক্স ভ্যান লিউকে ধন্যবাদ।


NaNNaNআইইইই ফ্লোট স্পেসিফিকেশন দ্বারা সমান নয় । আসলে, আপনি যদি NaNসি তে কোন পরীক্ষা করেন তার দ্রুত উপায় হ'ল এটি নিজের সাথে তুলনা করা। সুতরাং এটি কেবল জেএস নয়, সমস্ত ভাষার ক্ষেত্রে প্রযোজ্য।
অ্যালেক্স ভ্যান লাইউ

1
পছন্দ করুন আমি জানতাম না! ঠিক আছে, আমার উত্তরটি সামান্য পরিবর্তন করা এবং creditণ যুক্ত করা যেখানে এটি যথাযথ।
স্টিফনচ

0

উপচ্ছায়া

a := 3
b := 3
duplicates := [a:b]
duplicates = duplicates.map {it * a}
duplicates = duplicates.map {it - b*b}
duplicates = duplicates.map {it / a-b}
echo(duplicates.join("") |Int a_2, Int b_2 ->Str| {"" +  a_2 + " = " + b_2})

আউটপুট:

-3 = 3

কেন?

[a: b] একটি মানচিত্র, তালিকা নয়। এতটা লুক্কায়িত নয়, আমি জানি :(


আপনার শেষে a সমান হওয়ার কথা b
mbomb007

আসল মিথ্যাচারের সমাপ্তি 2 = 1, সুতরাং এখানে যে কোনও উত্তরের শেষে "সত্য" হওয়া উচিত নয়
কেইন

আমি ভাবছিলাম আন্ডারহানড বোনাসের কথা। কিছু মনে করো না. "সমান চিহ্নটি মুদ্রণের পরিবর্তে, আপনি কেবল দুটি ভেরিয়েবল (এমড এবং বিএমড) মুদ্রণ করতে পারেন এবং তারপরে এমন কোড রয়েছে যা সমতা জন্য দুটি ভেরিয়েবলের সাথে তুলনা করতে পারে তবে বাস্তবে সত্য যে তারা সমান হয় (এবং সত্যের কিছু রূপ মুদ্রণ করে) । "
mbomb007

0

সি

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

a,b,LHS,RHS;
main(){
    a=2; b=2;
    LHS=a; RHS=b;

    //multiply both sides by a
    LHS,RHS *= a; 
    //subtract b squared from both sides
    LHS,RHS -= b*b; 
    //assert that it factors correctly
    if (LHS,RHS != (a+b)*(a-b), b*(a-b)) printf("ERROR!\n");
    //'hard' division, just to be sure the compiler doesn't remove it
    LHS,RHS /=! (a-b);
    //assert that a+a really is b+b
    if (a+a != b+b) printf("ERROR!\n");
    //now just divide them by b
    printf("%d = %d ? ", LHS/b, RHS/b);
    if (RHS = LHS) 
        printf("true!");
    else
        printf("false!");
}

অবশ্যই এটি তেমন কার্যকরভাবে কাজ করে না যখন আরও মুশকিলভাবে লেখা হয় #include <stdio.h>এবং ইন্টের ঘোষণার সামনে ফেলে দেওয়া হয়।


এটি কিভাবে কাজ করে?
ক্যালকুলেটরলাইন

প্রথম দ্রষ্টব্য যে সি-তে আপনি কোনও ঘোষণার ইনট 'ভুলে যান', এটি কে এবং আর সি এর সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ হওয়ার জন্য টাইপ ইন্টকে ধরে নেয়। এরপরে সিটিতে অপারেটরটি অনুসন্ধান করুন এবং এর প্রাধান্যটিতে মনোযোগ দিন। পরবর্তী নোটটি = শেষের পরিবর্তে = যদি পরিবর্তিত হয় তবে বিবৃতি দিন।
লাম্বদাবেতা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.