'লুপিং' ছাড়াই লুপ [বন্ধ]


85

এর অনুরূপ একটি প্রশ্ন কয়েক বছর আগে জিজ্ঞাসা করা হয়েছিল , তবে এটি একটি আরও জটিল।

চ্যালেঞ্জ সহজ। একটি প্রোগ্রাম (আপনার পছন্দের ভাষায়) যে বারবার যেমন কোনো পুনরাবৃত্তি কাঠামো ব্যবহার না করেই কোড executes লিখুন while, for, do while, foreachবা goto( সুতরাং আপনি সব nitpickers স্বরূপ, আপনি একটি লুপ ব্যবহার করতে পারবেন না )। যাইহোক, পুনরাবৃত্তি অনুমোদিত নয় , ফাংশনটিতে নিজেকে বোধগম্য করে (নীচে সংজ্ঞাটি দেখুন) । এটি এই চ্যালেঞ্জকে অনেক সহজ করে তুলবে।

লুপটিতে কী কার্যকর করা দরকার তার উপর কোনও বিধিনিষেধ নেই, তবে আপনার উত্তরের সাথে একটি ব্যাখ্যা পোস্ট করুন যাতে অন্যরা বুঝতে পারে যে কী কার্যকর করা হচ্ছে।

যারা সংজ্ঞায় ঝুলতে পারেন তাদের জন্য, এই প্রশ্নের লুপটির সংজ্ঞাটি হ'ল:

A programming language statement which allows code to be repeatedly executed.

এবং এই প্রশ্নের পুনরাবৃত্তি সংজ্ঞাটি আপনার মানক পুনরাবৃত্তির ফাংশন সংজ্ঞা হবে:

A function that calls itself.

বিজয়ীর উত্তর হবে যেটি 16 জুলাই পূর্ব সময় সকাল 10 টায় সর্বাধিক প্রচার করেছে। শুভকামনা!

হালনাগাদ:

এখনও যে বিভ্রান্তি প্রকাশ করা হচ্ছে তা শান্ত করার জন্য এটি সাহায্য করতে পারে:

উপরে বর্ণিত বিধিগুলি:

  • লুপ বা গোটো ব্যবহার করবেন না
  • ফাংশন তাদের কল করতে পারে না
  • 'লুপ'-এ আপনি যা চান তা করুন

আপনি যদি কিছু বাস্তবায়ন করতে চান এবং নিয়মগুলি এটিকে স্পষ্টভাবে অস্বীকার না করে তবে এগিয়ে যান এবং এটি করুন। অনেক উত্তর ইতিমধ্যে নিয়ম বাঁকানো হয়েছে।


27
যারা সহজ কৌশল চান তাদের জন্য, আমি এটি পোস্ট করা নিয়ে বিরক্ত হতে পারি না: পি কেবলমাত্র 2 টি ফাংশন, function Aকল function Bএবং function Bকল করুন function Aযখন 1 টি কার্য সম্পাদন করে। যেহেতু ফাংশনটি নিজেকে কল করে না এটি মানদণ্ডের ভিত্তিতে বৈধ হওয়া উচিত ^ ^
টিউন প্রোঙ্ক

2
"সৃজনশীলতার উপর ফোকাসের জন্য জনপ্রিয়তার প্রতিযোগিতায় পরিবর্তিত হয়েছে" প্রশ্নটি পরিবর্তন করা প্রতারণা করছে!
কাজিনকোকেইন

4
"পুনরাবৃত্তি" এর সংজ্ঞাটি খুব কার্যকর নয়। পুনরাবৃত্ত ফাংশনগুলি অস্বীকার করা ভাল , যেগুলি সরাসরি বা অপ্রত্যক্ষভাবে তাদের উল্লেখ করে এমন ফাংশন।
lrn

3
অস্পষ্ট যা লুপ কনস্ট্রাক্টর এবং পুনরাবৃত্তির "সংজ্ঞা"। উভয়ই খুব সুনির্দিষ্ট হয় না। উদাহরণ: rep(f){f();f();}- এটি একটি বিবৃতি (কোনও ফাংশন ডিক্লারেশন কিছু ভাষায় একটি বিবৃতি) যা বারবার সম্পাদনকারী কোডকে অনুমতি দেয়। এটি কি অনুমোদিত নয়? আপনি একটি লুপ বাস্তবায়নের জন্য কোড চেয়েছেন। যদি সেই কোডটি সিন্ট্যাক্টিকভাবে একটি বিবৃতি হয় তবে আপনি কেবল এটি অস্বীকার করেছেন। আরেকটি উদাহরণ: f(b) { b(); g(b); }; g(b) { f(b); }। আমি বলতে চাই fএকটি পুনরাবৃত্তি ফাংশন (এর সাথে পারস্পরিক পুনরাবৃত্তি হয়ে g)। এটি কি অনুমোদিত নয়?
lrn

3
@ ক্যালিনপি, আমি কী " হ্যাং আপ " করেছি তা হ'ল সাইটের প্রশ্নাগুলি সাইটের বিষয়বস্তু হওয়া উচিত: এর অর্থ একটি স্পষ্ট, উদ্দেশ্যমূলক স্পেসিফিকেশন থাকা, যা এই প্রশ্নটি নয়।
পিটার টেলর

উত্তর:


258

চুনি

def method_missing(meth,*args)
  puts 'Banana'
  send(meth.next)
end

def also
  puts "Orange you glad I didn't say banana?"
end

ahem

ডেমো

এর গলা সাফ করে 3030 বার "কলা" মুদ্রণ করে এবং "কমলা আপনি খুশি আমি কলা না বলি?" রাখে।

এটি 'আহেম' এবং 'এছাড়াও' ("আহেম", "আহেন", "আহো", "আহেপ", "আহেক") এর মধ্যে বর্ণমালার অন্তর্ভুক্ত প্রতিটি পদ্ধতি সংজ্ঞায়িত করতে রুবির হাস্যকর কেবলমাত্র সময়ে ব্যবস্থার সংজ্ঞা কার্যকারিতা ব্যবহার করে, "আহার", "আহস", "আহেত", "অহিউ", "আহেভ" ...) প্রথমে কলা প্রিন্ট করতে হবে এবং তারপরে তালিকার পরবর্তীটিতে কল করুন।


4
এটি শেষ পর্যন্ত "এছাড়াও" কে আঘাত করে, যা সংজ্ঞায়িত হয়, এবং অতএব অনুপস্থিত নয়।
হিস্টোক্র্যাট

77
এটি হিস্টরিয়াল।
মাইকেল বি

4
@ ব্যারিকার্টার: রুবিতে, String#nextযা method_missingফাংশনগুলিতে কমবেশি বলা হয় একটি সংখ্যায় 1 যুক্ত করার পরিবর্তে এটি সমস্ত বর্ণানুক্রমিক অক্ষরের সাথে কাজ করে (এবং তারা যদি স্ট্রিংয়ের একমাত্র অক্ষর হয় তবে অ-অ্যালামাম)। দেখুন ruby-doc.org/core-2.1.2/String.html#method-i-next
3Doubloons

2
@ নিকটি এটি এক্সএমএল নির্মাতাদের মতো ক্লাসে ব্যবহারযোগ্য, যেখানে আপনি কেবল কোনও ট্যাগ তৈরি করতে পারেন b.my_tag। এটি অ্যাক্টিভেকর্ড মডেলগুলিতে বা OpenStruct। 'ওয়াট টক'-এ তিনি বলেছিলেন যে গ্লোবাল method_missingখারাপ, তবে স্কোপড দুর্দান্ত।
হাউলেথ

2
আমি আরেকটি রুবি প্রোগ্রামে একটি পুরানো মন্তব্য মনে করি: "এটি আমার পছন্দ কারণ এটিতে মিথ রয়েছে"
বিদ্যুৎ সাগর

82

পাইথন - 16

বা অন্য কোন ভাষা ইওল সহ।

exec"print 1;"*9

আপনার প্রোগ্রামটি কি বর্ণনা করতে পারে?
কাইলিনপি

10
এটি একটি স্ট্রিং ( "print 1;") নেয় , এটি 9 বার ( *9) নকল করে , তারপরে ফলাফলটি স্ট্রিং কার্যকর করে ( exec)। আসলে কিছুতেই লুপিং ছাড়াই কোডের একটি অংশ পুনরাবৃত্তি করা।
স্ক্রাগার

12
হ্যাঁ স্ট্রিং গুণের জন্য!
থান ব্রিমহল

2
এছাড়াও রুবি কাজ করে যদি আপনি পরিবর্তন execকরতে eval বাprint করার echo
আজেদি 32

80

CSharp

আমি কোডটি আরও পঠনযোগ্য ফ্যাশনে প্রসারিত করেছি কারণ এটি আর কোড গল্ফ নয় এবং একটি ইনক্রিমেন্ট কাউন্টার যুক্ত করেছে যাতে লোকেরা দেখতে পারে যে এই প্রোগ্রামটি কিছু করে।

