স্ট্যাকের ওভারফ্লো হতে সংক্ষিপ্ততম কোডটি কী? [বন্ধ]


160

স্ট্যাক ওভারফ্লোতে সর্বসাধারণের উদ্বোধনের স্মরণে, স্ট্যাকের ওভারফ্লো হওয়ার সংক্ষিপ্ততম কোডটি কী? যে কোনও ভাষা স্বাগত।

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

ETA2: আমি এখন একটি "সেরা উত্তর" নির্বাচন করেছি; যুক্তিযুক্ত জন্য এই পোস্ট দেখুন । যারা অবদান রেখেছেন তাদের সবাইকে ধন্যবাদ! :-)

উত্তর:


212

এই সমস্ত উত্তর এবং কোন বেফঞ্জ? আমি এগুলির সকলের সংক্ষিপ্ত সমাধানের জন্য একটি ন্যায্য পরিমাণ উপার্জন করতে চাই:

1

মজা করছি না. এটি নিজে চেষ্টা করুন: http://www.quirkster.com/iano/js/befunge.html ml

সম্পাদনা: আমার ধারণা আমি এটির ব্যাখ্যা করতে হবে। 1 অপারেন্ডটি একটি 1 কে বেফুঞ্জের অভ্যন্তরীণ স্ট্যাকের দিকে ঠেলে দেয় এবং অন্য কোনও কিছুর অভাব ভাষার নিয়মের আওতায় এনে দেয়।

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


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

3
এটি কোনও অসীম লুপ নয়, কারণ 1 টি নির্দেশ একটি স্ট্যাকের উপর 1 চাপায়। অবশেষে, আপনার বেফুঞ্জ ইন্টারপ্রেটার স্ট্যাক স্পেসের বাইরে চলে যাবে, তবে এতে কিছুটা সময় লাগবে। :)
প্যাট্রিক

18
আপনি .. আমার ব্রাউজারটি ক্র্যাশ করেছেন এবং .. আমার সিপিইউ ফ্যানকে ওভারড্রাইভে পাঠিয়েছেন।
Sam152

2
অ্যামেজিং! আমার কম্পিউটার বা ব্রাউজার (অপেরা) ক্র্যাশ হয়নি তবে উভয় প্রসেসর 100% এবং ফ্যানের গতি 3
চলছে Sec সেক্কো

28
এখানে একটি বেফুঞ্জ প্রোগ্রামটি দ্রুত উপচে পড়েছে: " এটি সংখ্যার ১ টি কপির চেয়ে 2 বারের চেয়ে
একবারে


174

আপনি সি # নেট এ এটি চেষ্টা করতে পারেন

throw new StackOverflowException();

29
আমার মধ্যে অভিভাবক বলেছেন যে এটি কোনও স্ট্যাককে উপচে ফেলেছে না, কেবল একটি ব্যতিক্রম ছুঁড়েছে। এটি হ'ল হাঙ্গরদের দ্বারা আক্রান্ত হওয়ার দ্রুততম উপায়টি সমুদ্রের মধ্যে দাঁড়িয়ে "চিঙর আক্রমণ" বলে চিৎকার করা। তা সত্ত্বেও, আমি এটি আপ-ভোট করব। :)
বার্নার্ড

আচ্ছা - কোন পার্থক্য আছে? আপনি এটি ধরতে এবং চালিয়ে যেতে পারেন? অথবা এটি ঠিক সি # তে স্ট্যাকওভারফ্লোয়ের মতো? যে ক্ষেত্রে, এটা একরকম, একটি Stackoverflow, যেহেতু এটি এক থেকে আলাদা করা যায় ... তবে - উপরে সব কারণের জন্য ভোট দিন
মো

18
যদি কোনও স্ট্যাক যদি জঙ্গলে ওভারফ্লো করে আশেপাশে কেউ না থাকে তবে এটি কী ব্যতিক্রম করে?

