একটি সংকলক বোমা তৈরি করুন


372

ভূমিকা

আপনি সম্ভবত জিপ বোমা , এক্সএমএল বোমা ইত্যাদির সাথে পরিচিত হন । এখানে চ্যালেঞ্জ হ'ল একইভাবে একটি সংকলককে অপব্যবহার করা।

চ্যালেঞ্জ

এমন কিছু উত্স কোড লিখুন যা 512 বাইট বা তারও কম দখল করে এবং কোন ফাইলটি সংঘবদ্ধ করে যা সবচেয়ে বেশি সম্ভাব্য স্থান দখল করে। বৃহত্তম আউটপুট ফাইল জয়!

বিধি

ঠিক আছে, সুতরাং কয়েকটি গুরুত্বপূর্ণ ব্যাখ্যা, সংজ্ঞা এবং বিধিনিষেধ রয়েছে;

  • সংকলনের আউটপুট অবশ্যই একটি ইএলএফ ফাইল, উইন্ডোজ পোর্টেবল এক্সিকিউটেবল (.exe), বা জেভিএম বা। নেট এর সিএলআর (ভার্চুয়াল বাইটকোডের অন্যান্য ধরণের জন্য জিজ্ঞাসা করা হলে ঠিক আছে) হতে পারে to আপডেট: পাইথনের .pyc / .pyo আউটপুটও গণনা করে
  • যদি আপনার পছন্দের ভাষাটি সেই ফর্ম্যাটগুলির মধ্যে একটির মধ্যে সরাসরি সংকলন করা না যায় তবে সংকলনের পরে প্রতিস্থাপনেরও অনুমতি দেওয়া হয় ( আপডেট: আপনি একাধিকবার ট্রান্সপ্লাই করতে পারেন, আপনি যতক্ষণ না একই ভাষা একাধিকবার ব্যবহার করেন না )।
  • আপনার উত্স কোডে একাধিক ফাইল এবং এমনকী রিসোর্স ফাইল রয়েছে, তবে এই সমস্ত ফাইলের সংক্ষিপ্ত আকারটি অবশ্যই 512 বাইটের বেশি হবে না।
  • আপনি আপনার উত্স ফাইল (গুলি) এবং আপনার পছন্দ-পছন্দের মানক লাইব্রেরি ব্যতীত অন্য কোনও ইনপুট ব্যবহার করতে পারবেন না। স্ট্যাটিক লিঙ্কিং স্ট্যান্ডার্ড লাইব্রেরিগুলি যখন সমর্থন করা হয় তখন তা ঠিক থাকে। বিশেষত, কোনও তৃতীয় পক্ষের লাইব্রেরি বা ওএস লাইব্রেরি নেই।
  • কোনও কম্যান্ড বা কমান্ডের সিরিজ ব্যবহার করে আপনার সংকলনটি আহ্বান করা অবশ্যই সম্ভব। সংকলনের সময় আপনার যদি নির্দিষ্ট পতাকাগুলির প্রয়োজন হয় তবে আপনার বাইট সীমাতে এই গণনাগুলি (উদাহরণস্বরূপ যদি আপনার সংকলন লাইনটি হয় gcc bomb.c -o bomb -O3 -lmতবে -O3 -lmঅংশটি (7 বাইট) গণনা করা হবে (নোটের প্রাথমিক লিডিং স্পেস গণনা করা হয়নি)।
  • প্রিপ্রসেসরগুলি কেবল তখনই অনুমতিপ্রাপ্ত হয় যদি তারা আপনার ভাষার জন্য একটি মানক সংকলন বিকল্প হয়।
  • পরিবেশটি আপনার উপর নির্ভর করে তবে এই যাচাইযোগ্যযোগ্য করার স্বার্থে দয়া করে সাম্প্রতিক (অর্থাত্ উপলব্ধ) সংকলক সংস্করণ এবং অপারেটিং সিস্টেমগুলিতে আটকে থাকুন (এবং আপনি অবশ্যই ব্যবহার করছেন যা নির্দিষ্ট করুন) specify
  • এটি ত্রুটি ছাড়াই সংকলন করতে হবে (সতর্কতা ঠিক আছে), এবং সংকলক ক্র্যাশ করা কোনও কিছুর জন্য গণনা করে না।
  • আপনার প্রোগ্রামটি আসলে যা করে তা অপ্রাসঙ্গিক, যদিও এটি দূষিত কিছু হতে পারে না। এটি শুরু করতে সক্ষম হতে হবে না।

উদাহরণ 1

সি প্রোগ্রাম

main(){return 1;}

Apple LLVM version 7.0.2 (clang-700.1.81)ওএস এক্স 10.11 (64-বিট) এ সংকলিত :

clang bomb.c -o bomb -pg

9228 বাইটের একটি ফাইল তৈরি করে। মোট উত্সের আকার 17 + 3 (এর জন্য -pg) = 20 বাইট, যা সহজেই আকারের সীমাতে থাকে।

উদাহরণ 2

ব্রেনফাক প্রোগ্রাম:

++++++[->++++++++++++<]>.----[--<+++>]<-.+++++++..+++.[--->+<]>-----.--
-[-<+++>]<.---[--->++++<]>-.+++.------.--------.-[---<+>]<.[--->+<]>-.

অবিব দিয়ে সি দিয়ে এর সাথে ট্রান্সপ্লাইল করা:

./awib < bomb.bf > bomb.c

তারপরে Apple LLVM version 7.0.2 (clang-700.1.81)ওএস এক্স 10.11 (64-বিট) এ সংকলিত :

clang bomb.c

8464 বাইটের একটি ফাইল তৈরি করে। এখানে মোট ইনপুটটি 143 বাইট (যেহেতু @lang_cএটির জন্য ডিফল্ট তাই উত্স ফাইলে যোগ করার দরকার নেই, এবং কোনও আদেশে কোনও বিশেষ পতাকা নেই)।

এছাড়াও মনে রাখবেন যে এই ক্ষেত্রে অস্থায়ী বোমা.কম ফাইলটি ৮০২ বাইট, তবে এটি উত্সের আকার বা আউটপুট আকারের পক্ষে নয়।

চূড়ান্ত নোট

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


যদি ট্রান্সপ্লার ব্যবহার করে থাকেন তবে আউটপুট উত্স কোডটি কি 512 বাইটের পাশাপাশি ইনপুট উত্স কোডেরও অধীনে থাকা দরকার?
ট্রিকোপলাক্স

3
বারবার প্রতিস্থাপন অনুমোদিত?
orlp

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

3
@ থ্রিচোপ্লেক্স আমি সে সম্পর্কে অবগত ছিলাম না, তবে কিছু পাঠ থেকে এটি হ্যাঁর মতো দেখাচ্ছে; পাইথন বাইকোডে সংকলন করা একেবারে গণনা করা। পাইথনের জন্য আউটপুট আকারটি আপনার সমস্ত পাইক / পাইও ফাইলের মোট আকার হবে size আমি এই মন্তব্য-ভিত্তিক আপডেটগুলি দিয়ে শীঘ্রই প্রশ্নটি আপডেট করব।
ডেভ

2
@ মার্টিনরোসেনাউ - ডাব্লুগ্রোলাও ইতিমধ্যে একই জাতীয় প্রশ্ন জিজ্ঞাসা করেছেন; চ্যালেঞ্জগুলির কোডিংয়ের মান এটি হ'ল চ্যালেঞ্জ শুরু হওয়ার পরে আপনি ইতিমধ্যে বিদ্যমান যে কোনও কিছু ব্যবহার করতে পারেন ।
ডেভ

উত্তর:


441

সি, (14 + 15) = 29 বাইট উত্স, 17,179,875,837 (16 জিবি) বাইট নির্বাহযোগ্য

6 বাইট বন্ধের জন্য @ ভাইরাপ্টরকে ধন্যবাদ।

2 বাইট অফ এবং এক্সিকিউটেবল আকার x4 এর জন্য @ hvd কে ধন্যবাদ।

এটি mainএকটি বৃহত অ্যারে হিসাবে ফাংশনটি সংজ্ঞায়িত করে এবং এর প্রথম উপাদানটি আরম্ভ করে। এর ফলে জিসিসির ফলে ফলাফল নির্বাহযোগ্যর মধ্যে পুরো অ্যারে সঞ্চয় করে।

এই অ্যারেটি 2 গিগাবাইটের চেয়ে বড় হওয়ায় -mcmodel=mediumআমাদের জিসিসিতে পতাকা সরবরাহ করা দরকার । নিয়ম অনুসারে অতিরিক্ত 15 বাইট স্কোরের অন্তর্ভুক্ত।

main[-1u]={1};

রান করার সময় এই কোডটি থেকে ভাল কিছু করার আশা করবেন না।

এর সাথে সংকলন:

gcc -mcmodel=medium cbomb.c -o cbomb

@ এইচডিডি এর পরামর্শ পরীক্ষা করতে - এবং এটি পরিচালনা করার জন্য পর্যাপ্ত রস সহ একটি মেশিন খুঁজে পেতে আমার কিছুটা সময় লেগেছে। অবশেষে আমি একটি পুরানো অ-প্রযোজনা রেডহ্যাট 5.6 ভিএম পেয়েছিলাম যার সাথে 10 জিবি র‌্যাম, 12 জিবি অদলবদল, এবং / টিএমপি একটি বিশাল স্থানীয় বিভাগে সেট করা আছে। জিসিসি সংস্করণ 4.1.2। মোট সংকলন সময় প্রায় 27 মিনিট।

সিপিইউ এবং র‌্যাম লোডের কারণে, আমি কোনও দূরবর্তী উত্পাদন-সম্পর্কিত মেশিনে এই সংকলনটি করার বিরুদ্ধে সুপারিশ করছি



13
আমি এখানে আমার সমাধানের বিরুদ্ধে খেলছি, কিন্তু ... আপনার দরকার নেই a। আপনি কেবল ব্যবহার করতে পারেনmain[1<<30]={1};
ভাইরাপটর

38
আহারে. এটা মন্দ। এই কোডটি সংকলনের চেষ্টা করে কয়েক মিনিটের জন্য এক্স ফ্রিজ। জিসিসি প্রক্রিয়াটি শেষ পর্যন্ত জীবনে আসার আগেই সম্ভবত আমি আবার কম্পিউটারে প্রবেশ করতে এবং হত্যা করতে আমি অন্য একটি কম্পিউটারের সন্ধান করতে শুরু করছিলাম। BTW। আপনি যদি এর চেয়ে বড় মান চান 1<<30তবে 7<<28একটি বিকল্প হতে পারে।
ক্যাস্পারড

33
> 4GB? এটি দ্রুত বৃদ্ধি পেয়েছে
ওয়েন ওয়ার্নার

18
ক্ষেত্রে অন্য কেউ যদি ভাবছেন যে এটি কেন এই সংকলন করে: stackoverflow.com/questions/34764796/…
টিসি

206

সি #, কম্পাইল করতে প্রায় 1 মিনিট, 28 এমবি আউটপুট বাইনারি:

class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}