class P{
    static int x=0;
    ~P(){
        System.Console.WriteLine(++x);
        new P();
    }
    static void Main(){
        new P();
    }
}

(দয়া করে এটি কখনও করবেন না)।

শুরুতে আমরা Pক্লাসের একটি নতুন উদাহরণ তৈরি করি , যখন প্রোগ্রামটি প্রস্থান করার চেষ্টা করে জিসি কল করে যা চূড়ান্তকরণকারীকে কল করে যা Pশ্রেণীর একটি নতুন উদাহরণ তৈরি করে , যা যখন এটি পরিষ্কার করার চেষ্টা করে তখন একটি নতুন তৈরি করে Pযা ফাইনালাইজারকে ডাকে .. ।

প্রোগ্রামটি শেষ পর্যন্ত মারা যায়।

সম্পাদনা: অনির্বচনীয়ভাবে এটি মৃত্যুর আগে প্রায় 45k বার চলে। আমি জানি না কীভাবে জিসি আমার কৌশলযুক্ত অসীম লুপটি বের করে ফেলল তবে তা হয়ে গেল। সংক্ষেপে মনে হয় এটি এটি খুঁজে পায়নি এবং থ্রেডটি কার্যকর হওয়ার প্রায় 2 সেকেন্ডের পরে হত্যা করা হয়েছিল: https://stackoverflow.com/questions/24662454/how-does-a-garbage-collector-avoid-an -infinite-লুপ-এখানে

সম্পাদনা 2: আপনি যদি মনে করেন এটি একটু বেশিই পুনরাবৃত্তির মতো হয় তবে আমার অন্যান্য সমাধানটি বিবেচনা করুন: https://codegolf.stackexchange.com/a/33268/23300

এটি জেনেরিক পদ্ধতির পুনঃসংশোধন ব্যবহার করে যাতে রানটাইমের সময় এটি ক্রমাগতভাবে নতুন পদ্ধতি উত্পন্ন করে এবং প্রতিটি পদ্ধতি পদটিতে একটি নতুন মিন্টেড পদ্ধতি কল করে। আমি referenceটাইপ প্যারামিটারগুলিও এড়িয়ে চলি কারণ সাধারণত রানটাইম এই পদ্ধতিগুলির জন্য কোডটি ভাগ করে নিতে পারে। একটি valueটাইপ প্যারামিটার দিয়ে রানটাইম একটি নতুন পদ্ধতি তৈরি করতে বাধ্য হয়।


20
আমি জানতাম না যে সি # এর ডেস্ট্রাক্টর রয়েছে। আমাকে শেখানোর জন্য +1।
seequ

4
@ রেয়ার, এটি করে তবে এগুলি প্রকৃতিবিরোধী নয় এবং কোনও প্রোগ্রামের প্রয়োগের সময় কখনও ডাকা হতে পারে না। এগুলি ভার্চুয়াল পদ্ধতির ওভাররাইড হিসাবে প্রয়োগ করা হয় Finalizeযাতে তাদের মাঝে মাঝে ডাকা হয় finalizer। আসল সি # তে আপনার IDisposableপ্যাটার্নটি ব্যবহার করা উচিত ।
মাইকেল বি 20

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

আমি মনে করি এটি কার্যত ওএস-কে না করে প্রোগ্রামটিকে হত্যা করার সিদ্ধান্ত নিয়েছে the প্রোগ্রামের শেষে ডাকা আবর্জনা সংগ্রহকারী থ্রেডটি মারা যাওয়ার আগে 2 সেকেন্ডের একটি নির্দিষ্ট সময়সীমা দেওয়া হয়।
মাইকেল বি

কিছুটা ছোটখাট পরিবর্তন (প্রোগ্রামটি শেষ হতে না দেওয়া, জিসিকে 1 ম পি অবজেক্টটি প্রকাশ করা এবং বার বার জিসিসি.কলেক্ট কল করা) দিয়ে আমি এটিকে অনির্দিষ্টকালের জন্য চালাতে পারি।
LVBen

53

Befunge

.

ভাল পুরাতন বেফুং 0 টি (খালি স্ট্যাক থেকে) আউটপুটগুলি প্রায় চিরকালের জন্য, লাইনগুলি চারপাশে মোড়ানো হিসাবে।


1
হা! আমি এর মতো কৌশলগুলি পছন্দ করি
CailinP

47

জাতীয়

(f=function(){ console.log('hi!'); eval("("+f+")()") })()

ফাংশন মজা!

এমন একটি ফাংশন যা নিজের মতো একই দেহের সাথে অন্য ফাংশন তৈরি করে এবং তারপরে এটি চালায়।

যখন স্ট্যাকের সীমাটি পৌঁছে যায় এবং পুরো জিনিসটি ভেঙে যায় তখন এটি হাই দেখায়।

দাবি অস্বীকার: স্ট্যাক সীমা না হওয়া পর্যন্ত আপনি আপনার ব্রাউজারে কিছু করতে সক্ষম হবেন না।


আর একটি, আরও খারাপ :

function f(){ var tab = window.open(); tab.f = f; tab.f()}()

এটি একটি ফাংশন তৈরি করে যা একটি উইন্ডো খোলে, তারপরে সেই উইন্ডোর মধ্যে একটি ফাংশন তৈরি করে যা ফাংশনের অনুলিপি হয় এবং তারপরে এটি চালায়।

দাবি অস্বীকার: আপনি যদি পপআপগুলি খোলার অনুমতি দেন তবে এটি শেষ করার একমাত্র উপায় হ'ল আপনার কম্পিউটারটি পুনরায় চালু করা হবে


5
এটি নিশ্চিতরূপে বেশ খারাপ;)
কাইলিনপি

28
নিবন্ধন করুন ক্যালইনপি
seequ

আমি মনে করি আপনি fআপনার দ্বিতীয় ফাংশন শেষে একটি মিস করছেন । }f()শেষ পর্যন্ত হওয়া উচিত ।
চিরাগ ভাটিয়া

2
দুর্ভাগ্যক্রমে, আমি এটি লক্ষ্য করেছি কারণ আমি চেষ্টা করেছি। : পি
চিরাগ ভাটিয়া

7
-1 - এটি কেবল পুনরাবৃত্তি।
imibis

39

x86 সমাবেশ / ডস /

    org 100h

start:
    mov dx,data
    mov ah,9h
    int 21h
    push start
    ret

data:
    db "Hello World!",10,13,"$"

আমি কি কোনও উল্টে পুচ্ছ পুনরাবৃত্তি বলেছিলাম ? আমি কি? ম্যাডাম মিম বেগুনি ড্রাগন

কিভাবে এটা কাজ করে

retনির্দেশ, একটি ফাংশন থেকে ফিরে করতেন আসলে স্ট্যাক থেকে ফিরতি ঠিকানা (যা সাধারণত সংশ্লিষ্ট দ্বারা সেখানে রাখা হয় পপ call) এবং এটি জাম্প। এখানে প্রতিটি পুনরাবৃত্তির সময় আমরা pushফিরে আসার আগে স্ট্যাকের এন্ট্রিপয়েন্ট ঠিকানা, এভাবে অসীম লুপ তৈরি করে।


আমি ভাবছিলাম যে এটি সমাবেশে সম্ভব হয়েছিল কি না?
ইয়ান ডি স্কট


1
আমি এইটির একজনের ডুপ হিসাবে কোডগল্ফ.স্ট্যাকেক্সেক্সঞ্জ.com/ a/ 34295/11259 কল করতে যাচ্ছিলাম , কিন্তু আমি দেখতে পাচ্ছি যে আসলে উত্তরটি ছিল
ডিজিটাল ট্রমা

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

@ মাত্তিও ইটালিয়া অবরুদ্ধ নয়, কেবল কৃপণ;) ("এ্যাক্স যুক্ত করুন, ৪" আমাকেও বিভ্রান্ত করেছেন, আমি ওপকোড আকারের টেবিলটি খুঁজে পাইনি আমি কেবল বন্য অনুমান করা আকার)। আমার কাজের প্রকল্পটি সংকলনের সময় আমি এটি অনলাইন সংকলক করেছিলাম যাতে এটি ভয়াবহ দেখাচ্ছে। "শুরু:" ব্যবহারের দুর্দান্ত ধারণা।
PTwr

37

জাভা

সোজা এক্সকেসিডি থেকে

বন্ধন

এটি পিতা-মাতা এবং সন্তানের মধ্যে ধরা পড়ার এক শেষ অবধি খেলা নয়!

এর লক্ষ্য CHILDসেট করা হয় PARENTএবং এর লক্ষ্যটি PARENTহয় CHILD। যখন PARENTকল AIM, এটা দৃষ্টান্ত ছোঁড়া BALLবর্গ এবং এটি ধরা বিবৃতি হাতে ক্যাচ করা হয়। ক্যাচ স্টেটমেন্টটি তারপরে কল করে PARENT.TARGET.AIMযেখানে লক্ষ্যটি CHILDCHILDউদাহরণ হিসেবে বলা যায় একই করে এবং পিতা বা মাতা থেকে "বল পিছনে হেলিয়ে"।