আমি 'সংক্ষিপ্ততম' বলব না যেহেতু আপনি এর মতো একটি ওয়ানলাইনার সংকলন করতে পছন্দ করেন না। যদিও এটি অনুমান করে এটি এটি একটি স্ট্যাক দ্রুত উপচে ফেলেছে throw
ডোমিনিক কে


119

আমার বর্তমান সেরা (x86 সমাবেশে) হ'ল:

push eax
jmp short $-1

যার ফলাফল 3 বাইট অবজেক্ট কোড ( 50 EB FD)। 16-বিট কোডের জন্য, এটিও সম্ভব:

call $

যার ফলস্বরূপ 3 বাইট ( E8 FD FF) হয়।


6
"সংকলন" (বা সমাবেশ) এর পরে বাইটগুলি গণনা কোড-গল্ফ নয়।
লুই ব্র্যান্ডি

37
প্রশ্নটি বলে "" [...] স্ট্যাকের ওভারফ্লো হওয়ার কারণ সবচেয়ে সংক্ষিপ্ততম কোডটি কী? " এটি উত্স কোড, ব্যাখ্যা করা কোড, মেশিন কোড, অবজেক্ট কোড বা পরিচালিত কোড নির্দিষ্ট করে না ...
Anders Sandvig

রেকর্ডের জন্য, শিনের গল্ফ সার্ভার আপনাকে বিচার করার জন্য অবজেক্ট কোড প্রেরণের অনুমতি দেয়, যদিও এটি আপনার সমস্ত ইএলএফ শিরোনামকেও গণনা করবে। হুম ....
ক্রিস জেস্টার-ইয়াং

এর কয়েকটি উদাহরণের জন্য দেখুন, golf.shinh.org/p.rb?FizzBuzz#x86 x (যদিও আমি সত্যই জানি না যে মানুষ কীভাবে 99-বাইট ইএলএফ বাইনারি তৈরি করতে পারে।) :
ক্রিস জাস্টার-ইয়ং

7
@ ল্যাব্র্যান্ডি: এমন পর্যাপ্ত লোক রয়েছে যারা সরাসরি অবজেক্ট কোড লিখতে পারেন। আমি এটি x86 এর জন্য করতে পারি না তবে একটি নির্দিষ্ট মাইক্রোপ্রসেসরের জন্য পারি। আমি এই জাতীয় কোড গণনা করব।
জোয়

113

PIC18

PIC18 উত্তর TK দ্বারা প্রদত্ত নিম্নলিখিত নির্দেশাবলী ফলাফল (বাইনারি):

overflow
   PUSH
   0000 0000 0000 0101
   CALL overflow
   1110 1100 0000 0000
   0000 0000 0000 0000

তবে, একা কল একটি স্ট্যাক ওভারফ্লো সম্পাদন করবে:

CALL $
1110 1100 0000 0000
0000 0000 0000 0000

আরও ছোট, দ্রুত PIC18

তবে আরসিএলএল (আপেক্ষিক কল) এখনও ছোট (বিশ্বব্যাপী মেমরি নয়, তাই অতিরিক্ত 2 বাইটের প্রয়োজন নেই):

RCALL $
1101 1000 0000 0000

সুতরাং পিআইসি 18-এ সর্বকনিষ্ঠ হ'ল একক নির্দেশনা, 16 বিট (দুটি বাইট)। এটিতে লুপ প্রতি 2 টি নির্দেশিকা চক্র লাগবে। প্রতি নির্দেশ চক্রের চারটি ঘড়িতে আপনি 8 টি ক্লক সাইকেল পেয়েছেন। PIC18 এর একটি 31 স্তরের স্ট্যাক রয়েছে, সুতরাং 32 তম লুপের পরে এটি 256 ঘড়ির চক্রের মধ্যে স্ট্যাকটি উপচে যাবে। 64MHz এ, আপনি স্ট্যাকটি 4 মাইক্রো সেকেন্ড এবং 2 বাইটে উপচে পড়বেন ।

