এমন একটি প্রোগ্রাম লিখুন যা 2 + 2 = 5 করে [বন্ধ]


393

এমন একটি প্রোগ্রাম লিখুন যা আপাতদৃষ্টিতে 2 এবং 2 সংখ্যা এবং আউটপুট 5 যুক্ত করে This এটি একটি অন্তর্নিহিত প্রতিযোগিতা।

আপনার প্রোগ্রামটি কোনও ত্রুটি আউটপুট করতে পারে না। স্মৃতি গর্ত জন্য নজর রাখুন! ইনপুট isচ্ছিক।

2 +2 redefining 5 হিসাবে না খুব সৃষ্টিশীল! এটি দ্বিগুণ করবেন না, অন্য কিছু চেষ্টা করুন।


48
এটি জর্জ অরওয়েল রচিত "1984" বইয়ে প্রশ্ন।
ব্যাচুসবিলে

97
কেন এটাকে অন্তর্নিহিত করা হচ্ছে? দুটি দুটি প্লাস হয় পাঁচ।
জিওবিটস

79
ওখানে হয়! চার! আলো!
নিক টি

105
@ জিওবিটস - আমি সম্মত: 2 + 2 = 5 আপনি এই ক্যালকুলেটরটিতে দেখতে পারেন ।
এমটি0

47
echo "2+2=5";
user3459110

উত্তর:


669

জাভা

জাভা অপব্যবহারের সাথে প্রতিচ্ছবি হ'ল সঠিক উপায় ... তবে আপনার কিছু মানকে টুইট করার চেয়ে আরও গভীর হওয়া দরকার ।

import java.lang.reflect.Field;

public class Main {
    public static void main(String[] args) throws Exception {
        Class cache = Integer.class.getDeclaredClasses()[0];
        Field c = cache.getDeclaredField("cache");
        c.setAccessible(true);
        Integer[] array = (Integer[]) c.get(cache);
        array[132] = array[133];

        System.out.printf("%d",2 + 2);
    }
}

আউটপুট:

5

ব্যাখ্যা:

আপনি সাধারণত অ্যাক্সেস করতে পারেন তার থেকে আরও গভীর পরিবর্তন করতে হবে। নোট করুন যে এটি জাভা 6-এর জন্য জেভিএম-তে কোনও মজাদার প্যারামিটার ছাড়াই ডিজাইন করা হয়েছে যা অন্যথায় পূর্ণসংখ্যার পরিবর্তন করে ।

পূর্ণসংখ্যা শ্রেণীর মধ্যে গভীর হল পূর্ণসংখ্যার একটি ফ্লাইওয়েট। এটি −128 থেকে +127 পর্যন্ত পূর্ণসংখ্যার একটি অ্যারে। cache[132]4 সেই জায়গাটি যেখানে 4 সাধারণত থাকবে। এটি 5 এ সেট করুন।

সতর্কতা: বাস্তব কোডে এটি করা লোকজনকে খুব অসন্তুষ্ট করবে।

আইডিয়নে কোড ডেমো



306
যে। হয়। মন্দ। একেবারে মন্দ। +1
জন ডিভোরাক

75
@ জ্যানডভোরাক আড্ডায় এটির পরামর্শ দেওয়া হয়েছিল Integer[] array = (Integer[]) c.get(cache); fisherYatesShuffle(array); ঠিক কতটা জিনিস ভাঙ্গবে তা কল্পনা করুন ...

30
এর মতো উত্তরগুলি আমাকে এই সাইটের চেয়ে এসও এর চেয়ে বেশি ভালবাসে।
স্যাঙ্গো

35
zomg, জাভা উত্তর কখনও শীর্ষ ভোট পাবেন না! জাভা শীর্ষে আনার জন্য +1 :)
ক্রুঙ্কার

297

Haskell,

আমি কেবলমাত্র ভালবাসি আপনি কীভাবে কোনও কিছুতে ছুঁড়ে ফেলতে পারেন এবং এটি এটির সাথে পুরোপুরি ঘূর্ণায়মান হয়।

λ> let 2+2=5 in 2+2
5

36
কি করে let 2+2=5 in 5+5? ಠ_ಠ
জন ডিভোরাক

22
@ জনডভোরাক Non-exhaustive patterns in function +- আমি এখানে একটি নতুন ফাংশন (+) সংজ্ঞায়িত করছি, এবং যদি আমি এমন কোনও প্লাগ ইন করি যা না হয় তবে 2+2এটি ত্রুটিযুক্ত হবে কারণ আমি কখনই সংজ্ঞায়িত করি না যে ক্ষেত্রে কী ঘটতে হবে should
ফ্লোন্ক

27
@ শিঙ্কিরো ছায়া, পুনরায় সংজ্ঞায়িত নয়
জন ডিভোরাক

96
এটি প্রায় এমন শোনাচ্ছে: "এবং
saidশ্বর

11
@ ব্যবহারকারী3217013 হাস্কেল শিখুন, এটি আপনার হৃদয়ের পক্ষে ভাল।
জুতো

294

সি

খুব সস্তার কৌশল তবে আমি নিশ্চিত যে আপনার বেশিরভাগ লোককে ফাঁদে ফেলব।

int main() {
    int a = 2 + 2;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     a++;
    printf("%d",a);
    return 0;
}

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

ডানদিকে কোডটি স্ক্রোল করুন।
আমি উইন্ডোজ / লিনাক্সে নিশ্চিত নই তবে ওএসএক্স এ, স্ক্রোলবারটি দৃশ্যমান নয়।
যাইহোক, এটি আপনার প্রিয় কোড সম্পাদকটিতে "স্পেস ভিজ্যুয়ালাইজেশন" সক্ষম করার একটি ভাল কারণ।


96
স্ক্রোলবারটি ক্রোমিয়ামে দৃশ্যমান, তবে কে প্রথমে এতে মনোযোগ দেয়? :)
রুসলান

172
লোকদের বিভ্রান্ত করার জন্য, আপনি একটি মন্তব্য লাইন যুক্ত করতে পারেন যা একটি স্ক্রোলবারের অস্তিত্বের "ব্যাখ্যা" করার পক্ষে যথেষ্ট দীর্ঘ তবে এটি যথেষ্ট নিস্তেজ যাতে কোনওরাই এটি পড়তে (যাতে যাতে স্ক্রোল করে) পড়ে না।
হেগেন ভন ইটজেন

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

49
চতুর, তবে মোবাইলে এটি কেবল ওয়ার্ডরেপস :)
লোগান

31
এই একমাত্র সময় যে এসই কোড উইন্ডোজ স্ক্রোলিং আমাকে কারও আঙ্গুল ভাঙ্গতে চায় না
অস্পষ্টরবোট

184

GolfScript

4:echo(2+2);

প্রিন্ট 5