আরও Y এর যোগ করা দ্রুত আকারে আকার বৃদ্ধি করবে।

@ ওডমোনটোসের অনুরোধ অনুসারে ফারাপের একটি ব্যাখ্যা:

এই উত্তরটি উত্তরাধিকারকে অপব্যবহার করছে এবং পুনরাবৃত্তি তৈরি করতে পরামিতিগুলি টাইপ করে। কী হচ্ছে তা বোঝার জন্য প্রথমে সমস্যাটি সহজ করা সহজ। বিবেচনা করুন class X<A> { class Y : X<Y> { Y y; } }, যা জেনেরিক শ্রেণি উত্পন্ন করে X<A>, যার অভ্যন্তর শ্রেণি রয়েছে YX<A>.Yউত্তরাধিকারসূত্রে X<Y>, অতএব X<A>.Yএকটি অভ্যন্তর শ্রেণিও রয়েছে Y, যা তখন X<A>.Y.Y। এর পরে এটিও একটি অভ্যন্তর শ্রেণি রয়েছে Yএবং সেই অভ্যন্তর শ্রেণীর অভ্যন্তরীণ শ্রেণি Yরয়েছে YThis এর অর্থ হল আপনি স্কোপ রেজোলিউশন ( .) বিজ্ঞাপন ইনফিনিটাম ব্যবহার করতে পারেন এবং প্রতিবার আপনি এটি ব্যবহার করার সময় সংকলককে অন্য স্তরের উত্তরাধিকার এবং প্যারামিটারাইজেশন টাইপ করতে হবে ।

অতিরিক্ত ধরণের পরামিতি যুক্ত করে, প্রতিটি পর্যায়ে সংকলককে যে কাজটি করতে হবে তা আরও বাড়ানো হয়েছে।