PIC16F5x (এমনকি আরও ছোট এবং দ্রুত)

তবে, PIC16F5x সিরিজ 12 বিট নির্দেশাবলী ব্যবহার করে:

CALL $
1001 0000 0000

আবার লুপ প্রতি দুটি নির্দেশচক্র, নির্দেশ প্রতি 4 টি ঘড়ি তাই লুপ প্রতি 8 ঘড়ি চক্র।

তবে, PIC16F5x এর একটি দুটি স্তরের স্ট্যাক রয়েছে, তাই তৃতীয় লুপটিতে এটি 24 টি নির্দেশে উপচে পড়বে। 20MHz এ, এটি 1.2 মাইক্রো সেকেন্ড এবং 1.5 বাইটে উপচে পড়বে ।

ইন্টেল 4004

ইন্টেল 4004 একটি 8 বিট কল সাবরুটিন নির্দেশ আছে:

CALL $
0101 0000

কৌতূহলের জন্য যা একটি আসকি 'পি' এর সাথে মিলে যায়। একটি 3 স্তরের স্ট্যাকের সাথে মোট 32.4 মাইক্রো সেকেন্ড এবং একটি বাইটের জন্য 24 ঘড়ি চক্র লাগে । (আপনি যদি আপনার ৪০০৪ টি ওভারক্লাক না করেন - আসুন, আপনি জানেন যে আপনি চান))

যা বেফুঞ্জ উত্তরের মতো ছোট, তবে বর্তমান দোভাষীগুলিতে চলমান বেফঞ্জ কোডের চেয়ে অনেক দ্রুত।




55

প্রতিটি কাজের জন্য সঠিক সরঞ্জাম প্রয়োজন needs স্ট্যাক ওভারফ্লোগুলি উত্পাদন করতে অনুকূলিত হয়ে এসও ওভারফ্লো ভাষার সাথে মিলিত হন :

so

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

হুম, টিউরিং সম্পূর্ণ নয়। আপনি এখনও এটিকে কোনও ভাষা বলতে পারেন কিনা তা আমি জানি না ...
অ্যাডাম ডেভিস

42

TeX:

\def~{~.}~

ফলাফল স্বরূপ:

! টেক্স ক্ষমতাটি অতিক্রম করেছে, দুঃখিত [ইনপুট স্ট্যাকের আকার = 5000]।
~ -> ~
    ।
~ -> ~
    ।
~ -> ~
    ।
~ -> ~
    ।
~ -> ~
    ।
~ -> ~
    ।
...
<*> \ Def ~ {~।} ~

ক্ষীর:

\end\end

ফলাফল স্বরূপ:

! টেক্স ক্ষমতাটি অতিক্রম করেছে, দুঃখিত [ইনপুট স্ট্যাকের আকার = 5000]।
\ শেষ # 1 -> s সিএসনেম শেষ # 1
                      e endcsname \ @ শেকেন্ড {# 1} \ সম্প্রসারণ \ সমাপ্তি \ যদি @ ই ...
<*> \ শেষ \ সমাপ্তি

যেহেতু ~সক্রিয়, এটি এর জায়গায় ব্যবহার করা যেতে পারে \a। এবং আমি ল্যাটেক্স কোডটি দুর্ঘটনাক্রমে পুরোপুরি আবিষ্কার করেছি। :)
জোশ লি

35

জেড -80 এসেম্বলারের - মেমরির অবস্থান 0x0000 এ:

rst 00

এক বাইট - 0xC7 - বর্তমান পিসিকে স্ট্যাকের দিকে ঠেলাঠেলি এবং 0x0000 ঠিকানায় জাম্প করার অন্তহীন লুপ।