অবশ্যই গল্ফস্ক্রিপ্টের একটি বাক্য গঠন রয়েছে যা অন্যান্য ভাষাগুলির চেয়ে স্পষ্টভাবে পৃথক, এই প্রোগ্রামটি কেবল বেসিক বা সি-ইশের মতো দেখায়।

4  - স্ট্যাকের 4 নম্বর রাখুন। স্ট্যাক সামগ্রী: 4
:echo- ভেরিয়েবল প্রতিধ্বনিতে স্ট্যাকের শীর্ষে মানটি সংরক্ষণ করুন। স্ট্যাক সামগ্রী: 4
(  - স্ট্যাকের শীর্ষে মানটি 1. দ্বারা হ্রাস করুন St স্ট্যাক সামগ্রী: 3
2  - স্ট্যাকের শীর্ষে 2 নম্বর রাখুন। স্ট্যাক সামগ্রী: 3 2
+  - স্ট্যাকের উপরে দুটি সংখ্যা যুক্ত করুন। স্ট্যাক সামগ্রী: 5
2  - স্ট্যাকের উপরে 2 নম্বর রাখুন। স্ট্যাক সামগ্রী: 5 2
)  - স্ট্যাকের শীর্ষে মানটি 1. দ্বারা বৃদ্ধি করুন content স্ট্যাক সামগ্রী: 5 3
;  - স্ট্যাক থেকে শীর্ষ উপাদানটি সরান। স্ট্যাক কন্টেন্ট: 5

গল্ফসক্রিপ্ট কার্যকর হয়ে গেলে স্ট্যাকের মধ্যে বাকী কিছু মুদ্রণ করে।


3
আপনি যে গল্ফস্ক্রিপ্ট না বলতে দয়া করে তাদের জন্য ব্যাখ্যা করতে পারেন?
ম্যাডটাক্স

1
@ ম্যাডটাক্স আপনি এখানে যান।
আআআআআআআআআআআআআআআআআআআআআআআআআআআআ

1
ধন্যবাদ। (আমি পরে উত্থাপন করব কারণ আমি আমার দৈনিক সীমাতে পৌঁছেছি, এখানে একটি বিয়ার রয়েছে))
ম্যাডটাক্স

5
সহজ এবং প্রতারণাপূর্ণ, আমি এটি পছন্দ করি। +1 টি
seequ

9
আমি এটি পছন্দ করি কারণ এটি গণিত বা শব্দার্থবিজ্ঞানের সাথে আপনাকে
চালনা

145

জাভা

সর্বদা আপনার ডাবলস, লোকেরা গোল করতে হবে

public class TwoPlusTwo {
  public static void main(String... args) {
    double two = two();
    System.out.format("Variable two = %.15f%n", two);
    double four = Math.ceil(two + two); // round just in case
    System.out.format("two + two = %.15f%n", four);
  }

  // 20 * .1 = 2
  private static double two() {
    double two = 0;
    for(int i = 0; i < 20; i++) {
      two += .1;
    }
    return two;
  }
}

আউটপুট:

Variable two = 2.000000000000000
two + two = 5.000000000000000

ব্যাখ্যা:

না, সিরিয়াসলি, আপনাকে সর্বদা আপনার দ্বিগুণ করতে হবে। 15 two()পদ্ধতিটি আসলে উত্পন্ন করে তা দেখানোর জন্য পর্যাপ্ত সংখ্যা নেই 2.0000000000000004(যদিও 16 টি যথেষ্ট)।

সংখ্যার কাঁচা হেক্স উপস্থাপনায়, এটি কেবলমাত্র 1 বিট পার্থক্য (এর মধ্যে 4000000000000001এবং 4000000000000000) ... যা Math.ceilপদ্ধতিটি 4 নয়, 5 ফিরিয়ে আনতে যথেষ্ট ।


61
Math.ceil(two + two); // round just in caseআমি দেখছি আপনি সেখানে কী করেছেন
টিম এস

17
একই নামের সাথে একটি ফাংশন এবং ভেরিয়েবল উভয়ই করা হচ্ছে ... বাহ!
Configurator

107
@ কনফিগুয়েটর এটি কিছুই নয়, এমনকি একটি ক্লাসও নেই two। প্রডাকশন গ্রেড জাভা Two two = Two.two.two();দুই ধরণের টু ফ্যাক্টরির সাথে রয়েছে।
জান্নিস ফ্রয়েস

36
দুই.ইনফিনিটি.এন্ড.বাইন্ড ()
সিনকাউ হাঙ্গাস

7
@ টিমস আপনি সেখানে কী করেছেন তা আমি সিল করেছিলাম
তারপরে ক্লাবকোড

135

বিবিসি বেসিক

সম্পাদনা: আন্ড্রেয়া ফাল্ডস এবং স্কোয়ামিশ অসিফ্রেজের জন্য, একটি ভিন্ন অনুবাদক ব্যবহার করে আরও দৃ version়প্রত্যয়ী সংস্করণ: http://sourceforge.net/projects/napoleonbrandy/

  MODE 6
  VDU 23,52,254,192,252,6,6,198,124,0
  PRINT
  PRINT "2+2=";2+2
  PRINT "2+3=";2+3

এখানে চিত্র বর্ণনা লিখুন

এটি প্রকৃতপক্ষে 4 নম্বরটি মুদ্রণ করে তবে VDU 23ASCII 52 এর জন্য হরফটিকে নতুন করে সংজ্ঞায়িত করে যাতে এটি দেখতে 4 এর পরিবর্তে 5 এর মতো হয় Screen স্ক্রিন মোড 6 নান্দনিক কারণে নির্বাচিত হয়েছিল (যুক্তিসঙ্গত আকারের অক্ষর))

Http://bbcbasic.co.uk/bbcwin/bbcwin.html এ এমুলেটর ব্যবহার করে আসল চিত্র । (কিছুটা আলাদা কোড সহ) সম্পাদনা ইতিহাসে দেখা যায়।


8
এই ফন্টগুলি যদিও অন্যরকম দেখাচ্ছে। আপনি কি মনে করেন আপনি এটি সঠিক ফন্টটি ব্যবহার করতে পারেন?
অ্যান্ড্রিয়া

@AndreaFaulds আমি থেকে এমুলেটর ব্যবহার করছি bbcbasic.co.uk/bbcwin/bbcwin.html । এটি 8x8 গ্রিডে মূল বিবিসি বেসিকের ফন্ট পুনঃনির্ধারণ সমর্থন করে। তবে এমুলেটরটির ডিফল্ট ফন্টটি 8x8 এর তুলনায় স্পষ্টতই উচ্চতর রেজোল্ট। সুতরাং আমি সম্ভবত আরও ভাল কাজ করতে পারে, তবে এটি নিখুঁত হবে না। আমি মনে করি আমি ফন্টটি 5 এবং পাশাপাশি 4 এর জন্য পুনরায় সংজ্ঞায়িত করতে পারি, তবে সেগুলি দেখতে একই রকম হবে।
স্তর নদী সেন্ট