নিম্নলিখিত ক্ষেত্রে বিবেচনা করুন:
ইন class X<A> { class Y : X<Y> { Y y;} }টাইপ PARAM Aএকটি প্রকার হয়েছে X<A>.Y
ইন class X<A> { class Y : X<Y> { Y.Y y;} }টাইপ PARAM Aএকটি প্রকার হয়েছে X<X<A>.Y>.Y
ইন class X<A> { class Y : X<Y> { Y.Y.Y y;} }টাইপ PARAM Aএকটি প্রকার হয়েছে X<X<X<A>.Y>.Y>.Y
ইন class X<A,B> { class Y : X<Y,Y> { Y y;} }টাইপ PARAM Aহয় X<A,B>.Yএবং Bহয় X<A,B>.Y
ইন class X<A> { class Y : X<Y> { Y.Y y;} }টাইপ PARAM Aহয় X<X<A,B>.Y, X<A,B>.Y>.Yএবং Bহয় X<X<A,B>.Y, X<A,B>.Y>.Y
ইন class X<A> { class Y : X<Y> { Y.Y.Y y;} }টাইপ PARAM Aহয় X<X<X<A,B>.Y, X<A,B>.Y>.Y, X<X<A,B>.Y, X<A,B>.Y>.Y>.Yএবং Bহয় X<X<X<A,B>.Y, X<A,B>.Y>.Y, X<X<A,B>.Y, X<A,B>.Y>.Y>.Y

এই প্যাটার্ন অনুসরণ করে শুধু কল্পনা করতে পারেন 1 কাজ কম্পাইলার অনুমান করতে কি করতে হবে Aকরতে Eহয় Y.Y.Y.Y.Y.Y.Y.Y.Yসংজ্ঞা class X<A,B,C,D,E>{class Y:X<Y,Y,Y,Y,Y>{Y.Y.Y.Y.Y.Y.Y.Y.Y y;}}

1 আপনি এটি বুঝতে পারেন, তবে আপনার প্রচুর ধৈর্য দরকার এবং ইন্টেলিজেন্স আপনাকে এখানে সাহায্য করবে না।


14
এটি আমি যে ধরণের পাগলামির প্রত্যাশা করছিলাম তার মতোই! দেখে মনে হচ্ছে আমি
ডেভ

31
আপনি কি এরকম কুখ্যাত প্রভাবের ব্যাখ্যা সরবরাহ করতে পারেন?
ওডমোনটাইজ

16
একটি বড় অ্যারে আরম্ভ করার চেয়ে আরও কিছু করার জন্য +1।
স্টিগ হেমার

6
ট্রাই রোজলিন এবং মাত্র 3 Yএস ব্যবহার করে এখানে একটি উদাহরণ ।
কোবি

10
আমি এই প্রশ্নটি দেখেছি এবং তাত্ক্ষণিকভাবে আপনাকে ভেবেছিলাম। নিস!
এরিক লিপার্ট

154

পাইথন 3, 13 বাইট উত্স, 9,057,900,463 বাইট (8.5GiB) .pyc-file

(1<<19**8,)*2

সম্পাদনা : উপরের সংস্করণে কোডটি পরিবর্তন করে আমি বুঝতে পেরেছি 4GiB এর বাইরে আউটপুট আকারের কোনও ব্যাপার নেই, এবং এইটির কোডটি এতটা ছোট হয়; পূর্ববর্তী কোড - এবং আরও গুরুত্বপূর্ণভাবে ব্যাখ্যা - নীচে পাওয়া যাবে।


পাইথন 3, 16 বাইট উত্স,> 32 টিবি .পিসি-ফাইল (আপনার যদি পর্যাপ্ত মেমরি, ডিস্কের স্থান এবং ধৈর্য থাকে)

(1<<19**8,)*4**7

ব্যাখ্যা: পাইথন 3 ধ্রুবক ভাঁজ করে এবং আপনি ক্ষয়ক্ষতি সহ বড় সংখ্যা পান get .Pyc ফাইলগুলির দ্বারা ব্যবহৃত ফর্ম্যাটটি 4 বাইট ব্যবহার করে পূর্ণসংখ্যার উপস্থাপনের দৈর্ঘ্য সঞ্চয় করে, এবং বাস্তবে সীমাটি আরও বেশি বলে মনে হয় 2**31, সুতরাং একটি বড় সংখ্যা উত্পন্ন করতে কেবলমাত্র এক্সপোশনেশন ব্যবহার করে, সীমাটি 2GB উত্পন্ন করছে বলে মনে হয়। একটি 8 বাইট উত্স থেকে পাইক ফাইল। ( 19**8কিছুটা লজ্জাজনক 8*2**31, তাই 1<<19**8কেবল 2 গিগাবাইটের নীচে একটি বাইনারি উপস্থাপনা রয়েছে; আটটি দ্বারা গুণ কারণ আমরা বাইট চাই, বিট চাই না)

তবে, টিউপসগুলিও অপরিবর্তনীয় এবং একটি টিউপলকে গুন করাও ধ্রুবকভাবে ভাঁজযুক্ত, তাই আমরা 2 জিবি ব্লবকে আমরা যতবার চাই, কমপক্ষে 2**31, সম্ভবত নকল করতে পারি । 4**732TB পেতে নির্বাচিত হয়েছে মাত্র কারণ এটি প্রথম এক্সপোনেন্ট আমি যে পূর্ববর্তী মাপ বর্তমানে 16 টেরাবাইট উত্তর বীট খুঁজে পাইনি ছিল।

দুর্ভাগ্যক্রমে, আমার নিজের কম্পিউটারে থাকা স্মৃতিটি দিয়ে আমি এটি কেবল 2 এর গুণক পর্যন্ত পরীক্ষা করতে পারতাম। (1<<19**8,)*2, যা একটি 8.5 গিগাবাইট ফাইল তৈরি করেছে, যা আমি আশা করি যে উত্তরটি বাস্তবসম্মত ie (উদাহরণস্বরূপ, ফাইলের আকার 2 ** 32 = 4 জিবিতে সীমাবদ্ধ নয়)।

এছাড়াও, আমি আশা করি না কেন পরীক্ষার সময় আমি যে ফাইলের আকার পেয়েছিলাম তা 4GB-hশ এর পরিবর্তে 8.5 জিবি ছিল এবং আমি ফাইলটি এত বড় যে এই মুহুর্তে আমার চারপাশে পোকার মতো মনে হয় না।


2
+1, তবে কেন করবেন না (1<<19**8,)*2? 4 জিবি যথেষ্ট
আকাংকা

2
@ খ্রিস্টিয়ান ইরওয়ান: হ্যাঁ, আমি এই নিয়মটি ভুলে গিয়েছিলাম, কয়েক মিনিট আগে এটি উপলব্ধি হয়েছিল এবং আমার কী ধরনের সম্পাদনা করা উচিত তা এখনও বুঝতে পারিনি। :-)
আলেকসি তোড়হামো

1
খুশী হলাম। যেহেতু এটি কেবল ১৩ বাইট, তাই আমাদের কাছে অবশেষে প্রথম পোস্টের উত্তরের জন্য চ্যালেঞ্জার রয়েছে! আমি কেবল 1<<18আমার মেশিনে (১.৫ গিগাবাইট) নিশ্চিত করতে পেরেছিলাম তবে আমি এটি পরে লিনাক্সে পরীক্ষা করব, যেখানে আমি আশা করি এটি পূর্ণ 8 গিগাবাইটের সাথে কাজ করবে (32TB সংস্করণ চেষ্টা করবে না!)
ডেভ