2
আমি মনে করি একটি ফাঁকা ইপ্রোম সমস্ত 0xffs হবে যা প্রথম 7 (= 0x0038 কল করুন) নির্দেশাবলী। এটি আপনার হার্ডওয়্যারকে একটি অ্যাসিলোস্কোপ দিয়ে ডিবাগ করার জন্য কার্যকর হবে। 0x0038 থেকে 0xff পড়ার সাথে ছেদ করে স্ট্যাকটি বারবার উপচে পড়ার সাথে ঠিকানা বাসটি 64 কে স্পেস দিয়ে চক্রে।
বিল ফরস্টার

29

ইংরেজীতে:

recursion = n. See recursion.

32
যে কোনও বুদ্ধিমান মানুষের মস্তিষ্ক এটির ব্যাখ্যাটিও টেল-কলকে অনুকূল করে তুলবে, এবং ফুঁকবে না। :
ক্রিস জেস্টার-ইয়াং

73
ক্রিস, বুদ্ধিমান মানব মস্তিষ্ক আজকাল বিরল হয়ে উঠছে।
জেসন জেড

20
বিরলতা ... আপনার মানে তারা বিদ্যমান?
অ্যাডাম লারম্যান

11
গুগল পুনরাবৃত্তি
কোডফিউশনমোবাইল

29

আরেকটি পিএইচপি উদাহরণ:

<?
require(__FILE__);

4
এমনকি প্রথম বন্ধনী (এমনকি প্রথম স্থানের স্থান সহ) এড়িয়ে গিয়ে আপনি ছোট হয়ে যেতে পারেন।
অ্যালেক্স

26

বেসিকের নিম্নলিখিতগুলি সম্পর্কে কীভাবে:

10 GOSUB 10

(আমার কাছে বেসিক দোভাষী নেই যে আমি ভয় করি তাই এটি অনুমান)।


3
বেসিক স্ট্যাকলেস ভাষা হওয়ায় বাস্তবে স্ট্যাকের ওভারফ্লো হয় না। এমনকি ভিবি (যার মধ্যে একটি স্ট্যাক রয়েছে) এটিতে স্রোত ফ্রেম তৈরি না করে কেবল ঝাঁপিয়ে পড়েছে এগুলি উপচে পড়বে না।
ড্যানিয়েল স্পিউয়াক

21
এটি একটি GOSUB, একটি নয় GOTO। যেহেতু এটি RETURNকোথা থেকে বলা হয়েছিল, তাই এটি অবশ্যই একটি স্ট্যাক ব্যবহার করছে?
টম

3
হাঁ আমি একমত. 80 এর দশকে আমার বেসিকের অনেকগুলি স্ট্যাক ওভারফ্লো ছিল ।
16:14

6
আমি এটিকে কেবল মজা করার জন্য ইয়াবাসিকে চালিয়েছি এবং এটি আমার কম্পিউটারটিকে প্রায় নিচে নিয়ে গেছে। Godশ্বরকে ধন্যবাদ ম্যালোক শেষ পর্যন্ত ব্যর্থ হয়েছিল, তবে আমি কালকের মতোই পেজিং করছি।
অ্যাডাম রোজেনফিল্ড

2
ওফস অ্যাডাম ... ইউনিতে এমন একটি সময় মনে করিয়ে দেয় যখন কেউ দুর্ঘটনাক্রমে একটি প্রোগ্রাম লিখেছিল যা পুনরাবৃত্তভাবে কাঁটাচামচ করে: একটি সম্পূর্ণ সিলিকন গ্রাফিক্স সার্ভার নিচে নিয়ে যায়।
stusmith

26

আমি কোডির উত্তর হ্যাপস পছন্দ করতাম, তাই সি ++ তে এখানে আমার অনুরূপ অবদান রয়েছে:

template <int i>
class Overflow {
    typedef typename Overflow<i + 1>::type type;
};

typedef Overflow<0>::type Kaboom;

কোনও উপায়ে কোড গল্ফ এন্ট্রি নয়, তবুও, একটি মেটা স্ট্যাকের ওভারফ্লোয়ের জন্য কিছু! :-P