3
আমি সেই কমিকগুলি পছন্দ করি!
ডেরেক 朕 會 功夫

1
বলটি আসলে বাবা-মা এবং সন্তানের মধ্যে ছুঁড়ে ফেলা হলে আরও ভাল হত। যেমনটি হয়, বলটি সর্বদা একই "ব্যক্তি" দ্বারা নিক্ষেপ করা হয় এবং ধরা হয়।
আজেদি 32

@ আজেদী 32 এটি প্রকৃতপক্ষে প্রদর্শিত হবে যা এটিকে পিছনে ফেলে দেয়; অভিভাবকরা টার্গেটই বাচ্চা এবং সন্তানের লক্ষ্য পিতামাতার। আইমকে অভিভাবকদের কাছে ডাকা হয়, যিনি বলটি ছুঁড়ে মারেন এবং সন্তানের লক্ষ্য এবং বলটি নিক্ষেপ করেন, কিউ লুপ
অ্যালেক্স কোলেম্যান

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

11
TARGET.AIM(B);পদ্ধতিতে কমান্ডটি AIMএকটি পুনরাবৃত্ত কল। সুতরাং এটি "ফাংশনগুলি তাদের নিজেদের কল করতে পারে না" নিয়ম লঙ্ঘন করে।
থিওডোর নরভেল

31

বাশ, 3 টি অক্ষর

yes

হ্যাঁ বার বার কনসোলে 'y' ফিরিয়ে দেবে

সম্পাদনা করুন: প্রত্যেকে এই লাইনটি সম্পাদনা করতে উত্সাহিত হয়েছে:

yes something | xargs someaction

(অলিভিয়ার ডুলাককে ধন্যবাদ)


1
কেন এই চলতে থাকবে? আমি শুধু এটি কেন চেষ্টা করার চেষ্টা করছি তা প্রশ্ন করছি না।
তেউন প্রংক

2
@ টিউনপ্রনক yesএকটি বাশ কমান্ড যা হ্যাঁ শব্দটি মারা না যাওয়া বা স্ট্রিম বন্ধ না হওয়া অবধি মুদ্রণ করে। যদি এটি স্ক্রিনে লেখা থাকে তবে এটি না মেরে এটি কখনও থামবে না। যদিও এটি ধরণের প্রতারণা, কারণ এটি একটি কমান্ড যা মূলত প্রিন্টফের উপর একটি লুপ থাকে।
স্ক্রাগার

1
আরও yesকিছু লুপ চালিয়ে যাওয়ার জন্য আরও মজাদার ব্যবহার করা হবে।
trlkly

3
@ আইজকাটা: তবে তারপরে আপনি এটি করতে পারেন:: yes something | xargs someactionকোনও পুনরাবৃত্তি (আপনি এমনকি লাইন প্রতি 1 "কিছু" পেতে এক্স-জার্স -1 1 যোগ করতে পারেন)। Xargs ব্যবহার আরও জটিল আচরণের জন্য পথ উন্মুক্ত করে (এমনকি যাদের হ্যাঁ আউটপুট নিয়ে কিছু করার নেই)
অলিভিয়ার ডুলাক

4
@ স্ক্রাগার আপনার ঠিক উত্তর দেওয়া উচিত ছিল yes
ডেভিউলেস

28

সি, 35 টি অক্ষর

main(int a,char**v){execv(v[0],v);}

প্রোগ্রামটি নিজেই কার্যকর করে। আমি নিশ্চিত না এটিকে পুনরাবৃত্তি হিসাবে বিবেচনা করা হয় কিনা।


4
@ এমনিপ টেইল পুনরাবৃত্তি, তারপরে, যদি এটি প্রক্রিয়া স্তরে প্রয়োগ হয়
ইজকাটা

3
@ ইজকাটা টেল পুনরাবৃত্তি এখনও পুনরাবৃত্তি, কিন্তু এটি পুনরাবৃত্তি নয়। পুনরাবৃত্তি একটি ফাংশন বোঝায় (বা এই ক্ষেত্রে প্রক্রিয়া) নিজেকে অপসারণের জন্য আরেকটি পুনরাবৃত্তির জন্য 'অপেক্ষা'। এই ক্ষেত্রে, execনতুন প্রক্রিয়াটি আসলটি প্রতিস্থাপনের কারণ ঘটায়, তাই কোনও কল স্ট্যাক নেই যা শেষ পর্যন্ত ফিরে আসবে বা উপচে পড়বে।
মিলিওন

4
@ মিলিনন এমন একটি ভাষায় যা অপ্টিমাইজেশান সমর্থন করে, লেজ পুনরাবৃত্তি কল স্ট্যাকের আগের কলটিকে প্রতিস্থাপন করে, যেমনটি execআগের প্রক্রিয়াটিকে কীভাবে প্রতিস্থাপন করে। এটিও উপচে পড়বে না।
ইজকাটা

1
@millinon শুধু সুপার গোঁড়া হবে এবং প্রকল্প প্রোগ্রামিং ভাষায় এই আলোচনা আর বাইরে টেনে আনুন, এই অপ্টিমাইজেশান হল একটি ভাষা বৈশিষ্ট্য। এটা তোলে বৈশিষ্ট আপনি একটি লেজ-recursive কল করতে, অনুবাদক / কম্পাইলার যে এর রয়েছে গত স্ট্যাক ফ্রেম পুনরায় ব্যবহার করার জন্য। এটি কারণ স্কীমের কোনও অন্তর্নির্মিত লুপিং কাঠামো নেই, সুতরাং স্কিমের একটি লুপ বাস্তবায়নের একমাত্র উপায় হ'ল পুচ্ছ-পুনরাবৃত্তি করা, এবং আপনি যদি বহুবার লুপ করার চেষ্টা থেকে স্ট্যাক ওভারফ্লো পেয়ে যান তবে এটি স্তন্যপান হবে :)
অর্ডার

2
আপনি যদি পেডেন্ট্রি চান, স্কিমের "টেল কল অপ্টিমাইজেশন" নেই, এতে "যথাযথ লেজ কল" রয়েছে। এটি কোনও অপ্টিমাইজেশন নয়, এটি ভাষা মানের একটি মৌলিক প্রয়োজনীয়তা এবং এটি সরবরাহ করতে ব্যর্থ হওয়ার অনুমতি নেই, সুতরাং "অপ্টিমাইজেশন" (বা এটির পুনরাবৃত্তির সাথে কিছু করার আছে এমন পরামর্শ) খুব নিরুৎসাহিত শব্দ।
লিউশেনকো

28

সি (জিসিসি বিল্টিন সহ - এছাড়াও ঝাঁকুনির সাথে কাজ করে বলে মনে হচ্ছে)

  • সুস্পষ্ট লুপ নেই
  • সুস্পষ্ট গোটোস নেই
  • কোন পুনরাবৃত্তি
  • স্ট্যাকের সাথে কেবল উত্তম পুরানো edমানের জগাখিচুড়ি (বাচ্চারা, তদারকি না করে বাড়িতে এ চেষ্টা করবেন না):
#include <stdio.h>

void *frameloop (void *ret_addr) {
    void **fp;
    void *my_ra = __builtin_return_address(0);

    if (ret_addr) {
        fp = __builtin_frame_address(0);
        if (*fp == my_ra) return (*fp = ret_addr);
        else fp++;
        if (*fp == my_ra) return (*fp = ret_addr);
        else fp++;
        if (*fp == my_ra) return (*fp = ret_addr);
        else fp++;
        if (*fp == my_ra) return (*fp = ret_addr);
        return NULL;
    } else {
        return (my_ra);
    }
}

int main (int argc, char **argv) {
    void *ret_addr;
    int i = 0;

    ret_addr = frameloop(NULL);
    printf("Hello World %d\n", i++);
    if (i < 10) {
        frameloop(ret_addr);
    }
}

ব্যাখ্যা:

  • main()প্রথম কল frameloop(NULL)। এই ক্ষেত্রে __builtin_return_address()ফিরে আসার ঠিকানা (ইন main()) পেতে বিল্টিনটি ব্যবহার করুন frameloop()। আমরা এই ঠিকানাটি ফিরিয়ে দিই।
  • printf() আমরা লুপ করছি তা দেখাতে
  • এখন আমরা frameloop()আগের কলটির জন্য রিটার্ন ঠিকানা দিয়ে কল করব। আমরা বর্তমান রিটার্ন ঠিকানার জন্য স্ট্যাকটি সন্ধান করি এবং এটি খুঁজে পেলে আমরা আগের রিটার্নের ঠিকানাটি স্থির করি।
  • তারপরে আমরা দ্বিতীয় frameloop()কল থেকে ফিরে আসি । তবে যেহেতু উপরের ঠিকানাটি হ্যাক হয়ে গেছে, আমরা সেই বিন্দুতে ফিরে এসেছি main()যেখানে প্রথম কলটি ফিরে আসবে। সুতরাং আমরা একটি লুপ শেষ।