1
@ ডেভ: সঠিক আকারটি সংস্করণটির উপর নির্ভর করতে পারে (1.5 জিবি অদ্ভুত শোনায় যাই হোক না কেন); আমি পাইথন ৩.৩.৫ ব্যবহার করছিলাম এবং python -m py_compile asd.py। পিসি-ফাইল উত্পন্ন করতে ব্যবহার করছিলাম।
আলেক্সি তোড়হামো

3
আইআইআরসি, পাইথনটি তার পূর্ণসংখ্যার উপস্থাপনায় 32-বিট শব্দ প্রতি 30 বিট ব্যবহার করে
বাদ পড়েছে এবং

130

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

"টেম্পলেট হাস্কেল" হাস্কেল কোডটি হ্যাস্কেল ব্যবহার করে সংকলন সময়ে তৈরি করার অনুমতি দেয় এবং তাই এটি একটি টুরিং সম্পূর্ণ প্রসেসর।

একটি স্বেচ্ছামূলক সংখ্যাসূচক প্রকাশ দ্বারা প্যারামিটারাইজড এখানে আমার প্রচেষ্টা FOO:

import Language.Haskell.TH;main=print $(ListE .replicate FOO<$>[|0|])

ম্যাজিকটি "স্প্লাইস" এর অভ্যন্তরের কোড $(...)। সংকলনের সময় এটি কার্যকর করা হবে, একটি হাস্কেল এএসটি তৈরি করার জন্য, যা স্প্লাইসের জায়গায় প্রোগ্রামের এএসটিতে গ্রাফ করা হয়েছে।

এই ক্ষেত্রে, আমরা আক্ষরিক প্রতিনিধিত্বমূলক একটি সহজ এবং AST করা 0, আমরা এই প্রতিলিপি FOOএকটি তালিকা তৈরি করুন গুণ, তারপর আমরা ব্যবহার ListEথেকে Language.Haskell.THমডিউল এক বড় এবং AST মধ্যে ASTs এই তালিকা ঘুরে, আক্ষরিক প্রতিনিধিত্বমূলক [0, 0, 0, 0, 0, ...]

ফলাফল প্রোগ্রাম পুনরাবৃত্তি main = print [0, 0, 0, ...]সঙ্গে সমান ।FOO0

ইএলএফ সংকলন করতে:

$ ghc -XTemplateHaskell big.hs
[1 of 1] Compiling Main             ( big.hs, big.o )
Linking big ...
$ file big
big: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /nix/store/mibabdfiaznqaxqiy4bqhj3m9gaj45km-glibc-2.21/lib/ld-linux.so.2, for GNU/Linux 2.6.32, not stripped

এর ওজন 83 বাইটে (হাস্কেল কোডের জন্য 66 এবং তর্কটির জন্য 17 -XTemplateHaskell), এর দৈর্ঘ্য FOO

আমরা সংকলক যুক্তি এড়াতে এবং কেবল সংকলন করতে পারি ghc, তবে আমাদের {-# LANGUAGE TemplateHaskell#-}শুরুতে রাখতে হবে, যা কোডটি 97 বাইট পর্যন্ত বাধা দেয়।

এখানে কয়েকটি উদাহরণের মত প্রকাশ FOOএবং ফলাফল বাইনারি আকার:

FOO         FOO size    Total size    Binary size
-------------------------------------------------
(2^10)      6B          89B           1.1MB
(2^15)      6B          89B           3.6MB
(2^17)      6B          89B           12MB
(2^18)      6B          89B           23MB
(2^19)      6B          89B           44MB

আমি র‌্যামের সাথে সংকলন চালিয়ে গেলাম (2^20)

আমরা ব্যবহার করে একটি অসীম তালিকা তৈরি করতে পারেন, repeatপরিবর্তে replicate FOO, কিন্তু যে স্থগিত থেকে কম্পাইলার বাধা দেয়;)


46
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম। এটি একটি উজ্জ্বল উত্তর, বিশেষত এই সাইটের জন্য নতুন ব্যবহারকারীর জন্য। আপনার যদি কোনও সহায়তা প্রয়োজন (যা আমি সন্দেহ করি) তবে নির্দ্বিধায় জিজ্ঞাসা করুন।
wizzwizz4

3
@ উইজউইজ 4: হ্যাঁ, এটি একটি উজ্জ্বল উত্তর। এটি মূলত আমার মতোই, হাস্কেল ব্যতীত এটি রূপক কাজটি করার জন্য একটি বিশেষ সংকলক নির্দেশিকা প্রয়োজন। ;)
ম্যাসন হুইলারের

2
আমি যখন জিএইচসি 7.8.3 দিয়ে সংকলন করি তখন আমি "সুযোগের মধ্যে নেই: '<$>'" (আমি কোডটি সেট করেছি [...].replicate (2^10)<$>[|0|])) পেয়ে যাই । আমি হাস্কেলের সাথে অভিজ্ঞ নই; এই সংকলনটি কীভাবে করা যায় তার কোনও ইঙ্গিত?
ডেভ

38
খুব খারাপ টেম্পলেট হ্যাশেল অসীম নির্বাহযোগ্যকে প্রবাহিত করতে যথেষ্ট আলস্য নয়।
পাইরুলেজ

1
হাই @ ডেভ <$>ফাংশনটি হাস্কেল-তে ব্যাপকভাবে ব্যবহৃত হয়, তবে কেবলমাত্র জিএইচসি 7.10-এ কেবলমাত্র "উপস্থাপিকা" (ডিফল্টরূপে উপলব্ধ ফাংশনগুলির সেট) এ স্থানান্তরিত হয়েছিল। পূর্ববর্তী সংস্করণগুলির জন্য আপনাকে import Control.Applicative;এক্সাইজিং importস্টেটমেন্টের পরে যুক্ত করতে হবে । আমি কেবল জিএইচসি 7.8.4 দিয়ে চেষ্টা করেছি এবং এটি কার্যকর হয়।
ওয়ারবো

80

সি ++, 250 + 26 = 276 বাইট

template<int A,int B>struct a{static const int n;};
template<int A,int B>const int a<A,B>::n=a<A-1,a<A,B-1>::n>::n;
template<int A>struct a<A,0>{static const int n=a<A-1,1>::n;};
template<int B>struct a<0,B>{static const int n=B+1;};
int h=a<4,2>::n;