21

18 টি চরিত্রের ওজনে এখানে আমার সি অবদান রয়েছে:

void o(){o();o();}

এটি টেল-কল অপটিমাইজ করা অনেক কঠিন! :-P


4
আমার জন্য সংকলন করে না: "` মূল "এর অপরিবর্তিত রেফারেন্স": পি
অ্যান্ড্রু জনসন

1
আমি বুঝতে পারি না: কেন ও () 2x কল করবেন?
দিনাহ

3
@ দিনাহ: আমার প্রতিযোগিতার অন্যতম বাধা হ'ল লেজ-কল অপটিমাইজেশন পুনরাবৃত্তি হিসাবে গণ্য হয় না; এটি কেবল একটি পুনরাবৃত্তি লুপ। যদি আপনি কেবল একবার o () লিখে থাকেন তবে এটি টেল-কলকে এই জাতীয় (কোনও উপযুক্ত সংকলক দ্বারা) অনুকূল করতে পারে: "o: jmp o"। ও এর 2 টি কল সহ, সংকলকটিকে এমন কিছু ব্যবহার করতে হবে: "ও: কল ও; জেএমপি ও"। এটি পুনরাবৃত্ত "কল" নির্দেশনা যা স্ট্যাককে উপচে ফেলেছে।
ক্রিস জেস্টার-ইয়ং

আপনি সঠিক - আমি সেই অংশের দিকে মনোযোগ দিই নি। সুস্পষ্ট করার জন্য ধন্যবাদ.
দিনাহ


17

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

আরও কয়েকটি চরিত্র ছাঁটাতে এবং আরও বেশি সফ্টওয়্যার শপ থেকে নিজেকে লাথি মেরে ফেলার জন্য আসুন:

eval(i='eval(i)');

15

খাঁজকাটা:

main()

$ গ্রোভি স্ট্যাক.groovy:

Caught: java.lang.StackOverflowError
    at stack.main(stack.groovy)
    at stack.run(stack.groovy:1)
 ...

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

আপনি কি নিশ্চিত যে এটি একটি লেজ কল? প্রোগ্রামটির শেষের দিকে এসে দোভাষী শেলটি ডাকে না?
হারুন

15

সংক্ষিপ্ত বিবরণ " GNU " বলতে কী বোঝায় দয়া করে।


4
অথবা আইন (আইনটি ইমাকস নয়), বা জুইই (জাভুই প্রথমদিকে আইন ছিল)। :
ক্রিস জেস্টার-ইয়ং

বা ওয়াইএএমএল, বা ওয়াইন, বা এক্সএনএ, বা বাকি যে কোনওটি এন.ইউইকিপিডিয়া
.

ড্রেই (ড্রেই সত্যই ইমাসস ইনকগোনিটো), ফিয়ার (ফিয়ারটি ইম্যাক্স পুনরায় উদ্ভাবিত) - ঠিক আছে তাই আমি কেবল সেগুলি তৈরি করেছি :-)
ফেরুঁচিও

14
Person JeffAtwood;
Person JoelSpolsky;
JeffAtwood.TalkTo(JoelSpolsky);

এখানে কোনও লেজ পুনরাবৃত্তির আশা করছি!


1
হেই, মজার কথোপকথনের সাথে সম্পর্কিত, "ইকো চেম্বার এফেক্ট" এর ধারণাটিও বেশ আকর্ষণীয়। ওভারফ্লো-প্ররোচিত যথেষ্ট স্ট্যাক নয়, তবে এখনও।
ক্রিস জেস্টার-ইয়াং

8
এটি কি নাল পয়েন্টার ব্যতিক্রম হবে না? দুঃখিত, আমি জানি এটি একটি রসিকতা।
জমেশ

12