5
@ আন্দ্রেএফাউল্ডস প্রশ্নটি বলেনি যে ফলাফলটি অন্য 5 এস থেকে পৃথক করা উচিত। আমি মনে করি এটি আসলে একটি বৈশিষ্ট্য। 2+3=5এবং2+2=5'
বেন জ্যাকসন

1
এটি বিবিসি মাইক্রোতে মূল হরফের সাথে মেলে:VDU 23,52,126,96,124,6,6,102,60,0
দুর্বল ওসিফরেজ

তথ্যের জন্য @ স্কোয়ামিশোসিফ্রেজ ধন্যবাদ। এটি এমুলেটরটিতে ফন্টের সাথে মেলে না। আপনার উদাহরণটি আমার মতো 7 পিক্সেল উচ্চ। এছাড়াও এটির নীচে একটি শূন্য রয়েছে ঠিক আমার মতোই, যেখানে দেখে মনে হচ্ছে এটিকে কিছুটা নিচে নামাতে হবে (যেমন নীচের পরিবর্তে শীর্ষে শূন্য আছে)) একটি মূল পার্থক্য হ'ল আমার কাছে 126,64 যদিও আপনার কাছে 126,96 আছে এবং আমার 2 এর পরিবর্তে আপনার 6 টি রয়েছে। এটি কারণ বিবিসি ফন্টের পুরু উল্লম্ব রেখা ছিল, তাই এটি একটি স্ট্যান্ডার্ড টিভি স্ক্রিনে 80 টি কলাম বিন্যাসে সহজেই পড়া যায়।
লেভেল রিভার সেন্ট

134

Brainfuck

+++++           +++++
    +               +    
    +     +         +     +++++
+++++    +++    +++++     
+         +     +         +++++
+               +
+++++           +++++.

আউটপুট:

5

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

আমি জানি এটি সম্ভবত কিছুটা সহজ বলে মনে হচ্ছে তবে আমি মূল পোস্টে পরামর্শ মতো সৃজনশীল হওয়ার চেষ্টা করেছি।


1
আমি ব্রেইনফাক জানি না, এটি বের করতে কয়েক মিনিট সময় লেগেছিল। ASCII 53, তাই না?
স্তর নদী সেন্ট

4
যতক্ষণ না আপনার কাছে +++++.কিছু আঁকতে পারে।
এডুয়ার্ড ফ্লোরিয়েন্সু

1
@ স্টিভেভারিল: হ্যাঁ আপনি ঠিক বলেছেন। (এবং বিএফ এ আসকি অক্ষর আউটপুট করার একমাত্র উপায়)।
টাইগার করুন


105

সজোরে আঘাত

যেহেতু এটি একটি , তাই আমার ধারণা যে দীর্ঘায়িত পদ্ধতিটি আমার ব্যবহার করা উচিত ...

বাশকে চেনে না এমন লোকদের জন্য: $((...expr...))পাটিগণিতের এক্সপ্রেশনগুলি মূল্যায়নের জন্য একটি বাক্য গঠন। কমান্ড-লাইন ক্যালকুলেটর $(bc<<<...expr...)ব্যবহার করে একই কাজ করে bc

v=2                     #v is 2
v+=2                    #v is 4
v=$(($v*5))             #v is 20
v=$(($v-16))            #v is 4
v=$(bc<<<"sqrt($v)+2")  #v is 4 (sqrt(4) is 2)
v=$(bc<<<"$v/4+3")      #v is 4 (4/4 = 1)
echo '2+2=' $v          #So v is 4...?

আউটপুট

2+2= 5

ব্যাখ্যা

দ্বিতীয় লাইনটি 22 তৈরি করার পরিবর্তে v এবং 2 এর সাথে যুক্ত করে।
আসল ব্যাখ্যা:
v=2 #v is 2 v+=2 #v is 22 v=$(($v*5)) #v is 110 v=$(($v-16)) #v is 94 v=$(bc<<<"sqrt($v)+2") #v is 11 (by default, bc rounds to integers) v=$(bc<<<"$v/4+3") #v is 5 (11/4 is 2 with rounding) echo '2+2=' $v #TADAAAM


8
সেখানে দুর্দান্ত গণিতের কৌশল চলছে!
টেমসডিং

5
@ টমসমিডিং এটি বেশ মজাদার ছিল, যদিও প্রায় অর্ধেকটা পথ পেরিয়ে আমি বুঝতে পেরেছিলাম যে আমি লাইন 4 এর 15পরিবর্তে 16bc

2
দেখুন আপনি যদি এই স্টাইলের চেহারাটি পছন্দ করেন তবে এটি বৈধ বাশ (ডলারের লক্ষণগুলি সরিয়ে দেয়, সমান চিহ্নের চারপাশে ফাঁকা স্থান দেয় এবং সম্মিলিত অ্যাসাইনমেন্ট অপারেটরদের অনুমতি দেয়): ((v = v * 5))বা((v *= 5))
ডেনিস উইলিয়ামসন

2
খুব ভাল, তবে আমি +=তত্ক্ষণাত্ জিনিসটি স্পট করেছিলাম ।
nyuszika7h

2
@ আরডনেউ হ্যাঁ আছে প্রথম দুটি লাইন ( v=2এবং v+=2): বাশ ভেরিয়েবল হ্যান্ডলিংয়ের সাথে অপরিচিত কারও কাছে এটি সমতুল্য হবে 2+2, তবে এটি আসলে "2"+"2", অর্থাৎ "22"। কোডটিতে থাকা অন্যান্য মন্তব্যগুলি কেবল এই কারণে ভুল। আমি জানি, সবাই এই

101

পাইথন

জাভা উত্তর দ্বারা অনুপ্রাণিত:

>>> patch = '\x312\x2D7'
>>> import ctypes;ctypes.c_int8.from_address(id(len(patch))+8).value=eval(patch)
>>> 2 + 2
5

জাভা এর মতো সিপিথন প্রথম কয়েকটি ছোট পূর্ণসংখ্যার কোনও অনুলিপির জন্য একই মেমরি অবস্থান ব্যবহার করে (মেমরিটি যদি 0-255 দেয় তবে)। এটি ভিতরে যায় এবং সরাসরি সেই মেমরির অবস্থানটি সম্পাদন করে ctypespatchএটি কেবল একটি অস্পষ্ট "12-7", len4 দিয়ে একটি স্ট্রিং , যা eval5 হয়।

আরও অস্পষ্ট সংস্করণ

exec("\x66\x72\x6f\x6d\x20c\x74\x79\x70e\x73\x20\x69\x6d\x70\
\x6f\x72\x74\x20c\x5f\x69\x6e\x748\x20a\x73\x20x\x3bf\x72\x6f\
\x6d\x20\x73\x74\x72\x75c\x74\x20\x69\x6d\x70\x6f\x72\x74\x20\
ca\x6cc\x73\x69\x7ae\x20a\x73\x20x0\x3bx\x2ef\x72\x6f\x6d\x5f\
a\x64\x64\x72e\x73\x73\x28\x69\x64\x284\x29\x2bx0\x28\x27\x50\
\x50\x27\x29\x29\x2e\x76a\x6c\x75e\x3d5")