এটি টেমপ্লেটগুলিতে প্রয়োগ করা একারম্যান ফাংশন । আমি h=a<4,2>::n;আমার লিটল (6 জিবি) মেশিনে সংকলন করতে সক্ষম নই , তবে আমি h=a<3,14>26 এম আউটপুট ফাইলটি পরিচালনা করেছি । আপনার প্ল্যাটফর্মের সীমাটি আঘাত করতে আপনি ধ্রুবকগুলি টিউন করতে পারেন - গাইডেন্সের জন্য লিঙ্কযুক্ত উইকিপিডিয়া নিবন্ধটি দেখুন।

জিসিসিতে -gপতাকা লাগাতে হবে (কারণ এটি সমস্ত ডিবাগ প্রতীক যা আসলে কোনও স্থানই গ্রাস করে), এবং ডিফল্টের চেয়ে বড় টেম্পলেট গভীরতা। আমার সংকলন লাইন শেষ হিসাবে

g++ -ftemplate-depth=999999 -g -c -o 69189.o 69189.cpp

প্ল্যাটফর্ম তথ্য

g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Linux 3.13.0-46-generic #79-Ubuntu SMP x86_64 GNU/Linux

আমি এটি সত্যিই পছন্দ করি তবে আমি ইওএলএফ / .এক্সএই / ইত্যাদি বলেছি বলে আমি কোনও আউটপুট গ্রহণ করতে পারি তা নিশ্চিত নই। (এবং এটি সংকলন সম্পূর্ণরূপে এটি সর্বোত্তম করে তোলে!)। এখনও, +1 (এবং নিশ্চিত)
ডেভ

4
আপডেট: বেন ভোইগেট তার উত্তরের বিষয়ে উল্লেখ করে, লিনাক্সের জিসিসি EoF ফাইলগুলি .o আউটপুট হিসাবে উত্পন্ন করে , এবং আমি এর সাথে <3,14> বৈকল্পিকটি নিশ্চিত করতে সক্ষম হয়েছি, তাই এটি বৈধ।
ডেভ

17
আমি আশা করছিলাম যে সি ++ টেম্পলেটগুলি থেকে উদ্ভট কিছু আসবে something আমি একারম্যান ফাংশনটি আশা করছিলাম না
চিহ্নিত করুন

ফিবোনাচি আপনাকে আরও একটি ছোট কোড এবং আরও ভাল আউটপুট আকার নিয়ন্ত্রণ দেবে না?
নেস

1
তবে আমরা আরও বড় কোড চাই! ফিবোনাচি খাঁটি রৈখিক কোডের মতো প্রায় একই আকার দেয় (তবে লিনিয়ারের তুলনায় আরও দীর্ঘ সময় সংকলন করুন)। আপনি অবশ্যই A+Bপ্রতিটি ক্লাসে আকারের একটি স্ট্যাটিক অ্যারে দিয়ে মজা করতে পারতেন , এখন আমি এটি সম্পর্কে মনে করি ...
টবি স্পিড

65

এএসএম, by১ বাইট (২৯ বাইট উত্স, পতাকাগুলির জন্য 32 বাইট), 4,294,975,320 বাইট এক্সিকিউটেবল

.globl main
main:
.zero 1<<32

সঙ্গে সংকলন gcc the_file.s -mcmodel=large -Wl,-fuse-ld=gold


5
1<<30সি এর পক্ষে যথেষ্ট ভাল, যেহেতু এটি এসেম্বলার, আকারটি বাইটে।
ভাইরাপটার

2
@ ভাইরাপটার আমার সিস্টেমে 32 গিগাবাইট র‌্যাম রয়েছে এবং কিকের জন্য আমি আপনার কোডটি তৈরি করার চেষ্টা করেছি। asবন্ধ হাতে পরিচালনা করে ld, কিন্তু ldসঙ্গে ব্যর্থ এই । এমনকি -mcmodel=mediumসাহায্য বলে মনে হচ্ছে না ।
Iwillnotexist আইডোনোটেক্সবাদ

2
goldলিঙ্কারের ব্যবহারকে জোর করে চেষ্টা করুন : gcc -fuse-ld=gold ...সংকলন / লিঙ্কগুলি ... এক! 1:29 (89 সেকেন্ড) এবং 1,073,748,000 বাইটের আকারে সমাপ্ত।
লার্নিক্স

2
অবশেষে আমি এই অনুরোধের সাথে 64৪-বিট উবুন্টু 15.10 এ একত্রিত হয়েছি gcc -o g g.s -mcmodel=large -Wl,-fuse-ld=gold। চূড়ান্ত ট্যালি: 4,294,975,320 bytesসাথে 32 টি অতিরিক্ত বাইট প্রোগ্রামের দৈর্ঘ্যে যুক্ত করা হয়েছে -mcmodel=large -Wl,-fuse-ld=gold। হেডারটি ভুল বলে মনে হচ্ছে; উত্সটি 29 বাইট (অতিরিক্ত পতাকা যুক্ত ছাড়া) is
মেগো

3
অবধি বরাদ্দ দিয়ে 1<<33, আমি একটি 8,589,942,616বাইট এক্সিকিউটেবল দিয়ে শেষ করেছি ।
মেগো

60

2005 এর আমার সি উত্তরটি এখানে you

struct indblock{
   uint32_t blocks[4096];
};

struct dindblock {
    struct indblock blocks[4096];
};

struct tindblock {
    struct dindblock blocks[4096];
};

struct inode {
    char data[52]; /* not bothering to retype the details */
    struct indblock ind;
    struct dindblock dint;
    struct tindblock tind;
};

struct inode bbtinode;

int main(){}

19
"আপনার যদি 16 টিবি র‌্যাম থাকে (আপনি না করেন) তবে 16 টিবি বাইনারি তৈরি করবে" " - আমার কাছেও 16TB হার্ড ড্রাইভ নেই! আমি এটি সত্যিই যাচাই করতে পারি না তবে এটি তবে দুর্দান্ত।
ডেভ

5
আমি এটিকে দুর্ঘটনাক্রমে আবিষ্কার করেছি এবং সংকলকটি অ্যাড্রেস স্পেসের বাইরে চলে যাওয়ার সাথে সাথেই টপল পড়তে দেখেছি।
জোশুয়া

8
দয়া করে এই এন্ট্রিটি গল্ফ করার চেষ্টা করবেন না; গল্ফিং কোড নমুনার উদ্দেশ্যকে পরাস্ত করে এবং যাইহোক এটি করার কোনও স্কোর সুবিধা নেই benefits কোডটি ইতিমধ্যে 2005 এর হিসাবে জিপিএলড
জোশুয়া

6
@ বেনভয়েগ নির্বিশেষে, অন্যান্য লোকের কোড সম্পাদনা এখানে কখনই গ্রহণযোগ্য নয়। কোনও সমস্যা থাকলে একটি মন্তব্য দিন। প্রাসঙ্গিক মেটা পোস্ট: meta.codegolf.stackexchange.com/questions/1615/…
মেগো