স্ট্যাকের ফেরতের ঠিকানার সন্ধানটি অবশ্যই একটি লুপ হিসাবে পরিষ্কার হতে পারে তবে কোনও লুপ না করার জন্য আমি কয়েকটি পুনরাবৃত্তি তালিকাভুক্ত করেছি।

আউটপুট:

$ CFLAGS=-g make frameloop
cc -g    frameloop.c   -o frameloop
$ ./frameloop 
Hello World 0
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
$ 

2
চমৎকার! আমি ভাবছি কেন সেই ফাংশনগুলি সি স্পেকের অংশ নয়? ;
ব্রায়ান মিন্টন

4
@ ব্রায়ানমিন্টন আসলে setjmp()/ অনুরূপ একটি অনুরূপ জিনিস অর্জন করা উচিত longjmp()। এগুলি সি স্ট্যান্ডার্ডে নয়, স্ট্যান্ডার্ড লাইব্রেরিতে রয়েছে । আমি আজ নিজেই স্ট্যাকটি munging মত অনুভূত যদিও ;-)
ডিজিটাল ট্রমা

@ ব্রায়ানমিন্টন আমার অনুমান কারণ এটি সিপিইউতে রয়েছে যা এটি (হার্ডওয়্যার) প্ল্যাটফর্মকে নির্ভর করে তোলে। এবং যখন স্ট্যাকফ্রেমটি স্বয়ংক্রিয়ভাবে উত্পাদিত হয় তখন এটি ব্যবহার করা বরং বিপজ্জনক, যদি এভি এই জাতীয় কোড সম্পর্কে কান্না করে তবে আমি অবাক হব না। X86 asm সংস্করণগুলির জন্য এটি বা এটি পরীক্ষা করুন ।
PTwr

27

Haskell,

নিম্নলিখিত কোডটিতে কোনও পুনরাবৃত্ত ফাংশন (এমনকি অপ্রত্যক্ষভাবে) নেই, কোনও লুপিং আদিম নেই এবং কোনও বিল্ট-ইন রিকার্সিভ ফাংশন (কেবলমাত্র IOআউটপুট এবং বাঁধাই ব্যবহার করে) কল করে না , তবুও এটি একটি প্রদত্ত ক্রিয়াটি অদ্যাবধি পুনরাবৃত্তি করে:

data Strange a = C (Strange a -> a)