2 + 2 ছাড়িয়ে

ওপি যেমন উল্লেখ করেছে, 2 + 2 কিন্ডা বিরক্তিকর হতে পারে; সুতরাং অযথা অপব্যবহারের জন্য এখানে কিছু ক্লিনার, মাল্টিপ্লাটফর্ম, মাল্টি-প্রস্থ কোড।

from __future__ import division, print_function
import struct
import ctypes
import random

# Py 2.7 PyIntObject:
# - PyObject_HEAD
#     - PyObject_HEAD_EXTRA [usually nothing unless compiled with DEBUG]
#     - (Py_ssize_t) ob_refcnt
#     - (_typeobject) *ob_type
# - (long) ob_ival

# two platform-sized (32/64-bit) ints (ob_refcnt and *ob_type from above)
offset = struct.calcsize('PP')

num = 60
nums = list(range(num))
addresses = [id(x) + offset for x in nums]
random.shuffle(nums)

for a, n in zip(addresses, nums):
    ctypes.c_ssize_t.from_address(a).value = n

print('2 + 2 =', 2+2)
print('9 - 4 =', 9-4)
print('5 * 6 =', 5*6)
print('1 / 0 =\n', 1/0)
print('(1 + 2) + 3 = ', (1+2)+3)
print('1 + (2 + 3) = ', 1+(2+3))
print('(2 + 3) + 1 = ', (2+3)+1)
print('2 + (3 + 1) = ', 2+(3+1))

পাইথন ২.7 নিয়ে চলছে ... শেষে সেই লাইনটি উপেক্ষা করুন। উইন্ডোজ -৪-বিট এবং উবুন্টুতে 32-বিটে কাজ করে, যে দুটি সিস্টেমে আমার অ্যাক্সেস সহজ।

$ python awful.py 
2 + 2 = 24
9 - 4 = 49
5 * 6 = 55
1 / 0 = 0.76

(1 + 2) + 3 =  50
1 + (2 + 3) =  68
(2 + 3) + 1 =  50
2 + (3 + 1) =  61
Segmentation fault (core dumped)

আশ্চর্যজনকভাবে, আমরা সংযোজনের সংস্থানমূলক সম্পত্তিটি ভেঙে ফেলতে পারি, যেখানে ( a + b ) + c = a + ( b + c ), যেমন প্রথম এবং দ্বিতীয় 1+2+3লাইনে দেখা গেছে, তবে অবিস্মরণীয়ভাবে আমরা পরিবহন সম্পত্তিও ভাঙি (যেখানে a + b) = বি + ; ২ য় এবং তৃতীয় লাইন)। আমি আশ্চর্য হই যে পাইথন দোভাষী যদি সংযোজন প্রকাশের চারপাশে অতিমাত্রায় বন্ধনীকে উপেক্ষা করেন।


96
হ্যাঁ, আমরা অবশ্যই অবশ্যই কেবলমাত্র

10
এটি উল্লেখ করার মতো যে এটি সত্যই পাইথন ট্রিক নয় এবং এটি পাইথনের সি প্রয়োগকরণের জন্য নির্দিষ্ট।
x অ্যাপল

1
@ নিকট আহ! ঠিক আছে. আমি এই ছাপে ছিলাম যে আপনি একই
-৪

22
exec('\x66\x72\x6f\x6d\x20\x63\x74\x79\ \x70\x65\x73\x20\x69\x6d\x70\x6f\ \x72\x74\x20\x63\x5f\x69\x6e\x74\ \x38\x3b\x20\x69\x6d\x70\x6f\x72\ \x74\x20\x73\x74\x72\x75\x63\x74\ \x3b\x20\x63\x5f\x69\x6e\x74\x38\ \x2e\x66\x72\x6f\x6d\x5f\x61\x64\ \x64\x72\x65\x73\x73\x28\x69\x64\ \x28\x34\x29\x20\x2b\x20\x73\x74\ \x72\x75\x63\x74\x2e\x63\x61\x6c\ \x63\x73\x69\x7a\x65\x28\x27\x50\ \x50\x27\x29\x29\x2e\x76\x61\x6c\ \x75\x65\x3d\x35')একটি পরিবর্তিত প্রথম সংস্করণ। আমি এটি তৈরি করেছি যাতে আমি হ্যাকিং প্রতিযোগিতায় লাল দল হিসাবে / ইত্যাদি / প্রোফাইলে Y পাইথনস্টার্টআপে ফেলতে পারি।
ডেভিডজেফেলিক্স

2
হ্যাঁ। সিডনোট, দেখে মনে হয় যে 1, 0 এবং -1 হ'ল কিছু সংখ্যা যা পাইথন সাথে সাথে সেগফোল্ট করে। আমি ভাবছিলাম সেগুলি পাইথন প্রোগ্রামগুলির আচরণের জন্য সবচেয়ে খারাপ হবে। এই ত্রুটিগুলি রক্ষার জন্য ফাকিটপি ব্যবহার করা সম্ভব ।
ডেভিডজেফেলিক্স

86

javascript:

g = function () {
  H = 3
  return H + H
}

f = function () {
  Η = 2
  return Η + H
}

// 3 + 3 = 6
alert(g())
// 2 + 2 = 5
alert(f())

এটি http://jsfiddle.net/qhRJY/ এ দেখুন

এইচ (লাতিন বর্ণের মূলধন এইচ) এবং Both (গ্রীক বর্ণের মূলধন এটা) উভয়ই বিশ্বব্যাপী স্কোপে সেট করা হয়েছে কারণ তারা ভেরওয়ার্ডের সাথে ফাংশনে স্থানীয় হিসাবে সংজ্ঞায়িত হয়নি। এগুলি দেখতে দেখতে একইরকম, তারা আসলে 2 টি আলাদা মান সহ 2 টি ভিন্ন ভেরিয়েবল। আপনার ব্রাউজারে Ctrl + F ব্যবহার করে আপনি দেখতে পাবেন যে page (এটা) এই পৃষ্ঠায় H (এইচ) এর চেয়ে উল্লেখযোগ্যভাবে কম দেখায়।


4
@ সাম যদিও দু'এইচ এর চেহারা একই, তারা আসলে 2 সম্পূর্ণ ভিন্ন অক্ষর। ইউনিকোডে আলাদা আলাদা অক্ষর থাকতে পারে যা দেখতে একই রকম তবে বিভিন্ন কোড-পয়েন্ট রয়েছে। এই নির্দিষ্ট ক্ষেত্রে; অন্য "এইচ" হ'ল আসলে গ্রীক অক্ষর এটা
d3dave