2
@ জোশুয়া: মার্কডাউন পৃথক পরীক্ষা করুন। মেগো কেবল হাইলাইট করার ইঙ্গিত যুক্ত করেছে।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

25

সরল পুরানো সি প্রিপ্রোসেসর: 214 বাইট ইনপুট, 5 এমবি আউটপুট

আমার বাস্তব-জগতের প্রাকপ্রসেসর দ্বারা অনুপ্রাণিত এখানে ব্যর্থ ।

#define A B+B+B+B+B+B+B+B+B+B
#define B C+C+C+C+C+C+C+C+C+C
#define C D+D+D+D+D+D+D+D+D+D
#define D E+E+E+E+E+E+E+E+E+E
#define E F+F+F+F+F+F+F+F+F+F
#define F x+x+x+x+x+x+x+x+x+x

int main(void) { int x, y = A; }

পরীক্ষাগুলি দেখায় যে প্রতিটি স্তরের #defineইচ্ছায় (আশানুরূপভাবে) আউটপুটটিকে প্রায় দশগুণ বড় করে তোলে। তবে এই উদাহরণটি সংকলন করতে এক ঘণ্টারও বেশি সময় নিয়েছে, তাই আমি কখনই "জি" তে যাইনি।


9
এটি এক্সএমএল বোমার মতো দারুণ
এয়ারউইগ

9
বিশেষত এটি মূল "বিলিয়ন হাসি" এর একটি বাস্তবায়ন।
mınxomaτ

এটি উন্মাদ এখনও সহজ।
ওয়াহিদ আমিরি

2
বাহ, এটি আসলে জিসিসি ৪.৯ এবং ক্ল্যাংয়ে একটি সেগফোল্ট তৈরি করে। আপনি কোন সংকলক ব্যবহার করেছেন?
ডেভ

1
@ ডেভ: অদ্ভুত আমি যখন মেক ব্যবহার করে সংকলন করি তখন এটি সংকলিত হয়, তবে আমি যদি একই একই কমান্ড ব্যবহার করে যা টাইপ করি তবে এটি ক্র্যাশ হয়ে যায়। এবং এটি পরিবেশের ভেরিয়েবলের সাথে সম্পর্কিত বলে মনে হচ্ছে না।
থমাস প্যাড্রন-ম্যাকার্থি

24

জাভা, 450 + 22 = 472 বাইট উত্স, GB 1 জিবি ক্লাস ফাইল

বি জাভা (গল্ফ সংস্করণ, সংকলনের সময় সতর্কতা)

import javax.annotation.processing.*;@SupportedAnnotationTypes("java.lang.Override")public class B extends AbstractProcessor{@Override public boolean process(java.util.Set a,RoundEnvironment r){if(a.size()>0){try(java.io.Writer w=processingEnv.getFiler().createSourceFile("C").openWriter()){w.write("class C{int ");for(int i=0;i<16380;++i){for(int j=0;j<65500;++j){w.write("i");}w.write(i+";int ");}w.write("i;}");}catch(Exception e){}}return true;}}

বি জাভা (অবারিত সংস্করণ)

import java.io.Writer;
import java.util.Set;

import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;

@SupportedAnnotationTypes("java.lang.Override")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class B extends AbstractProcessor {
    @Override
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
        if (annotations.size() > 0) {
            try (Writer writer = processingEnv.getFiler().createSourceFile("C").openWriter()) {
                writer.write("class C{int ");
                for (int i = 0; i < 16380; ++i) {
                    for (int j = 0; j < 65500; ++j) {
                        writer.write("i");
                    }
                    writer.write(i + ";int ");
                }
                writer.write("i;}");
            } catch (Exception e) {
            }
        }
        return true;
    }
}

সংকলন

javac B.java
javac -J-Xmx16G -processor B B.java

ব্যাখ্যা

এই বোমাটিতে টীকাগুলি প্রসেসর ব্যবহার করা হয়েছে। এটির জন্য 2 টি সংকলন পাসের প্রয়োজন। প্রথম পাসটি প্রসেসরের ক্লাস তৈরি করে B। দ্বিতীয় পাসের সময় প্রসেসর একটি নতুন উত্স ফাইল C.javaতৈরি করে এবং একটি বাইট C.classআকারের সাথে এটি সংকলন করে 1,073,141,162

বড় শ্রেণীর ফাইল তৈরি করার চেষ্টা করার সময় বেশ কয়েকটি সীমাবদ্ধতা রয়েছে:

  • শনাক্তকারী চেয়ে মধ্যে 64K সম্পর্কে ফলাফলে আর তৈরি করা হচ্ছে: error: UTF8 representation for string "iiiiiiiiiiiiiiiiiiii..." is too long for the constant pool
  • প্রায় 64k এর বেশি ভেরিয়েবল / ফাংশন তৈরির ফলাফল: error: too many constants
  • একটি ফাংশনের কোড আকারের জন্য প্রায় 64k এর সীমাও রয়েছে।
  • .classফাইলটির জন্য প্রায় 1GB এর জাভা সংকলকটিতে একটি সাধারণ সীমা (বাগ?) রয়েছে বলে মনে হচ্ছে । যদি আমি বৃদ্ধি 16380করতে 16390কম্পাইলার কখনো ফেরৎ উপরে কোডে।
  • .javaফাইলটির জন্য প্রায় 1GB এর সীমাও রয়েছে । বৃদ্ধি 16380করতে 16400উপরের কোডগুলি ফলাফলে: An exception has occurred in the compiler (1.8.0_66). Please file a bug ...একটি দ্বারা অনুসরণ java.lang.IllegalArgumentException

10
ঝরঝরে; আপনি মূলত কাস্টম প্রিপ্রসেসরগুলি সমর্থন করে এমন একটি সংকলক সহ এমন একটি ভাষায় আকারের সীমাতে নিজের প্রিপ্রসেসর তৈরি করেছেন। এটি নিয়মের মধ্যে রয়েছে। চূড়ান্ত ক্লাসটি আমার জন্য ছিল মাত্র 0.5 গিগাবাইট, তবে আমি পদ্ধতিটি নিশ্চিত করতে পারি।
ডেভ

জাভা habrahabr.ru/post/245333 এর আরেকটি উদাহরণ - এটি নেস্টেড ব্যবহার করে try..finally(অবশেষে ব্লকের কোডটি সাধারণ এবং ব্যতিক্রমী ক্ষেত্রে নকল করা হয়) এবং ইনিশিয়াল ব্লক (ইনিশিয়াল ব্লক থেকে কোড প্রতিটি নির্মাণকারীকে সংযুক্ত করা হয়)
ভিক্টর

আমি äএকটি দ্বারা প্রতিস্থাপন iএবং সংখ্যাগুলি সামঞ্জস্য করেছি এখন বোমাটি কোনও এনকোডিংয়ের সমস্যা ছাড়াই যে কোনও সিস্টেমে 1 জিবি ক্লাস তৈরি করা উচিত। তবে এর এখন আরও অনেক বেশি স্মৃতি দরকার।
স্লেফার