-- Extract a value out of 'Strange'
extract :: Strange a -> a
extract (x@(C x')) = x' x

-- The Y combinator, which allows to express arbitrary recursion
yc :: (a -> a) -> a
yc f =  let fxx = C (\x -> f (extract x))
        in extract fxx

main = yc (putStrLn "Hello world" >>)

ফাংশন extractকিছু কল নয়, ycশুধু কল extractএবং mainমাত্র কল ycএবং putStrLnএবং >>যার রিকার্সিভ নয়।

ব্যাখ্যা: কৌতুক রিকার্সিভ ডাটা টাইপ রয়েছে Strange। এটি একটি পুনরাবৃত্ত তথ্য টাইপ যা নিজেই গ্রাস করে, যা উদাহরণ হিসাবে দেখানো হয়েছে, স্বেচ্ছাচারিত পুনরাবৃত্তির অনুমতি দেয়। প্রথমত, আমরা নির্মাণ করতে পারি extract x, যা x xঅপ্রয়োজনীয় ল্যাম্বদা ক্যালকুলাসে মূলত স্ব-প্রয়োগকে প্রকাশ করে । এবং এটি হিসাবে সংজ্ঞায়িত Y কম্বিনেটর নির্মাণ করতে পারবেন λf.(λx.f(xx))(λx.f(xx))


আপডেট: প্রস্তাবিত হিসাবে, আমি একটি বৈকল্পিক পোস্ট করছি যা টাইপযুক্ত ল্যাম্বডা ক্যালকুলাসে ওয়াই এর সংজ্ঞার নিকটবর্তী :

data Strange a = C (Strange a -> a)

-- | Apply one term to another, removing the constructor.
(#) :: Strange a -> Strange a -> a
(C f) # x = f x
infixl 3 #

-- The Y combinator, which allows to express arbitrary recursion
yc :: (a -> a) -> a
yc f =  C (\x -> f (x # x)) # C (\x -> f (x # x))

main = yc (putStrLn "Hello world" >>)

3
পুনরাবৃত্ত ফাংশনের পরিবর্তে পুনরাবৃত্ত তথ্য স্ট্রাকচার ... চমৎকার।
ApproachingDarknessFish

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

আপনি letবাঁধাই মুছে ফেলতে এবং সংজ্ঞায়িত করতে পারতেন yc f = extract $ C $ f.extract, যেহেতু letযুক্তিযুক্তভাবে একটি ভাষা বৈশিষ্ট্য বন্ডিং করা যায় যা পুনরাবৃত্তির অনুমতি দেয় (শাস্ত্রীয় let x = x in x)। এটি কিছু অক্ষরও হ্রাস করে :)
আর্থ ইঞ্জিন

বা এমনকিyc = extract . C . (.extract)
আর্থ ইঞ্জিন

@ আর্থথাইন সত্য, আমি কেবলমাত্র কাঠামোর মূল সংজ্ঞাটির কাছাকাছি রাখতে চেয়েছিলাম Y
পেটর পুদলক

26

সি ++

নিম্নলিখিতটি 10 ​​থেকে "বিস্ফোরণ বন্ধে" একটি গণনা আউটপুট করে? টেমপ্লেট metaprogramming ব্যবহার।

#include <iostream>

template<int N>
void countdown() {
    std::cout << "T minus " << N << std::endl;
    countdown<N-1>();
}

template<>
void countdown<0>() {
    std::cout << "Blast off!" << std::endl;
}

int main()
{
    countdown<10>();
    return 0;
}

এটি পুনরাবৃত্তির ক্লাসিক উদাহরণের মতো দেখাতে পারে তবে এটি আপনার সংজ্ঞা অনুসারে অন্তত প্রযুক্তিগতভাবে নয়। সংকলকটি দশটি বিভিন্ন ফাংশন উত্পন্ন করবে । countdown<10>"টি বিয়োগ 10" প্রিন্ট করে এবং তারপরে কল করে countdown<9>, এবং আরও কিছু নীচে countdown<0>, যা "ব্লাস্ট অফ!" এবং তারপরে ফিরে আসে। আপনি কোডটি সংকলন করলে পুনরাবৃত্তি ঘটে, তবে এক্সিকিউটেবলের কোনও লুপিং স্ট্রাকচার থাকে না।

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

constexpr int factorial(int n)
{
    return n <= 1 ? 1 : (n * factorial(n-1));
}

আবার এই সত্যিই পুনরাবৃত্তির মত দেখায়, কিন্তু কম্পাইলার আউট প্রসারিত হবে factorial(10)মধ্যে 10*9*8*7*6*5*4*3*2*1, এবং তারপর সম্ভবত একটি ধ্রুবক মান সঙ্গে এটি প্রতিস্থাপন 3628800, তাই এক্সিকিউটেবল কোনো looping বা recursive কোড থাকবে না।


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

@ লুশেনকো হ্যাঁ আমি জানি। তবে তারপরে আবার টেমপ্লেটের উদাহরণটিও একই কাজ করে - সংকলন সময়ে টুরিং-সম্পূর্ণ ভাষায় একটি পুনরাবৃত্ত ফাংশন ব্যবহার করে - কেবলমাত্র পার্থক্যটি হ'ল কনস্টেক্সপ্র এমন একটি ভাষা ব্যবহার করে যা দেখতে অনেক বেশি সি ++ এর মতো দেখায়। সমস্ত উত্তরের সাথে এই নিয়মগুলি মোড় দেয় এবং আমি এটি সম্পর্কে সৎ হয়েছি। constexprবিশেষভাবে টেমপ্লেট রূপান্তরকে অপ্রচলিত করার (কিছু কিছু দিক) তৈরি করার জন্য ডিজাইন করা হয়েছিল, সুতরাং বিষয়টি সম্পর্কিত কোনও পোস্টে এটি অবশ্যই উল্লেখযোগ্য মনে হয়।
নাথানিয়েল

1
+1 টি: &countdown<N-1> != &countdown<N>
থমাস এডিং

21

জাভা

আসুন জাভা ক্লাস লোডার দিয়ে খেলি এবং এটির নিজস্ব পিতামাতা হিসাবে সেট করি:

import java.lang.reflect.Field;

public class Loop {
    public static void main(String[] args) throws Exception {
        System.out.println("Let's loop");
        Field field = ClassLoader.class.getDeclaredField("parent");
        field.setAccessible(true);
        field.set(Loop.class.getClassLoader(), Loop.class.getClassLoader());

    }
}

এই লুপটি আসলে এত শক্তিশালী kill -9এটি আপনাকে থামাতে একটি ব্যবহার করতে হবে :-)

এটি আমার ম্যাকের সিপিইউয়ের 100,1% ব্যবহার করে।

সিপিইউ এর 100,1%

System.outবিকল্প মজাদার আচরণ পরীক্ষা করতে আপনি মূল ফাংশনটির শেষে যেতে চেষ্টা করতে পারেন try


হাঃ হাঃ হাঃ. জাভা নিজে আটকে যাচ্ছে :)
মাস্টারএক্স 244

JVM পুনরাবৃত্ত লোডিং হ্যাক ভালবাসেন।
ইসিয়া মিডোস

20

CSharp

আরও একটি এবং সমানভাবে দুষ্ট ::

public class P{

    class A<B>{
        public static int C<T>(){
            System.Console.WriteLine(typeof(T));
            return C<A<T>>();
        }
    }
    public static void Main(){
        A<P>.C<int>();
    }
}

এটি পুনরাবৃত্তি নয় ... এটি কোড টেম্পলেটগুলির পুনর্নির্মাণ। এটি উপস্থিত হওয়ার সময় আমরা একই পদ্ধতিটিকে কল করছি, রানটাইম ক্রমাগতভাবে নতুন পদ্ধতি তৈরি করছে। আমরা ইনট টাইপ প্যারামিটার ব্যবহার করি, কারণ এটি এটি সম্পূর্ণ নতুন টাইপ তৈরি করতে বাধ্য করে এবং পদ্ধতির প্রতিটি উদাহরণকে একটি নতুন পদ্ধতিতে জিট করতে হয়। এটি কোড ভাগ করে নিতে পারে না এখানে। অবশেষে, আমরা কল স্ট্যাকটি মেরে ফেলি কারণ এটি প্রতিশ্রুতি দিয়েছিল তবে কখনও সরবরাহ করা হয়নি এমন প্রত্যাবর্তনের জন্য অসীম অপেক্ষা করে। অনুরূপ ফ্যাশনে, আমরা এটি আকর্ষণীয় রাখতে আমাদের তৈরি টাইপটি লিখতে থাকি। মূলত আমরা যে সি সি বলি সেগুলি হ'ল এক অবিশ্বাস্যরূপে নতুন পদ্ধতি যা ঠিক একই শরীরের থাকে। এটি C ++ বা D এর মতো ভাষায় সত্যিই সম্ভব নয় যা সংকলন সময়ে তাদের টেম্পলেটগুলি করে। যেহেতু, সি # জেআইটি অত্যন্ত অলস এটি কেবল শেষ সম্ভাব্য মুহুর্তে এই জিনিসটি তৈরি করে। সুতরাং,


14

রেডকোড 94 (মূল যুদ্ধ)

MOV 0, 1

ঠিকানাটির একটিতে ঠিকানা শূন্যের নির্দেশাবলী অনুলিপি করুন। যেহেতু কোর যুদ্ধে সমস্ত ঠিকানা বর্তমান পিসি ঠিকানার সাথে সম্পর্কিত এবং মূলটির আকারের সাথে মডিউল, এটি এক, নন-জাম্প, নির্দেশের একটি অসীম লুপ।

এই প্রোগ্রাম (যোদ্ধা) কে " ইমপ " বলা হয় এবং এটি একে দেডডনি প্রথম প্রকাশ করেছিল।


3
ইমপস মার্চ করবে, আপনার গেটগুলি প্রস্তুত করবে, সেগুলি প্রস্তুত করবে বা আপনাকে পিষ্ট করা হবে।
seequ

আপনার SPL 0, 0; MOV 1, -2সত্যিই প্রস্তুত ।
ওয়াবেরি

ভাল লাগল, আমি আশা করছিলাম যে এটি এখনও পোস্ট করা হয়নি। +1
mbomb007

14

বাণ

আমার ধারণা, এটি কোনও আসল পুনরাবৃত্তির কাজ ছাড়াই পুনরাবৃত্তি করার ধ্রুপদী উপায় way নীচে কোনও ক্রিয়া প্রত্যক্ষ বা অপ্রত্যক্ষভাবে নাম দ্বারা নিজেকে বোঝায় না।

(এটি dartpad.dartlang.org এ চেষ্টা করুন )

// Strict fixpoint operator.
fix(f) => ((x)=>f(x(x))) ((x)=>(v)=>f(x(x))(v));
// Repeat action while it returns true.
void repeat(action) { fix((rep1) => (b) { if (b()) rep1(b); })(action); }

main() {
  int x = 0;
  repeat(() {  
    print(++x);
    return x < 10;
  });
}

6
ওয়াই কম্বিনেটর?
অদিতসু

5
প্রযুক্তিগতভাবে, আমি অনুমান করি এটি জেড কম্বিনেটর কারণ এটি কঠোর ভাষার জন্য। ওয়াই সংযুক্তকারী অসীম উন্মোচন এড়াতে একটি অলস ভাষা প্রয়োজন। পার্থক্য কেবলমাত্র এটির পরবর্তী অংশটি এটা-প্রসারিত।
lrn

12

জাতীয়

খুব আসল নয়, ছোট but 20 অক্ষর।

setInterval(alert,1)

আপনি আসলে মুছে ফেলতে পারেন ,1এবং এটি এখনও কার্যকর হবে
ডেরেক 朕 功夫 功夫

@ ডেরেক 朕 會 I আমি যদি এটি করি তবে আমি ফায়ারফক্সে কেবল একটি সতর্কতা পেয়েছি
x

1
ক্রোমে এটি শেষ প্যারামিটার ছাড়াই কাজ করে। কোডটি যদি কমপক্ষে একটি পরিবেশে কাজ করে তবে বৈধ হিসাবে গণনা করা উচিত।
ডেরেক 朕 會 功夫

3
@ ডেরেক 朕 會 功夫setIntervalযদিও বিবৃতি নয়; এটি কেবল একটি ফাংশন। এটি একটি এক্সপ্রেশন স্টেটমেন্টের অভ্যন্তরে ব্যবহৃত হয় এবং আমরা যদি এক্সপ্রেশন স্টেটমেন্ট ব্যবহার করতে না পারি তবে আমি ঠিক জানি না।
আগ্রহী

1
@ কোরি - আচ্ছা আমি অনুমান করি তবে তা কার্যকর!
ডেরেক 朕 會 功夫

12

সি সিগন্যাল

#include <stdio.h>
#include <signal.h>

int main(void) {
    signal(SIGSEGV, main);
    *(int*)printf("Hello, world!\n") = 0;
    return 0;
}

এই প্রোগ্রামটির আচরণটি স্পষ্টতই অনেক অপরিজ্ঞাত, তবে আজ, আমার কম্পিউটারে এটি "হ্যালো, ওয়ার্ল্ড!" প্রিন্ট করে চলেছে।


11

ইমাস লিস্প

লিস্পের শক্তিশালী নকশাটি প্রদর্শন করার জন্য এটি দুর্দান্ত সময় যেখানে "কোড হ'ল ডেটা এবং ডেটা কোড হয়"। মঞ্জুর, এই উদাহরণগুলি খুব অদক্ষ এবং এটি কখনই আসল প্রসঙ্গে ব্যবহার করা উচিত নয়।

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

পুনরায় এটি: আপনাকে এন বার লুপ করতে দেয়

(defmacro repeat-it (n &rest body)
  "Evaluate BODY N number of times.
Returns the result of the last evaluation of the last expression in BODY."
  (declare (indent defun))
  (cons 'progn (make-list n (cons 'progn body))))

পুনরুক্তি পরীক্ষা:

;; repeat-it test
(progn
  (setq foobar 1)

  (repeat-it 10
    (setq foobar (1+ foobar)))

  ;; assert that we incremented foobar n times
  (assert (= foobar 11)))

পুনরাবৃত্তি-এটা-সঙ্গে-সূচক:

এই ম্যাক্রোর মতো repeat-itতবে এটি সাধারণ লুপিং ম্যাক্রোর মতোই কাজ করে এটি do-timesআপনাকে এমন একটি চিহ্ন নির্দিষ্ট করতে দেয় যা লুপ সূচককে আবদ্ধ করবে। এটি প্রতিটি লুপের শুরুতে সূচক ভেরিয়েবলটি সঠিকভাবে সেট করা আছে কিনা তা নিশ্চিত করতে এটি একটি সম্প্রসারণ সময়ের প্রতীক ব্যবহার করে লুপ বডি চলাকালীন আপনি এর মানটি পরিবর্তন করেন কি না।

(defmacro repeat-it-with-index (var-and-n &rest body)
  "Evaluate BODY N number of times with VAR bound to successive integers from 0 inclusive to n exclusive..
VAR-AND-N should be in the form (VAR N).
Returns the result of the last evaluation of the last expression in BODY."
  (declare (indent defun))
  (let ((fallback-sym (make-symbol "fallback")))
    `(let ((,(first var-and-n) 0)
           (,fallback-sym 0))
       ,(cons 'progn
              (make-list (second var-and-n)
                         `(progn
                            (setq ,(first var-and-n) ,fallback-sym)
                            ,@body
                            (incf ,fallback-sym)))))))