79
পাঠকদের "বিভ্রান্ত" করার জন্য হোমোগ্লিফ ব্যবহার করা এখন আনুষ্ঠানিকভাবে মজার নয়
জন ডিভোরাক

29
হোমোগ্লিফগুলি জাভাস্ক্রিপ্টের হাস্যকর গ্লোবাল ভেরিয়েবলের সাথে একত্রে মজাদার হয়ে ওঠে।
কনস্ট্যান্টিন ওয়েটিজ

3
এটি "ইউনিকোড Η চরিত্র" নয়, এটি ল্যাটিন এইচ এবং গ্রীক এটা (Η)।
ফিজোম

4
@ ভার্টিকো হুম ... একটি এফএইউ প্রশ্নটি যথেষ্ট না হলে আপনি কী চান? সহায়তা কেন্দ্র থেকে সংযুক্ত একটি এফএকিউ প্রশ্ন? মনে রাখবেন যে কেবলমাত্র মডারেটররা প্রায়শই জিজ্ঞাসিত ট্যাগ প্রয়োগ করতে পারে । উত্তরের হিসাবে - প্রশ্নটিতে "স্কোর +5 বা তার বেশি এবং কমপক্ষে দ্বিগুণ সংখ্যক উর্ধ্বগহণের তুলনায় দ্বিগুণ" রয়েছে। উত্তরের 27 টি upvotes এবং কোনও ডাউনভোট নেই। উত্তরে বর্ণিত মানদণ্ডগুলি পূরণ করার মতো এটি আমার কাছে শোনাচ্ছে, এবং কোনও সাইটের মেটা সাইটের একটি প্রশ্নে দ্বিতীয় পুরানো উত্তরের জন্য upvotes এর পরিমাণটি বেশ চিত্তাকর্ষক, যেখানে কেবল 124 জন 10 বারের বেশি ভোট দিয়েছেন। কত হবে আপনি ভালো লাগে? সবাই?
জন ডিভোরাক

72

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

function addDecibels(){return (10*Math.log10([].reduce.call(arguments,(p,c)=>p+Math.pow(10,c/10),0))).toFixed(1);}

alert( addDecibels(2,2) );

আন্ডারহ্যান্ড বিটটি আসলে এটি আন্ডারহ্যান্ডড নয় - যদি আপনি 2 ডিবি শব্দ উত্সকে অন্য 2 ডিবি সাউন্ড উত্সে যুক্ত করেন তবে ফলিত সম্মিলিত শব্দটি 5 ডিবি হবে (এবং যদি আপনি দুটি 30 ডিবি উত্স যোগ করেন তবে এর 33 ডিবি) তারা লগ স্কেলে পরিমাপ করা হয়।

আপনি এটি অন্য একটি ক্যালকুলেটরে দেখতে পাবেন ।


আসলে এটি আসলে 5.01 ডেসিবেলের মতো, তবে 4 থেকে গণনা করার পক্ষে যথেষ্ট দূরে।
জো জেড।

68

পিএইচপি

echo '2 + 2 = ' . (2 + 2 === 4 ? 4 : 2 + 2 === 5 ? 5 : 'dunno');

যা উত্পাদন করে:

2 + 2 = 5

এটি কারণ পিএইচপি-তে, টার্নারিগুলি বাম থেকে ডান গণনা করা হয়, সুতরাং এটি আসলে
(2 + 2 === 4 ? 4 : 2 + 2 === 5) // 2 + 2 is == 4, and 4 == true, therefore echo 5 ? 5 : 'dunno';


35
বাধ্যতামূলক phpsadness
wchargin

1
আমি আর একটি PHPউদাহরণ পেয়েছি :$a=2;echo "2+2=".$a++ + $a++;
21-21 এ আভল করুন

এটি সুস্পষ্ট যে $ a ++ 3 তৈরি করে এবং ফলাফলটি 6 হয় you're আপনি যা ভাবছেন তা আমি পাই না।
ওজ

1
@ জানুস পিএইচপিস্যাডনেস # 30 এটিকে ভালভাবে ব্যাখ্যা করেছে
wchargin


66

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

var total = 2 + 2;

if(total = 5)
{
    alert('I guess 2 + 2 = 5');
}
else
{
    alert('The universe is sane, 2 + 2 = 4');
}

73
=পরিবর্তে ==, সহজেই দেখতে এবং খোলামেলা বরং অপ্রয়োজনীয়।
ApproachingDarknessFish

19
যাইহোক যাইহোক, একটি

6
আমি এখনও এই উত্তরটি পছন্দ করি
স্যাম ক্রিমার

5
আমিও এটি পছন্দ করি প্রতিটি ভাষা =কেবল একটি দায়বদ্ধতা হিসাবে নয় বরং তুলনা অপারেটর হিসাবে ব্যবহার করে (যেমন পাস্কাল, এসকিউএল, ভিবি)
2'14

আমি এটি খুব সুস্পষ্ট মনে করি
অলিভার নি

57

সি শার্প

    static void Main(string[] args)
    {
        var x = 2;
        var y = 2;

        if (1 == 0) ;
        {
            ++x;
        }

        Console.WriteLine(x + y);
    }

7
আহ, দুর্বৃত্ত চরিত্রগুলি সহ ভাল পুরানো কৌশল। এজন্য আপনার সর্বত্র 1TBS ব্যবহার করা উচিত।
জন ডিভোরাক

11
@ জনডভোরাক যদি এই বিবৃতি দেওয়ার পরে সেমিকোলনের কারণে কাজ করে? আমি সি # জানি না তবে আমি সি ++

5
@ প্রফেসরফিশ আমি যা অনুমান করি। এছাড়াও, যে ভাষাগুলি আপনাকে এলোমেলোভাবে কোঁকড়া ধনুর্বন্ধনী এফটিডাব্লু sertোকাতে দেয় না
জন ডিভোরাক

12
";" ছাড়া, if স্টেটমেন্টটি কোড ব্লকটি কার্যকর করা হবে কিনা তা নিয়ন্ত্রণ করে। সাথে ";" সেখানে, যদি মূল্যায়ন করা হয় তবে ফলাফল দিয়ে কিছুই করা হয় না। তারপরে নির্বিশেষে কোড ব্লকটি প্রতিটি সময় কার্যকর করা হয়। সি # তে, এলোমেলো কোড ব্লক থাকা পুরোপুরি গ্রহণযোগ্য।
Grax32

2
আমি অন্য এক সাথে এই নিজেকে পেয়েছিলাম। এর পরে আমার একটি লুপ ;ছিল, যা পুরোপুরি ইচ্ছাকৃত ছিল কারণ আমি একটি কার্সার এগিয়ে দেওয়ার জন্য খালি লুপটি ব্যবহার করছি। আমি ঘটনাক্রমে আধা-কোলন সরিয়ে দিয়েছি, সমস্ত কিছুই ফুরিয়ে গেছে এবং কেন তা বুঝতে পারি না।
এমপেন

56