? টাইপলেমেন্ট বাড়ায়?!?!
বিড়াল

1
: এখানে দেখুন @cat angelikalanger.com/GenericsFAQ/FAQSections/...
Sleafar

22

সি, 26 বাইট উত্স, 2,139,103,367 বাইট আউটপুট, বৈধ প্রোগ্রাম

const main[255<<21]={195};

gcc cbomb.c -o cbombসংকলনটি ব্যবহার করে: (জিসিসি সংস্করণ 4.6.3, উবুন্টু 12.04, ~ 77 সেকেন্ড)

আমি ভেবেছিলাম যে কোনও কমান্ড লাইনের বিকল্প ব্যবহার না করে আমি কতটা বড় একটি বৈধ প্রোগ্রাম তৈরি করতে পারি তা দেখার চেষ্টা করব। আমি এই উত্তরটি থেকে ধারণা পেয়েছি: https://codegolf.stackexchange.com/a/69193/44946 ডিজিটাল ট্রমা দ্বারা। কেন এই সংকলন সেখানে মন্তব্য দেখুন।

এটি কীভাবে কাজ করে: constসেগমেন্টের পৃষ্ঠাগুলি থেকে লেখার পতাকা সরিয়ে দেয়, তাই প্রধানটি কার্যকর করা যায়। 195একটি ফিরতি জন্য ইন্টেল মেশিন কোড হয়। এবং যেহেতু ইন্টেল আর্কিটেকচারটি স্বল্প-এন্ডিয়ান, তাই এটি প্রথম বাইট। ইক্স রেজিস্টারটিতে স্টার্ট আপ কোড যা-ই লাগবে, সম্ভবত 0 দিয়ে প্রোগ্রামটি প্রস্থান করবে।

এটি কেবলমাত্র প্রায় 2 গিগের কারণ লিঙ্কারটি অফসেটের জন্য 32 বিট স্বাক্ষরিত মানগুলি ব্যবহার করছে। এটি 2 গিগের চেয়ে 8 মেগা ছোট কারণ সংকলক / লিঙ্কারের কাজ করার জন্য কিছু জায়গা প্রয়োজন এবং এটি লিংকের ত্রুটি ছাড়াই এটি পেতে পেলাম - ymmv।


3
আকর্ষণীয় বিষয়টিকে বাদ দিয়ে আউটপুটটি সর্বোচ্চ সংক্ষেপণ = 1029: 1 সংকোচনের অনুপাত সহ গিজিপযুক্ত 2,078,451 বাইট।
জকিপু

20

বু , 71 বাইট। সংকলন সময়: 9 মিনিট। 134,222,236 বাইট এক্সিকিউটেবল

macro R(e as int):
 for i in range(2**e):yield R.Body
x = 0
R 25:++x

সংস্থাপকটি Rবার্ষিক সংখ্যার বার্ষিকী সংখ্যাকে বহুগুণিত করতে ম্যাক্রো (পুনরাবৃত্তির জন্য) ব্যবহার করে । কোনও বিশেষ সংকলক পতাকা লাগবে না; কেবল ফাইলটি সংরক্ষণ করুন bomb.booএবং booc bomb.booএটি নির্মাণের জন্য সংকলককে অনুরোধ করুন।


2**e-এটা কি? চেষ্টা করুন 9**e!
wchargin

1
@ ডাব্লুচারগিন: রূপান্তরকাজের মজার বিষয় হ'ল আপনি এটিকে সহজেই কাস্টমাইজ করতে পারবেন!
ম্যাসন হুইলারের

বু ইনস্টল করতে আমার কিছুটা সমস্যা হচ্ছে ... আমি যখন এটি ইনস্টল করার ব্যবস্থা করি তখন আমি এটিকে নিশ্চিত করব!
ডেভ

@ ডেভ আপনি এতে কী সমস্যা করছেন?
ম্যাসন হুইলারের

16

কোটলিন , 90 বাইট উত্স, 177416 বাইট (173 কেবি) জেভিএম বাইনারি সংকলিত

inline fun a(x:(Int)->Any){x(0);x(1)}
fun b()=a{a{a{a{a{a{a{a{a{a{a{println(it)}}}}}}}}}}}

প্রযুক্তিগতভাবে, আপনি আরও অভিব্যক্তি বাসা বাঁধিয়ে এটি আরও দীর্ঘ করতে পারেন। যাইহোক, সংকলক একটি StackOverflowত্রুটি সহ ক্র্যাশ করে যদি আপনি পুনরাবৃত্তি বৃদ্ধি করেন।


আপনার এসআই উপসর্গ সম্মত নয়। এটি কি 177416 কিলোবাইট = 173 এমবি, বা 177416 বাইট = 173 কেবি?
বেন ভয়েগট

1
@ বেনওয়েগ্ট এটিকে নির্দেশ করার জন্য আপনাকে ধন্যবাদ: ডি
দ্য নম্বরওন

চিত্তাকর্ষক, একটি +1 আছে
জে আতকিন

কোটলিন 1.2.20 কে সংকলনের জন্য আমাদের একটি গভীরতা সরিয়ে ফেলতে হবে এবং এটি 104kB ডলার। আপনি মূলত কোন সংস্করণ ব্যবহার করেছেন?
TWiStErRob

15

সি ++, 214 বাইট (কোনও বিশেষ সংকলনের বিকল্পের প্রয়োজন নেই)

#define Z struct X
#define T template<int N
T,int M=N>Z;struct Y{static int f(){return 0;}};T>Z<N,0>:Y{};T>Z<0,N>:Y{};T,int M>Z{static int f(){static int x[99999]={X<N-1,M>::f()+X<N,M-1>::f()};}};int x=X<80>::f();

এটি মোটামুটি সোজা দ্বি-মাত্রিক টেম্পলেট পুনরাবৃত্তি (প্রতিটি টেম্পল্টের অল্প পরিমাণে স্থির ডেটা সহ, পুনরাবৃত্তির গভীরতা নির্গত মোট টেম্পলেটগুলির বর্গমূল হিসাবে যায়, তাই প্ল্যাটফর্মের সীমা অতিক্রম করবে না)।

জেনারেটেড অবজেক্ট ফাইলটি g++ 4.9.3 x86_64-pc-cygwin2567355421 বাইট (2.4GiB)।

80 এর উপরে প্রাথমিক মান বৃদ্ধি করা সাইগউইন জিসিসি অ্যাসেমব্লার (অনেকগুলি বিভাগ) ভঙ্গ করে।