সূচক পরীক্ষার সাথে এটি পুনরাবৃত্তি করুন:

এই পরীক্ষাটি দেখায় যে:

  1. শরীর N বার মূল্যায়ন করে

  2. সূচি ভেরিয়েবল সর্বদা প্রতিটি পুনরাবৃত্তির শুরুতে সঠিকভাবে সেট করা থাকে

  3. "ফ্যালব্যাক" নামের প্রতীকটির মান পরিবর্তন করা সূচকের সাথে গোলযোগ করবে না

;; repeat-it-with-index test
(progn
  ;; first expected index is 0
  (setq expected-index 0)

  ;; start repeating
  (repeat-it-with-index (index 50)
    ;; change the value of a  'fallback' symbol
    (setq fallback (random 10000))
    ;; assert that index is set correctly, and that the changes to
    ;; fallback has no affect on its value
    (assert (= index expected-index))
    ;; change the value of index
    (setq index (+ 100 (random 1000)))
    ;; assert that it has changed
    (assert (not (= index expected-index)))
    ;; increment the expected value
    (incf expected-index))

  ;; assert that the final expected value is n
  (assert (= expected-index 50)))

11

অবিরত ল্যাম্বদা ক্যালকুলাস

λf.(λx.f (x x)) (λx.f (x x))

3
আমি নিশ্চিত নই যে এটিকে পুনরাবৃত্তি হিসাবে গণনা করা হয় বা না, এটির জন্য মৌলিক তাত্ত্বিক ভিত্তি হ'ল ... + 1 যাইহোক।
ফ্লাফি

@ ফ্লুফি এটি নিজেই পুনরাবৃত্ত হয় না, কোনও ফাংশনই তাদের ডাকে না (বিশেষত কারণগুলির নামগুলি নামকরণ করা হয় না)।
গর্বিত হাসেলেলার

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

আপনি একেবারে এমন একটি মেশিন তৈরি করতে পারেন যা ল্যাম্বদা ক্যালকুলাসের ব্যাখ্যা করে। এবং সিনট্যাক্সটি প্রোগ্রামিং ভাষা হিসাবে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ github.com/MaiaVictor/caramel দেখুন
আর্থার বি

10

হাস্কেল, 24 টি অক্ষর

sequence_ (repeat (print "abc"))

বা কনডেন্সড ফর্ম সহ 24 টি অক্ষর with

sequence_$repeat$print"" 

(যদিও পাঠ্যটি পরিবর্তিত হয়েছে, এটি এখনও লুপ হবে - এটি দুটি উদ্ধৃতি এবং একটি নতুন লাইন অনন্তভাবে মুদ্রণ করবে)

ব্যাখ্যা: মুদ্রণ "abc" মূলত একটি i / o ক্রিয়া যা কেবল "abc" প্রিন্ট করে।
পুনরাবৃত্তি হ'ল একটি ফাংশন যা একটি মান x নেয় এবং কেবলমাত্র x এর তৈরি একটি অসীম তালিকা প্রদান করে।
সিকোয়েন্স_ হ'ল একটি ফাংশন যা i / o ক্রিয়াগুলির একটি তালিকা গ্রহণ করে এবং i / o ক্রিয়া প্রদান করে যা ক্রিয়াকলাপের সমস্ত ক্রিয়া করে।

সুতরাং, মূলত, এই প্রোগ্রামটি মুদ্রণ "abc" কমান্ডগুলির একটি অসীম তালিকা তৈরি করে এবং বারবার তাদের সম্পাদন করে। কোন loops বা পুনরাবৃত্তি সঙ্গে।


4
আমি মূলত Clojure একই উত্তর পোস্ট করতে যাচ্ছিলেন, কিন্তু আমার মনে হয়েছে repeatহবে a programming language statement which allows code to be repeatedly executed
seequ

3
fix(print"">>), এতে কোনও স্পষ্টভাবে নামকরণের পুনরাবৃত্তি ফাংশন জড়িত না।
mniip

1
@ রেয়ার আমি জানি না কীভাবে বন্ধ হচ্ছে, তবে হাস্কেলের পুনরাবৃত্তি "প্রোগ্রামিং ভাষার বিবৃতি যা কোডকে বারবার সম্পাদন করার অনুমতি দেয়" নয় - এটি এমন একটি ফাংশন যা অসীম তালিকা তৈরি করে। এটি "ইনট [] আরার = {এক্স, এক্স, এক্স as" এর মতো একটি লুপ; একটি লুপ হয়।
গর্বিত হাসেলেলার

1
হ্যাঁ, তবে অবশ্যই পুনরাবৃত্তি ব্যবহার করে কিছু বাস্তবায়ন করা উচিত, কারণ এটি ছাড়া এটি মূলত অসম্ভব
গর্বিত হাস্কেলার

3
প্রকৃতপক্ষে, এই
কোডটিতে থাকা

10

এএসএম (লিনাক্সের জন্য x86 + I / O)

আপনার শাস্তি উচ্চ স্তরের ভাষাগুলি কতটা লড়াই করবে তা বিবেচ্য নয়, এটি এখনও কেবল লুকানো নির্দেশ নির্দেশিকা ম্যানিপুলেশন হবে। শেষ পর্যন্ত এটি কিছুটা "Goo" (jmp) হবে, যদি না আপনি রানটাইমে লুপটি আনরোল করার জন্য যথেষ্ট বিরক্ত হন।

আপনি আইডিয়নে কোড পরীক্ষা করতে পারেন

আপনি মাত্তিও ইটালিয়া ডস কোডে এই ধারণার আরও পরিমার্জনিত সংস্করণও পরীক্ষা করতে পারেন ।

এটি 0..9 এর স্ট্রিং দিয়ে শুরু হয় এবং এটি A..J এর সাথে প্রতিস্থাপন করে, কোনও সরাসরি জাম্প ব্যবহার করা হয়নি (সুতরাং এটি বলে দিন যে কোনও "গোটো" ঘটেনি), কোনও পুনরুক্তি হয় না।

ঠিকানা গণনার কিছু অপব্যবহারের সাথে কোড সম্ভবত ছোট হতে পারে তবে অনলাইনে সংকলকটিতে কাজ করা বিরক্তিকর তাই আমি এটিকে যেমন রাখব তেমনি রেখে দেব।

মূল অংশ:

mov dl, 'A' ; I refuse to explain this line!
mov ebx, msg ; output array (string)

call rawr   ; lets put address of "rawr" line on stack
rawr: pop eax ; and to variable with it! In same time we are breaking "ret"

add eax, 4 ; pop eax takes 4 bytes of memory, so for sake of stack lets skip it
mov [ebx], dl ; write letter
inc dl ; and proceed to next 
inc ebx
cmp dl, 'J' ; if we are done, simulate return/break by leaving this dangerous area
jg print

push eax ; and now lets abuse "ret" by making "call" by hand
ret

পুরো কোড

section     .text
global      _start                              

_start:

;<core>
mov dl, 'A'
mov ebx, msg

call rawr
rawr: pop eax

add eax, 4
mov [ebx], dl
inc dl
inc ebx
cmp dl, 'J'
jg print

push eax
ret
;</core>

; just some Console.Write()
print:
    mov     edx,len
    mov     ecx,msg
    mov     ebx,1
    mov     eax,4
    int     0x80

    mov     eax,1
    xor     ebx, ebx
    int     0x80

section     .data

msg     db  '0123456789',0xa
len     equ $ - msg

আমি এটিকে কোডগলফ.স্ট্যাকেক্সেঞ্জাওটা / / 34298/11259 এর ডুপ হিসাবে ডাকতে যাচ্ছিলাম , তবে আমি দেখতে পাচ্ছি এটি পূর্ববর্তী উত্তর। +1
ডিজিটাল ট্রমা

@ ডিজিটালট্রামুমা ওহ, আমি দেখতে পাচ্ছি যে কেউ আমার ধারণাটির পুরানো কৌশল তৈরি করেছেন - তবে পরিচালিত কোডের যুগে লোকেরা কীভাবে সত্যই কাজ করে তা ভুলে যায়। (আমি গল্ফিং পছন্দ করি না, প্রায়শই এটি "মায়ের দিকে তাকান! আমি একটি কী চাপিয়ে জিনিসগুলি ঘটতে পারি!")
PTwr

9

সি প্রিপ্রসেসর

একটি স্বল্প চ্যালেঞ্জের সময় আমি যে সামান্য "কৌশল" নিয়ে এসেছি। এখানে কোনও ফাংশন পুনরাবৃত্তি নেই, তবে রয়েছে ... ফাইল পুনরাবৃত্তি?

noloop.c:

#if __INCLUDE_LEVEL__ == 0
int main() 
{
    puts("There is no loop...");
#endif
#if __INCLUDE_LEVEL__ <= 16
    puts(".. but Im in ur loop!");
    #include "noloop.c"
#else
    return 0;
}
#endif