সি - এটি সংক্ষিপ্ত নয়, তবে এটি পুনরাবৃত্তি মুক্ত। এটি পোর্টেবলও নয়: এটি সোলারিসের উপর ক্র্যাশ করে, তবে কিছু বরাদ্দ () বাস্তবায়ন এখানে ত্রুটি ফিরে আসতে পারে (বা কল করুন ম্যালোক ())। প্রিন্টফের কাছে কল () প্রয়োজনীয়।

#include <stdio.h>
#include <alloca.h>
#include <sys/resource.h>
int main(int argc, char *argv[]) {
    struct rlimit rl = {0};
    getrlimit(RLIMIT_STACK, &rl);
    (void) alloca(rl.rlim_cur);
    printf("Goodbye, world\n");
    return 0;
}

স্ট্যাকটিকে খুব ছোট সেট করতে আপনি কেবল "ulimit -s16" করতে পারেন। প্রায় 16 এর চেয়ে ছোট এবং প্রোগ্রামটি চলতে পারে না (আপাতদৃষ্টিতে অপর্যাপ্ত আরোগুলি!)।
অ্যান্ড্রু জনসন

11

12 টি চর মধ্যে পার্ল:

$_=sub{&$_};&$_

10 টি অক্ষরে বাশ (কার্যক্ষেত্রের স্থানটি গুরুত্বপূর্ণ):

i(){ i;};i

11

এক বার্গারে 4 টিরও বেশি প্যাটি লাগিয়ে দেখুন। স্ট্যাক ওভারফ্লো


1
নিউজিল্যান্ডে এখানে আমাদের বার্গার উইসকনসিন রয়েছে, যেখানে তারা বড় তবে পাতলা প্যাটি ব্যবহার করে। আমি নিশ্চিত আপনি যদি চান তাদের মধ্যে 4 টিরও বেশি স্ট্যাক করতে পারবেন; যদিও এটি একটি খুব ব্যয়বহুল বার্গার হবে!
ক্রিস জেস্টার-ইয়ং


মিম ... ইন-এন-আউট en.wikipedia.org/wiki/In-n-out#Menu
cbednarski

11

পাইথন :

so=lambda:so();so()

বিকল্পভাবে:

def so():so()
so()

এবং পাইথন যদি অপ্টিমাইজড লেজ কল ...:

o=lambda:map(o,o());o()

আপনার জন্য ভাগ্যবান, পাইথন টেল-কল অপ্টিমাইজেশন করে না; অন্যথায়, এ পর্যন্ত অন্য দুটি উত্তরের মতো এটি অযোগ্য ঘোষণা করা হবে। :
ক্রিস জেস্টার-ইয়াং

10

আমি এই পোস্টের পরে "সেরা উত্তর" নির্বাচন করছি। তবে প্রথমে, আমি কিছু খুব মূল অবদান স্বীকার করতে চাই:

  1. আকু এর। প্রত্যেকে স্ট্যাক ওভারফ্লো হওয়ার কারণের একটি নতুন এবং মূল উপায়টি আবিষ্কার করে। F (x) doing f (f (x)) করার ধারণাটি হ'ল আমি আমার পরবর্তী এন্টিটিতে নীচে নীচে অনুসন্ধান করব। :-)
  2. কোডির একটি যা নিমার কমপাইলারকে একটি স্ট্যাক ওভারফ্লো দিয়েছে।
  3. এবং (কিছুটা কৌতুকপূর্ণভাবে), স্ট্যাক ওভারফ্লো ব্যতিক্রম ছোঁড়া সম্পর্কে গেটকিলারের একটি one :-P

আমি উপরেরটিকে যতটা পছন্দ করি, কোড গল্ফ করা সম্পর্কে চ্যালেঞ্জটি, এবং উত্তরদাতাদের কাছে ন্যায়সঙ্গত হওয়ার জন্য, আমাকে সবচেয়ে সংক্ষিপ্ত কোডটির "সেরা উত্তর" দিতে হবে, যা বেফঞ্জ এন্ট্রি; আমি বিশ্বাস করি না যে কেউ এটি পরাতে সক্ষম হবে (যদিও কনরাড অবশ্যই চেষ্টা করেছেন), তাই প্যাট্রিককে অভিনন্দন জানিয়েছেন!