আপনার জাভাস্ক্রিপ্টকে ASCII শিল্পের সাথে সাজাতে বিপজ্জনক।

  -~// JS  \\~-
 ~-// Maths \\-~
-~// Madness \\~-

     (2 + 2)

মন্তব্যগুলি অপসারণ করা হলে, অবশিষ্ট প্রতীক এবং অপারেটররা
-~~--~(2 + 2) এটির মূল্যায়ন করে এটি জেএসে বিটওয়াইস নট অপারেটর (of) ব্যবহার করে, কয়েক মিনিট বিয়োগ চিহ্ন সহ যা এই পথে মানগুলিকে উপেক্ষা করবে।


3
আমি ভাবছিলাম যে --অপারেটরটি গ্রহণযোগ্য কীভাবে এটির সাথে ত্রুটি হওয়া উচিত Invalid left-hand side expression in prefix operation; তবে আমি বুঝতে পারি যে তাদের মধ্যে একটি সাদা জায়গা রয়েছে।
usandfriends

53

সজোরে আঘাত

#!/bin/bash

# strings of length 2
x="ab"
y="cd"

# add lengths by concatenation
c="$(cat<<<$x; cat<<<$y)"

# display the lengths of the parts and the sum
echo "${#x} + ${#y} = ${#c}"

আউটপুট:

2 + 2 = 5

প্রতিটি থেকে আউটপুটে catএকটি অন্তর্নিহিত নিউলাইন থাকবে, তবে চূড়ান্ত নিউলাইনটি কমান্ড প্রতিস্থাপনের মাধ্যমে ছিনিয়ে নেওয়া হবে$( )


এখানে অন্যটি:

#!/bin/bash

# Create an array of ascending integers
a=({1..10})

# Use the sum to index into the array
s="2 + 2"
i=$(($s))
echo "$s = ${a[$i]}"

বাশ অ্যারেগুলি শূন্য সূচকযুক্ত


3
আমি আসলে প্রথমটিকে ধরলাম, যেমন বাশে গল্ফ করার সময় আমার মতো জিনিসগুলির সাথে প্রচুর সমস্যা হয়েছিল। দ্বিতীয়টি হিসাবে, অ্যারেগুলি শূন্য-সূচকযুক্ত হয় না কোথায় ?

3
@ প্রোফেসরফিশ অ্যাপলসক্রিপ্ট, উদাহরণস্বরূপ:set a to {1, 2, 3, 4, 5, 6, 7, 8} item 4 of a
ডিজিটাল ট্রমা

12

5
zsh1-ইনডেক্সেড অ্যারে ব্যবহার করে (এবং $arr[0]কেবল সেট না করা বা অপরিজ্ঞাত বা কোনও কিছু থাকে) KSH_ARRAYSবিকল্পটি সেট না করা হলে , অ্যারে 0-সূচকযুক্ত হয়।
চিপনার

4
@ প্রফেসরফুশ: লুয়া এবং ফোর্টরান 1 টি সূচকযুক্ত। যে কোনও সময় আমি 10 এ গণনা করি, আমি সর্বদা 1 থেকে শুরু করি, 0 নয়: ডি
কাইল কানস

49

পার্ল

# Generic includes
use strict;
use warnings;
use 5.010;
use Acme::NewMath;

# Ok, time to begin the real program.
if (2 + 2 == 5) {
    say 5;
}
else {
    say "Dunno...";
}

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


16
এটি বেশ বোকা। আপনার আমদানি / অন্তর্ভুক্তগুলি কেউ কখনও দেখে না।

44

আর

# add the mean of [1,3] to the mean of [4,0] (2 + 2)
mean(1,3) + mean(4,0)

আউটপুট:

5

কোডটি আসলে [1] এর সাথে [4] এর গড় যুক্ত করে। আর গড় ফাংশন ব্যবহার করতে হবে সঠিক উপায়: mean(c(1,3)) + mean(c(4,0))এই অসদৃশ আর কিছু অন্যান্য গাণিতিক ফাংশন, যেমন হয় sum, maxএবং min; কোথায় sum(1,3), max(1,3)এবং min(3,1)সমস্ত প্রত্যাশিত উত্তর দিতে হবে।


7
খারাপ নয়, আমাকে কিছুটা বোকা বানিয়েছে।
Qwr

37

জাভা

public class Five {
    public static void main(final String... args) {
        System.out.println(256.0000000000002 + 256.0000000000002);
    }
}

আউটপুট:

512.0000000000005

সম্ভবত যে কোনও ভাষায় একই ধরণের দ্বিগুণ ব্যবহার করে works


7
এটি একটি খুব অদ্ভুত মূল স্বাক্ষর।
বার্টি হুইন

10
জাভা হুডের নীচে অ্যারে হিসাবে বৈকল্পিক যুক্তি প্রয়োগ করে।
কোডাফাই