আমি এটি জিসিসি ব্যবহার করে লিখেছি / পরীক্ষা করেছি। স্পষ্টতই আপনার সংকলকটির এই সংকলনের জন্য __INCLUDE_LEVEL__ম্যাক্রো (বা বিকল্পভাবে __COUNTER__কিছু টুইটের সাথে ম্যাক্রো) সমর্থন করা দরকার । এটি কীভাবে কাজ করে তা মোটামুটি স্পষ্ট হওয়া উচিত, তবে মজাদার জন্য কোডটি সংকলন না করে প্রিপ্রসেসর চালান ( -Eজিসিসি সহ পতাকাটি ব্যবহার করুন )।


8

পিএইচপি

এখানে পিএইচপি সহ একটি। কাউন্টারে সর্বোচ্চ reaches সর্বোচ্চ পৌঁছানো পর্যন্ত একই ফাইলটি অন্তর্ভুক্ত করে লুপগুলি:

<?php
if (!isset($i))
    $i = 0;        // Initialize $i with 0
$max = 10;         // Target value

// Loop body here
echo "Iteration $i <br>\n";

$i++;               // Increase $i by one on every iteration

if ($i == $max)
    die('done');    // When $i reaches $max, end the script
include(__FILE__);  // Proceed with the loop
?>

একটি লুপ জন্য একই:

<?php
for ($i = 0; $i < 10; $i++) {
    echo "Iteration $i <br>\n";
}
die('done');
?>

ডার্ন, এই হিসাবে পুনরাবৃত্তি হিসাবে গণনা, তাই না?
পিচান

এটি এমনটি ভাবেন না - @ নাথানিয়েলের উদাহরণের সাথে মিলটি আসে: প্রিপ্রসেসর এই ফাইলগুলি অন্তর্ভুক্ত করবে যা পরে এক সাথে মূল্যায়ন করা হয়।
eithed

@ পিচান আমি বলব এটি লুপ উন্মুক্তকরণের বেশি, কারণ আপনি মেমরিতে কোডের অনুলিপিগুলি শেষ করেন।
PTwr

আমি আজই প্রশ্নটি দেখেছি এবং প্রায় অভিন্ন কোড নিয়ে এসেছি। আমার জন্য অনেক দেরী!
TecBrat

হয় header("Location: .?x=".$_GET['x']+1);recursion হিসাবে গণনা করা হয়েছে?
চার্লি 21

8

পাইথন

নিম্নলিখিত কোডটিতে কোনও পুনরাবৃত্ত ফাংশন (প্রত্যক্ষ বা অপ্রত্যক্ষ) নেই, কোনও লুপিং আদিম নেই এবং কোনও বিল্ট-ইন ফাংশন কল করে না (ব্যতীত print):

def z(f):
    g = lambda x: lambda w: f(lambda v: (x(x))(v), w)
    return g(g)

if __name__ == "__main__":
    def msg(rec, n):
        if (n > 0):
            print "Hello world!"
            rec(n - 1)
    z(msg)(7)

মুদ্রণ "হ্যালো ওয়ার্ল্ড!" একটি প্রদত্ত সংখ্যা।

ব্যাখ্যা: ফাংশনটি কঠোর জেড ফিক্সড-পয়েন্ট সমন্বয়কারীকেz প্রয়োগ করে , যা কোনও পুনরাবৃত্ত আলগোরিদিম প্রকাশ করতে দেয় (যা পুনরাবৃত্তভাবে সংজ্ঞায়িত করা হয় না)।


আমি gঅনেক অপ্রত্যক্ষভাবে পুনরাবৃত্তি কল করব ।
seequ

@ কেন রেয়ার? আপনার যুক্তি কি? কি আবার gকল যে কল g? অবশ্যই কৌশলটি স্ব-প্রয়োগ g(g), তবে এর সাথে কোনও পুনরাবৃত্তি জড়িত নেই। আপনি gযদি না দেখে থাকেন তবে কি সত্যিই অপ্রত্যক্ষভাবে পুনরাবৃত্তি বলবেন g(g)? ল্যাম্বদা ক্যালকুলাসের মতো পুনরাবৃত্ত সংজ্ঞাগুলি অনুমোদন করে না এমন ভাষাগুলিতে এটি কীভাবে করা যায় এটি স্ট্যান্ডার্ড উপায়।
পেটর পুদলক

আপনি gযুক্তি হিসাবে দিন xএবং তারপর কল x(x)
seequ

2
@ দ্যারেয়ার একটি ফাংশন (বা ফাংশনগুলির একটি সেট) এটি কীভাবে ব্যবহার করা হয় তা দ্বারা পুনরাবৃত্ত বা অ-পুনরাবৃত্ত হয় না, এটি ঠিক তার সংজ্ঞা দ্বারা নির্ধারিত হয়।
পেটর পুদলক

1
সমস্ত উত্তর একরকমভাবে বা অন্যভাবে প্রতারণা করে: সর্বদা পুনরাবৃত্তি হয় বা কোথাও একটি লুপ থাকে , যদি উত্তর না হয় তবে কোডটিতে উত্তরটি অনুরোধ করে। এই এক যেভাবে প্রতারণা করে আমি তা পছন্দ করি।
ওয়েন কনরাড

8

z80 মেশিন কোড

এমন পরিবেশে যেখানে আপনি প্রতিটি ঠিকানায় এক্সিকিউট করতে পারেন এবং যেকোন জায়গায় রমকে ম্যাপ করতে পারেন, পুরো ঠিকানা জায়গাতে শূন্যে ভরা 64৪ কেবি রমকে ম্যাপ করুন।

এটি কি করে: কিছুই না। বারংবার.

এটি কীভাবে কাজ করে: প্রসেসর কার্যকর করা শুরু করবে, বাইটটি 00একটি nopনির্দেশনা, তাই এটি ঠিক চালিয়ে যাবে, ঠিকানায় পৌঁছে যাবে, আপনার কাছে $ffffমোড়ানো হবে $0000এবং nopযতক্ষণ না আপনি এটি পুনরায় সেট করবেন ততক্ষণ চালানো চালিয়ে যাওয়া চালিয়ে যাবে।

এটিকে কিছুটা আকর্ষণীয় করে তুলতে, অন্য কিছু মান দিয়ে মেমরিটি পূরণ করুন (নিয়ন্ত্রণ প্রবাহের নির্দেশাবলী এড়াতে সাবধান হন)।


আপনি শূন্যের সাথে স্মৃতিটি পূরণ করতে এবং সেখানে কোনও জায়গায় একটি বাস্তব প্রোগ্রাম রাখতে পারেন।
seequ

সুতরাং আপনি একটি 64 কে প্রোগ্রাম রাখতে পারেন, কোন শাখা ছাড়াই, এবং এটি কেবল বারবার কার্যকর করা হবে?
বিল উডগার