বিপুল সংখ্যক স্ট্যাক-ওভারফ্লো-বাই-রিকার্সন সলিউশন দেখে আমি অবাক হয়েছি যে কেউই (বর্তমান লেখার মতো) ওয়াই কম্বিনেটর নিয়ে আসেনি ( প্রাইমারের জন্য ডিক গ্যাব্রিয়েলের রচনা, কেন হোয়াইট অফ ওয়াই ) দেখুন না। আমার কাছে একটি পুনরাবৃত্ত সমাধান রয়েছে যা ওয়াই সংযুক্তকারী, পাশাপাশি আকুর f (f (x)) পদ্ধতির ব্যবহার করে। :-)

((Y (lambda (f) (lambda (x) (f (f x))))) #f)

8

এখানে স্কিম থেকে অন্য আকর্ষণীয় একটি:

((ল্যাম্বদা (এক্স) (এক্সএক্স)) (ল্যাম্বদা (এক্স) (এক্সএক্স)))

খুব সুন্দর, এবং এটির জন্য খুব ভাল প্রতিসাম্য রয়েছে। এছাড়াও, (ল্যাম্বদা (এক্স) (এক্সএক্স)) ফর্মুলেশন ব্যবহার করতে: ((ওয়াই (ল্যাম্বদা (এক্স) (এক্সএক্স)))) # এফও খুব মজাদার!
ক্রিস জেস্টার-ইয়ং

ওহ, খুব সুন্দর। এটি রুবিতেও কাজ করে যদিও স্কিমের মতো সুন্দর নয়: ল্যাম্বদা x | x | x.call x}। কল ল্যাম্বদা {| x | | x.call x}
ওয়েইন কনরাড

7

জাভা

জাভা সমাধানটির সামান্য সংক্ষিপ্ত সংস্করণ।

class X{public static void main(String[]a){main(a);}}

5
বা (অক্ষরগুলির একই সংখ্যার): পাবলিক স্ট্যাটিক অকার্যকর মূল (স্ট্রিং ... ক) {প্রধান ();
Michael

বা টিডিডি ছেলেদের জন্য (একই সংখ্যার অক্ষর): সার্বজনীন ক্লাস ${@org.junit.Test সর্বজনীন শূন্যতা $ () {$ ();}}
মহল্লার

এখনও স্বল্পতম নয় (আমার উত্তর দেখুন)
ড্রইমন


5

3 বাইট:

label:
  pusha
  jmp label

হালনাগাদ

মতে (?) (? বয়সী) ইন্টেল ডকুমেন্টেশন , এটি 3 বাইট:

label:
  call label


এটি 32-বিট মোডে 3 বাইট। উত্তম উত্তর, বিবেচনা করে এটি আমার উত্তরের চেয়ে অনেক দ্রুত গতি পূরণ করবে!
ক্রিস জেস্টার-ইয়ং

Penguin.cz/~literakl/intel/j.html#JMP অনুসারে, jmp 3 বাইট 8, 16 বা 32 বিটের আপেক্ষিক গন্তব্য ঠিকানা সহ tes পুশাও 1 বাইট, যা মোট 4 করে তোলে
Anders Sandvig

এখানে তিন ধরণের জ্যাম্প, সংক্ষিপ্ত, কাছাকাছি এবং খুব দূরে রয়েছে। শর্ট জ্যাম্প (0xEB অপকোড ব্যবহার করে) দুটি বাইট। পরবর্তী নির্দেশনা থেকে গন্তব্য অবশ্যই -128 এবং 127 বাইটের মধ্যে থাকা উচিত। :-)
ক্রিস জেস্টার-ইয়াং

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