4
আমাকে সম্ভবত এক মুহুর্তে বুঝতে পেরেছিল যে আপনি সম্ভবত ডাবলসের শেষ সংখ্যাগুলি নিয়ে কথা বলছেন। আমি দেখেছি যে প্রথম সংখ্যা সঠিকভাবে (যোগ _2_56 + _2_56 = _5_12), কিন্তু এটি আরো সম্ভবত আপনি কি বলতে চান বলে মনে হয় 256.000000000000_2_ + 256.000000000000_2_ = 512.000000000000_5_(দ্রষ্টব্য:। আন্ডারস্কোর থেকে "সাহসী" ডিজিট ব্যবহার
জাস্টিন

35

Befunge

এটি বেফুঞ্জে লেখা, তবে পাইথনের মতো দেখতে ডিজাইন করা হয়েছে।

#>>>>>>>>>>>>>>>>>v
# Calculate 2 + 2 v
#>>>>>>>>>>>>>>>>>v
def add(v,w):
    return v+w
 # I rewrote this 5 times and it still doesn't work

print add(2,2) #... Still not working

# email: MarkSmith@example.com

চালানোর সময় (সঠিক দোভাষী দিয়ে) প্রোগ্রামটি মুদ্রণ করা হবে 5

ব্যাখ্যা:

একটি বেফঞ্জ প্রোগ্রামটি একক অক্ষর কমান্ডগুলির একটি গ্রিড দিয়ে তৈরি। প্রথম কমান্ডটি উপরের বাম কোণে থাকা একটি এবং কমান্ডগুলি পড়া ডানদিকে এগিয়ে যায়। তবে প্রোগ্রাম কার্যকর করার সময় দিকটি পরিবর্তন হতে পারে।

কেবলমাত্র প্রথম সারির অক্ষর এবং vপ্রথম সারির সাথে শুরু হওয়া অক্ষরের কলামটি চালানো হয়। প্রশ্নের মধ্যে থাকা অক্ষরগুলি:

#- পরবর্তী কমান্ডটি এড়িয়ে চলুন
>- এখন থেকে, কমান্ডগুলি বর্তমান কমান্ডের ডানদিকে পড়তে হবে
v- এখন থেকে, কমান্ডগুলি বর্তমান কমান্ডের নীচে পড়ে
5- স্ট্যাকের 5 টি চাপুন
.- নম্বরটি পপ করুন এবং মুদ্রণ করুন স্ট্যাকের শীর্ষে
@- প্রোগ্রামটি শেষ করুন
<space>- কিছুই করবেন না

আপনি যদি জানতেন আপনি বেফুঞ্জে প্রোগ্রামিং করছেন তবে এটি কাউকে সত্যই ঠকায় না। তবে আপনি যদি এটির সামনে এসে পৌঁছে এবং বুঝতে না পারেন এটি বেফুঞ্জ, এটি সম্ভবত সম্ভবত।


11
+1, এটি অত্যন্ত বিচক্ষণ, কারণ ডিবাগিংয়ের সময় উত্স কোডটি চালিত এমন প্রোগ্রামটির দিকে কে তাকাচ্ছে?
মিঃলরে

33

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

কোড:

var a = 3;
а = 2;
a + а;

আউটপুট:

5

আপনি নিজের কনসোলে এটি পরীক্ষা করতে পারেন বা এই ফিডলটি পরীক্ষা করতে পারেন


6
আপনি কি আমাকে কোনও উত্সের দিকে নির্দেশ করতে পারেন বা আমাকে ব্যাখ্যা করতে পারেন কেন এটি কাজ করে। আমি জানি এটি কাজ করে কারণ আমি এর ফিডল পরীক্ষা করে দেখেছি, তবে কেন তা বুঝতে পারছি না।
পরিবার

29
"একটি" পরিবর্তনশীল উভয় সময় একই হয় না (দুঃখিত আমি যদি এটি ক্ষতিকারক হয়)। স্নিগ্ধ ইউনিকোড প্রকৃতপক্ষে
স্যাম ক্রিমার

6
আমি পছন্দ করি যে পরবর্তী চরিত্রটি, U+04316 প্রায় 6!
wchargin

73
পাঠকদের "বিভ্রান্ত" করার জন্য হোমোগ্লিফ ব্যবহার করা এখন আনুষ্ঠানিকভাবে মজার নয়
জন ডিভোরাক

40
@ জনডভোরাক এই উত্তরটির পরে পোস্ট করা হয়েছিল; এটি এখানে প্রযোজ্য নয়।
ডুরকনব

30

সি (লিনাক্স, জিসিসি 4.7.3)

#include <stdio.h>

int main(void)
{
    int a=3, b=2;

    printf("%d + %d = %d", --a, b, a+b);  
}

এটি 2 + 2 = 5 মুদ্রণ করে

সুতরাং a = 2, তাই না?

gcc-4.7.3 ডান থেকে বামে ফাংশন পরামিতিগুলি মূল্যায়ন করে। যখন একটি + বি মূল্যায়ন করা হয়, তখনও 3 হয়।


16
অনির্দিষ্ট আচরণের দুর্দান্ত ব্যবহার
chbaker0

24

FORTRAN 77

       program BadSum
       integer i,a,j
       common i,a
       a = 1
       i = 2
       call addtwo(j) 
       print *,j
       end

       subroutine addtwo(j)
       integer a,i,j
       common a,i
c since a = 1 & i = 2, then 2 + 1 + 1 = 2 + 2 = 4
       j = i + a + a
       end

commonব্লকের স্ট্যান্ডার্ড অপব্যবহার : আদেশের বিষয়টি; সাবউটিনে ব্লকের অর্ডারটি অদলবদল করেছিলাম তাই আমি সত্যিই যুক্ত করছি 1 + 2 + 2


6
@ জানডভোরাক: হাহাহা, আমি ফোরটান চতুর্থটি ব্যবহার করতে পারতাম যেখানে আমি 2=3
অক্ষরগুলির

1
@ কাইলিকানোস, আমি যখন ভেবেছিলাম যে আপনার পোস্টটি ফরট্রেনে লেখা হয়েছিল তখনই এটি ঘটবে।
ডানমার্ডার্ড

@ কাইলক্যানোস এটি করুন!
ClickRick

1
@ কাইলক্যানোস: এটি কি পূর্ণসংখ্যার আক্ষরিক সাথে কাজ করেছিল বা কেবল ভাসমান? আমি মনে করি যে সেই যুগের একটি মেশিনে, একটি পূর্ণসংখ্যার আক্ষরিক এবং একটি ঠিকানা একই আকার হতে পারে তবে এটি একটি ফ্লোটের চেয়ে ছোট, সুতরাং ভাসা ভাসমানদের পুলিংয়ের ফলে স্থান বাঁচবে তবে পুলিংয়ের মতো অক্ষর থাকবে না।
সুপারক্যাট

2
@ কাইলক্যানোস: আমার বোঝার বিষয় যে সংকলকরা একটি আক্ষরিকের জন্য সরাসরি অ্যাসাইনমেন্টের অনুমতি দেবে না, তবে ফাংশন কলগুলি রেফারেন্স দ্বারা পাসের মাধ্যমে ব্যবহৃত হবে এবং কোনও ফাংশনটিতে একটি ভাসমান-বিন্দু আক্ষরিক পাস করার ফলে সাধারণত ভাসমানের পুলে কোনও মানের ঠিকানাটি পাস হয়ে যায় would -পয়েন্ট আক্ষরিক কোনও ফাংশনে একটি পূর্ণসংখ্যার মান পাস করার ফলে এটি পুল হয়ে যায়, তবে বেশিরভাগ কোড যা পূর্ণসংখ্যার ব্যবহার করে তা সরাসরি মানগুলি অন্তর্ভুক্ত করে।
সুপারক্যাট

24

পাইথন

কোড প্রিন্ট 5 যা এই কাজের জন্য সঠিক উত্তর।

def int(a):
    return ~eval(a)

def add(a,b):
    return int(a)+int(b)

print ~add("2","2")

সম্পাদনা করুন: এখানে বিকল্প সংস্করণ যা পূর্ণসংখ্যার যোগ করে, দু'টি স্ট্রিংযুক্ত নয়।

def int(a): return ~eval(`a`)
def add(a,b): return int(a)+int(b)
print ~add(2,2)

টিলডে একটি আনরিয়া ইনভার্স অপারেটর যা প্রত্যাবর্তন করে -x-1, তাই প্রথম পদক্ষেপটি পেতে হবে -6এবং তারপরে অন্য কোনও অপারেটরের সাথে printফাংশন গেট পাবেন5


কেন কেবল ন্যায়বিচারের ~eval(`a`)পরিবর্তে ~a?
এন্ড্রেয়া কর্বেলিনী

2
আমি কিছু int()কার্যকারিতা ছেড়ে যেতে চেয়েছিলাম এবং eval()ইনপুটটি স্ট্রিংফাইড পূর্ণসংখ্যা হলে কাজটি করি :)
14

24