এছাড়াও, উত্স কোডটি পরিবর্তন না করে বাড়ানো আকারের জন্য 99999প্রতিস্থাপিত 9<<19বা অনুরূপ করা যেতে পারে ... তবে আমি মনে করি না যে আমার আগে থেকে আরও ডিস্কের জায়গা ব্যবহার করা উচিত;)


নিশ্চিত (বাস্তবে এটি ঝাঁকুনির সাথে 2.56 গিগাবাইট), তবে -cলিঙ্কার (2 অতিরিক্ত বাইট) বন্ধ করার জন্য এটি একটি সংকলন পতাকা প্রয়োজন , এবং আমি নিশ্চিত যে আমি .o আউটপুট গ্রহণ করতে পারি না (আমি তালিকাভুক্ত একটিরও নয়)। তবুও, আমি এটি পছন্দ করি, তাই +1।
ডেভ

@ ডেভ: জিসিসি। ফাইলগুলি কি ইএলএফ ফর্ম্যাট হয় না?
বেন ভয়েগট

নিশ্চিত না. আমি যখন এগুলি তৈরি করি তখন তারা কোনও ইএলএফ ম্যাজিক নম্বর দিয়ে শুরু করে না ... আমি পরে তদন্ত করব।
ডেভ

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

হ্যাঁ, কুবুন্টুতে জিসিসি 5.2.1 প্রকৃতপক্ষে একটি ইএলএফ ফাইল তৈরি করছে, তবে এটি কেবল 9 এমবি! অন্যান্য সংকলকগুলির তুলনায় এটি কীভাবে এটি এতটা সংকুচিত হয়েছে তা নিশ্চিত নয়। সম্ভবত জিসিসি 4.9 একটি 2 জিবি ইএলএফ ফাইল তৈরি করবে।
ডেভ

6

স্কালা - 70 বাইট উত্স, 22980842 বাইট ফলাফল (জারের পরে)

import scala.{specialized => s}
class X[@s A, @s B, @s C, @s D, @s E]

এই 9 উত্পাদন করে 5 (প্রায় 59,000) বিশেষ বর্গ ফাইল, যা প্রায় 23 মেগাবাইট এক বয়াম মধ্যে প্যাক করুন। আপনি যদি নীতিগতভাবে চালিয়ে যেতে পারেন যে আপনার কাছে এমন একটি ফাইল সিস্টেম রয়েছে যা সেই অনেকগুলি ফাইল এবং পর্যাপ্ত মেমরি হ্যান্ডেল করতে পারে।

(জার কমান্ডটি অবশ্যই অন্তর্ভুক্ত করা উচিত, এটি 82 বাইট))


আমি এটা কম্পাইল করতে পারি নি: error: java.lang.OutOfMemoryError: GC overhead limit exceeded। আপনি কি সংকলনের জন্য প্রয়োজনীয় কমান্ড নথি করতে পারেন?
পি। পিটার

@ পি.প্যাটার - আপনাকে সংকলকটিকে আরও মেমরি দিতে হবে, যেমন scalac -J-Xmx12G X.scalaআমি যা ব্যবহার করেছি। আসলে এটির কতটা প্রয়োজন তা পরীক্ষা করিনি।
রেক্স কেরার 21

তবুও সংকলন করছি না, দুঃখের সাথে :( error: error while loading AnnotatedElement, class file '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar(java/lang/reflect/AnnotatedElement.class)' is broken (bad constant pool tag 18 at byte 76) one error foundআপনি স্কেলাক এবং জাভা সংস্করণ (সম্ভবত প্ল্যাটফর্মও) নির্দিষ্ট করতে পারবেন? আমি স্ক্যালাক ২.৯.২ এবং ওপেনজেডকে ১.৮.০_66--অভ্যন্তরীণ-বি ১17, ডিবিয়ান ৮ এক্স
৮8664-64৪ ব্যবহার করেছি

উবুন্টু 15,10, java version "1.8.0_72-ea" Java(TM) SE Runtime Environment (build 1.8.0_72-ea-b05) Java HotSpot(TM) 64-Bit Server VM (build 25.72-b05, mixed mode) ,$ scala -version Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL
রেক্স কের

2

সি, 284 বাইট +2 জন্য -cমধ্যে gcc bomb.c -o bomb.o -c; আউটপুট: 2 147 484 052 বাইট

#define a 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
#define b a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a
#define c b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b
#define d c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c
#define e d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
#define f e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e
__int128 x[]={f,f,f,f,f,f,f,f};

0

বাহ, আপনি এ থেকে আশা করতে পারেন তার চেয়েও বেশি উপায়

macro R(e as int):for i in range(9**e):yield R.Body
x = 0
R 99:++x

এটি কয়েকটি ছোট পরিবর্তন (??) দিয়ে ম্যাসন হুইলারের উত্তরটির মতো দেখাচ্ছে। আপনি কি স্বাধীনভাবে একই উত্তরটিতে পৌঁছেছিলেন বা আপনি যে মানগুলি বদলেছেন সেগুলির মধ্যে গুরুত্বপূর্ণ কিছু রয়েছে (যদি তা হয় তবে দয়া করে কেন তা গুরুত্বপূর্ণ তা ব্যাখ্যা করার জন্য উত্তরটি সম্পাদনা করুন)।
ডেভ

0

পাইথন 3:

9**9**9**9**9

টেটারেশন বোমা


2
আপনার এন্ট্রি অন্যের সাথে কীভাবে তুলনা করা হয় তা দেখতে আপনার আউটপুটটি কতগুলি বাইট রয়েছে তা নির্দেশ করা উচিত।
সানাইচাইজস

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

1
@ মার্টিনএন্ডার কীভাবে পাইথন সংকলনের সময় কিছু এক্সপ্রেশনকে মূল্যায়ন করে এবং সংখ্যার সুনির্দিষ্ট সংখ্যায় সঞ্চয় করে, এর (তাত্ত্বিকভাবে) এর পরিবর্তে একটি বড় কার্যকর কার্যকর হবে have তবে যেমন আলেকসি টোরহামো (যিনি তার উত্তরের অংশের জন্য একই কৌশলটি ব্যবহার করেছিলেন) দ্বারা উল্লিখিত হয়েছে, এটির কোথাও 2 গিগাবাইটের কাছাকাছি সীমা রয়েছে, সুতরাং আমি আশা করব যে এই কোডটি লিখিত হিসাবে সম্ভবত সংকলন করবে না (যদিও আমি পরীক্ষা করে দেখিনি) )। ওপি যদি এটি সংকলিত আকারে পেতে এবং সংকলিত আকার পোস্ট করতে পারে (এটি উত্পন্ন করার জন্য প্রয়োজনীয় কমান্ডের সাথে), তবে এটি বৈধ। আলেক্সির বিদ্যমান উত্তরের মিল আমার কাছে কাকতালীয় মনে হচ্ছে।
ডেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.