@ বিলউইডগার আপনি করতে পারেন, বিশেষত যদি আপনার প্ল্যাটফর্মে কোনও বাধা না থাকে (বা
কোনওটি

মজাদার
রকমের

8

পার্ল-Regex

(q x x x 10) =~ /(?{ print "hello\n" })(?!)/;

ডেমো

বা এটি হিসাবে চেষ্টা করুন:

perl -e '(q x x x 10) =~ /(?{ print "hello\n" })(?!)/;'

(?!)মেলে না। সুতরাং রেজেক্স ইঞ্জিনটি ম্যাচের স্ট্রিংয়ের প্রতিটি শূন্য প্রস্থের অবস্থানের সাথে মেলে চেষ্টা করে ।

(q x x x 10)হিসাবে একই (" " x 10)পুনরাবৃত্তি - spaceদশ বার।

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


6

টি-এসকিউএল -12

print 1
GO 9

আসলে স্কিল সার্ভার ম্যানেজমেন্ট স্টুডিওর এক গৌরব আরও। যান একটি স্ক্রিপ্ট বিভাজক এবং টি-এসকিউএল ভাষার অংশ নয়। আপনি যদি একটি নম্বর অনুসরণ করে জিও নির্দিষ্ট করেন তবে এটি ব্লকটি বহুবার কার্যকর করবে।


1
আমি প্রায় প্রতিদিনই টি-এসকিউএল ব্যবহার করি এবং কোনও ধারণা নেই যে আপনি জিও দিয়ে এটি করতে পারবেন। +1
কাইলিনপি

প্রযুক্তিগতভাবে, এটি টি-এসকিউএল নয়। GOআসলে একটি এসএসএমএস নির্দেশিকা, যার কারণে আপনি এটি টি-এসকিউএল স্ক্রিপ্টযুক্ত বস্তুগুলিতে রাখতে পারবেন না, যেমন কোনও সঞ্চিত প্রক্রিয়া বলুন।
আরবেরি ইয়ং

হ্যাঁ, আমি আমার স্পেলার মন্তব্যটিতে এটি যুক্ত করেছি। আমি sqlCmd ব্যবহার করা খুব বেশি প্রতারণামূলক হতে হবে।
মাইকেল বি

6

সি শার্প

Uint.MaxValue থেকে 0 পর্যন্ত সমস্ত পূর্ণসংখ্যা মুদ্রণ করে।

   class Program
   {
      public static void Main()
      {
          uint max = uint.MaxValue;
          SuperWriteLine(ref max);
          Console.WriteLine(0);
      }

      static void SuperWriteLine(ref uint num)
      {
          if ((num & (1 << 31)) > 0) { WriteLine32(ref num); }
          if ((num & (1 << 30)) > 0) { WriteLine31(ref num); }
          if ((num & (1 << 29)) > 0) { WriteLine30(ref num); }
          if ((num & (1 << 28)) > 0) { WriteLine29(ref num); }
          if ((num & (1 << 27)) > 0) { WriteLine28(ref num); }
          if ((num & (1 << 26)) > 0) { WriteLine27(ref num); }
          if ((num & (1 << 25)) > 0) { WriteLine26(ref num); }
          if ((num & (1 << 24)) > 0) { WriteLine25(ref num); }
          if ((num & (1 << 23)) > 0) { WriteLine24(ref num); }
          if ((num & (1 << 22)) > 0) { WriteLine23(ref num); }
          if ((num & (1 << 21)) > 0) { WriteLine22(ref num); }
          if ((num & (1 << 20)) > 0) { WriteLine21(ref num); }
          if ((num & (1 << 19)) > 0) { WriteLine20(ref num); }
          if ((num & (1 << 18)) > 0) { WriteLine19(ref num); }
          if ((num & (1 << 17)) > 0) { WriteLine18(ref num); }
          if ((num & (1 << 16)) > 0) { WriteLine17(ref num); }
          if ((num & (1 << 15)) > 0) { WriteLine16(ref num); }
          if ((num & (1 << 14)) > 0) { WriteLine15(ref num); }
          if ((num & (1 << 13)) > 0) { WriteLine14(ref num); }
          if ((num & (1 << 12)) > 0) { WriteLine13(ref num); }
          if ((num & (1 << 11)) > 0) { WriteLine12(ref num); }
          if ((num & (1 << 10)) > 0) { WriteLine11(ref num); }
          if ((num & (1 << 9)) > 0) { WriteLine10(ref num); }
          if ((num & (1 << 8)) > 0) { WriteLine09(ref num); }
          if ((num & (1 << 7)) > 0) { WriteLine08(ref num); }
          if ((num & (1 << 6)) > 0) { WriteLine07(ref num); }
          if ((num & (1 << 5)) > 0) { WriteLine06(ref num); }
          if ((num & (1 << 4)) > 0) { WriteLine05(ref num); }
          if ((num & (1 << 3)) > 0) { WriteLine04(ref num); }
          if ((num & (1 << 2)) > 0) { WriteLine03(ref num); }
          if ((num & (1 <<  1)) > 0) { WriteLine02(ref num); }
          if ((num & (1 <<  0)) > 0) { WriteLine01(ref num); }
      }

      private static void WriteLine32(ref uint num) { WriteLine31(ref num); WriteLine31(ref num); }
      private static void WriteLine31(ref uint num) { WriteLine30(ref num); WriteLine30(ref num); }
      private static void WriteLine30(ref uint num) { WriteLine29(ref num); WriteLine29(ref num); }
      private static void WriteLine29(ref uint num) { WriteLine28(ref num); WriteLine28(ref num); }
      private static void WriteLine28(ref uint num) { WriteLine27(ref num); WriteLine27(ref num); }
      private static void WriteLine27(ref uint num) { WriteLine26(ref num); WriteLine26(ref num); }
      private static void WriteLine26(ref uint num) { WriteLine25(ref num); WriteLine25(ref num); }
      private static void WriteLine25(ref uint num) { WriteLine24(ref num); WriteLine24(ref num); }
      private static void WriteLine24(ref uint num) { WriteLine23(ref num); WriteLine23(ref num); }
      private static void WriteLine23(ref uint num) { WriteLine22(ref num); WriteLine22(ref num); }
      private static void WriteLine22(ref uint num) { WriteLine21(ref num); WriteLine21(ref num); }
      private static void WriteLine21(ref uint num) { WriteLine20(ref num); WriteLine20(ref num); }
      private static void WriteLine20(ref uint num) { WriteLine19(ref num); WriteLine19(ref num); }
      private static void WriteLine19(ref uint num) { WriteLine18(ref num); WriteLine18(ref num); }
      private static void WriteLine18(ref uint num) { WriteLine17(ref num); WriteLine17(ref num); }
      private static void WriteLine17(ref uint num) { WriteLine16(ref num); WriteLine16(ref num); }
      private static void WriteLine16(ref uint num) { WriteLine15(ref num); WriteLine15(ref num); }
      private static void WriteLine15(ref uint num) { WriteLine14(ref num); WriteLine14(ref num); }
      private static void WriteLine14(ref uint num) { WriteLine13(ref num); WriteLine13(ref num); }
      private static void WriteLine13(ref uint num) { WriteLine12(ref num); WriteLine12(ref num); }
      private static void WriteLine12(ref uint num) { WriteLine11(ref num); WriteLine11(ref num); }
      private static void WriteLine11(ref uint num) { WriteLine10(ref num); WriteLine10(ref num); }
      private static void WriteLine10(ref uint num) { WriteLine09(ref num); WriteLine09(ref num); }
      private static void WriteLine09(ref uint num) { WriteLine08(ref num); WriteLine08(ref num); }
      private static void WriteLine08(ref uint num) { WriteLine07(ref num); WriteLine07(ref num); }
      private static void WriteLine07(ref uint num) { WriteLine06(ref num); WriteLine06(ref num); }
      private static void WriteLine06(ref uint num) { WriteLine05(ref num); WriteLine05(ref num); }
      private static void WriteLine05(ref uint num) { WriteLine04(ref num); WriteLine04(ref num); }
      private static void WriteLine04(ref uint num) { WriteLine03(ref num); WriteLine03(ref num); }
      private static void WriteLine03(ref uint num) { WriteLine02(ref num); WriteLine02(ref num); }
      private static void WriteLine02(ref uint num) { WriteLine01(ref num); WriteLine01(ref num); }
      private static void WriteLine01(ref uint num) { Console.WriteLine(num--); }
   }

1
আমি জানি না এটি গণনা করে কিনা। আপনি স্পষ্টভাবে WritLine01 ইন্ট.ম্যাক্সভ্যালু সময়কে কল করছেন। এটি মাত্র বিশাল পরিমাণ কলস্ট্যাকের পিছনে বিস্ফোরিত হয়েছিল।
মাইকেল বি

কিভাবে এটি গণনা হয় না? কোনও লুপ নেই এবং পুনরাবৃত্তি নেই।
LVBen

1
এছাড়াও, কল স্ট্যাকটি কোথাও বড় আকারের কাছাকাছি নয় যদি না আপনি সম্ভবত 32 টি কলকে গুরুতর বলে মনে করেন।
LVBen

1
4294967296 বারের পরিবর্তে কেন কেবল 32 বার?
এলভিবেন

4
@ j72 আমি যদি কখনও ওপেন সোর্স প্রকল্পে কাজ করি যেখানে আমি লুপগুলি বা পুনরাবৃত্তি ব্যবহার করতে পারি না, তবে আমি সম্পূর্ণরূপে কোডটির অবদান রাখছি!
এলভিবেন

6

জেএস (ব্রাউজারে)

এ কেমন?

document.write(new Date());
location = location;

বর্তমান সময় মুদ্রণ করে পৃষ্ঠাটি পুনরায় লোড করে।


ওহ অঙ্কুর. আমি ঠিক একই বেসিক ধারণাটি নিয়ে একটি উত্তর পোস্ট করেছি। আমি "জাভাস্ক্রিপ্ট" বা এইচটিএমএল ট্যাগ দেখাচ্ছে এমন কোনও কিছুর জন্য পৃষ্ঠাটি স্ক্যান করছিলাম। আমি মনে করি আমি আমার উত্তরটি ছেড়ে দিতে পারি, কারণ এটি কোণার ক্ষেত্রে পরিচালনা করে যেখানে অবস্থানটিতে "#" থাকে। যাইহোক, +1।
নিশিত

ফায়ারফক্স 30 এ:[Exception... "The operation is insecure." code: "18" nsresult: "0x80530012 (SecurityError)" location: "<unknown>"]
অ্যালেক্স

@ অ্যালেক্সারিনোল্ডস হু, অদ্ভুত। খনি এফএফ 30 এ
ঠিকঠাক

আমি কেবল আপনার কোডটিতে অনুলিপি করেছি এবং এটি লিখিত হয়েছে বলে আটকানো হয়েছে। এটি কাজ করে না। সম্ভবত আপনি এই কাজটি করতে কিছু বিশেষ সুরক্ষা পছন্দগুলি সক্ষম করেছেন?
অ্যালেক্স

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