চুনি

class Fixnum
    alias plus +

    def + (other)
        plus(other).succ
    end
end

puts 2 + 2

এটি এমন সমস্ত সংযোজনের ফলাফল বাড়ায় যার প্রথম যুক্তিটি একটি ফিক্সনাম (যা 2 কমপক্ষে এমআরআইতে রয়েছে) দ্বারা 1 করে by

এর পার্শ্ব প্রতিক্রিয়াগুলি জাভা সংস্করণের চেয়েও খারাপ।


23

চুনি

রুবিতে প্রথম শ্রেণীর পরিবেশ রয়েছে। এর অর্থ প্রচুর জিনিস। এর অর্থ হ'ল প্রচুর কাজ করা যায় যা ... সম্ভবত করা উচিত নয়।

def mal(&block)
    block.call
    for v in block.binding.eval("local_variables");
      block.binding.eval('if ' + v.to_s + ' == 4 then ' + v.to_s + ' = 5 end')
    end 
end

a = 2 + 2;
b = 2 + 4;
puts "2 + 2 = ", a
puts "2 + 4 = ", b

mal do
  puts "But in 1984..."
end

puts "2 + 2 = ", a
puts "2 + 4 = ", b

এর ফলাফল:

2 + 2 = 
4
2 + 4 = 
6
কিন্তু 1984 সালে ...
2 + 2 = 
5
2 + 4 = 
6

আপনি যদি এর সুখ এবং বিপদগুলি সম্পর্কে আরও জানতে চান তবে রুবি কনফ 2011 রবি যুক্তিসঙ্গত রাখছেন এবং অ্যাবস্ট্রাক্ট হেরেসিজ ব্লগ থেকে প্রথম শ্রেণির পরিবেশ পড়ুন


এছাড়াও:class Fixnum; def +(n) 5 end end; 2 + 2 # => 5
ফিল্ম 42

1
কেবলমাত্র সুনির্দিষ্ট ক্ষেত্রে করার জন্য:class Fixnum; alias_method :orig_plus, :+; protected :orig_plus; def +(n) self == 2 && n == 2 ? 5 : self.orig_plus(n) end end
গ্যারি এস ওয়েভার

21

পরিকল্পনা

(define 2+2 5)
2+2 ;=> 5

9
Hey! 2+2আপনি কিভাবে লিস্পে যোগ করবেন না!
জন ডিভোরাক

1
তাতে কি? এটি আপাতদৃষ্টিতে টাস্কের মতো 2 থেকে 2 যোগ করে।
হাউলেথ

119
@ জনডভোরাক আমি কখনই লিস্প ব্যবহার করি নি, তবে আমি বুঝতে পারছি এটি এরকমই কিছু ((((2))(()()))()()(()((((+))))()(((()(())((((2)))))()))(())))
আন্ডারগ্রাউন্ডোমোনাইল

2
"2 + 2 কে 5 হিসাবে পুনরায় সংজ্ঞায়িত করা খুব সৃজনশীল নয়! এটিকে দ্বিগুণ করবেন না, অন্য কিছু চেষ্টা করুন।" --- আচ্ছা, R5RS আমি পুনরায় সংজ্ঞায়িত করতে পারেন + পরিবর্তে 2+ 2 বা 2. উত্তর এখানে: pastebin.com/KHtm9Jmv
ফিলিপ

1
@ ফিলিপমিকারোনিল্ল্লি যে আমার উত্তরের পরে অ্যাডোটেশন দেওয়া হয়েছিল যাতে এটি গণনা করা হয় না।
হাউলেথ

20

সি শার্প

var c = Enumerable.Range(2, 2).Sum();

অপরিচিত কারও কাছে এটির মতো দেখাবে যে আমি 2 থেকে শুরু করে শেষ হতে চলেছি reality বাস্তবে এটি 2 থেকে শুরু হয় এবং দুটি সংখ্যার জন্য যায়। সুতরাং 2 + 3 = 5।


6
2 এ শুরু এবং শেষ হওয়া একটি ব্যাপ্তি কেবল হবে { 2 }, তাই না?
পাওলো ইবারম্যান

1
@ PaŭloEbermann Enumerable.Rangeশুরু এবং শেষ করে না, এটি একটি শুরু এবং একটি গণনা নেয় (উপাদানগুলির গণনা করা হবে)।
মাস্টারমেস্টিক

14
@ মাস্টারমাস্টিক আমি উত্তরের ব্যাখ্যা থেকে এটি বুঝতে পেরেছি। তবে "কারও কাছে ফ্যামিলার নয়" অর্থ এমন একটি ব্যাপ্তি (উত্তরের ব্যাখ্যা থেকে) বলে মনে করা হয়, এবং আমার যুক্তিটি হল যে প্রত্যাশিত ফলাফলটি তখন 4 হবে না, 2 হবে
পাওলো ইবারম্যান

1
@ পাওলোএবারম্যান, হ্যাঁ এটিও দেখার এক উপায়। আমি ভাবছিলাম এটি দেখতে আরও বেশি লাগবে যেমন আমি সংখ্যার যোগ করার জন্য সরবরাহ করছিলাম। সুতরাং Enumerable.Range (1,2,3,4) 4 এ 1, শেষে শুরু করবেন, এবং 10. যোগফল হবে
পল


18

সি

int main() {
        char __func_version__[] = "5";  // For source control
        char b[]="2", a=2;
        printf("%d + %s = %s\n", a, b, a+b);
        return 0;
}

5খুব ভাল লুকানো নয়, আমি ভীত। অপ্টিমাইজেশন দিয়ে কাজ করে না।


1
নিস; অপরিজ্ঞাত আচরণের অনুমতি না দিলে আমি উজ্জীবিত করতে পারি না।
এই

2
@ নিজেই।, আমি যেখানে ইউবির উপর নির্ভর করা নিষিদ্ধ ছিল তা দেখছি না। অনেক কোড গল্ফ উত্তর ইউবি উপর নির্ভর করে এবং আমি মনে করি যতক্ষণ না কিছু যুক্তিসঙ্গত প্ল্যাটফর্মে ধারাবাহিকভাবে ঘটে থাকে ততক্ষণ এটি ঠিক আছে।
উগ্রোরেন

2
আমি দেখতে পাচ্ছি না যেখানে ইউবির উপর নির্ভর করা নিষিদ্ধ করা হয়েছে। আমি এটিতে কোনও বিধিও পাইনি। এটি স্পষ্ট করা যেতে পারে যদি ভাল হবে। অনেকগুলি কোড গল্ফ উত্তর ইউবির উপর নির্ভর করে এবং আমি মনে করি এটি যতক্ষণ না কিছু যুক্তিসঙ্গত প্ল্যাটফর্মে ধারাবাহিকভাবে ঘটে থাকে ততক্ষণ পর্যন্ত এটির নির্দিষ্ট কিছু নিয়ম দুর্দান্ত হবে।
এই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.