প্রিন্টগুলি পিছনে চালিত করুন


102

আপনার কাজটি ক্রমটিকে বিপরীত করা যাতে কিছুকে printsমৃত্যুদন্ড কার্যকর করা হয়।


স্পেস:
আপনার কোডটি এই ফর্মটিতে থাকবে:

//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code

আপনি করতে হবে print(অথবা echo, অথবা writeযারা স্ট্রিং, বা সমতুল্য) চতুর্থ থেকে প্রথম করতে।

  • আপনার প্রোগ্রামের কোন লাইনগুলি printস্ট্রিংগুলি আবশ্যক তা আপনি সিদ্ধান্ত নিতে পারেন তবে সেগুলি অবশ্যই সংলগ্ন হতে হবে ;

  • প্রতিটি লাইনে একটি মাত্র থাকতে পারে এবং দৈর্ঘ্যে 60 বাইটprint অতিক্রম করতে পারে না ;

  • যেহেতু এটি , তাই সৃজনশীল হোন এবং কেবল একটি gotoবা একটি সহজ লেখার জন্য এড়িয়ে চলুনfor(i){if(i=4)print"Line1";if(i=3)...}

  • 2 সপ্তাহের মধ্যে সর্বাধিক উত্সাহিত উত্তর এটি জিতবে।

  • আপনার আউটপুট হবে হতে Line4 Line3 Line2 Line1 বা Line4Line3Line2Line1 বা Line4\nLine3\nLine2\nLine1 (যেখানে \nএকটি newline), এবং এটি শুধুমাত্র ঐ নির্বাহ দ্বারা উত্পন্ন করা আবশ্যক printsপিছন।

শুভ কোডিং!

আপডেট: প্রতিযোগিতা শেষ! সবাইকে ধন্যবাদ :)


15
আরবি কি গণনা করে? :)

আপনি যদি
চশমাগুলি

দ্রুত একটি নিয়ম স্পষ্ট করতে চেয়েছিল ... আপনি যখন "প্রত্যেকের মতো একটি মাত্র মুদ্রণ থাকতে পারে" বলতে চান, আপনি কোড ফাইলে একটি পাঠ্য লাইন বা একটি এলওসি / বিবৃতি বোঝাতে চান?
রুসলান

কোডের প্রতিটি লাইনে কেবল একটি মুদ্রণ থাকতে পারে
Vereos

এটির কি কোনও কোড পর্যালোচনা পাস করতে হবে - উত্পাদন কোডের জন্য উপযুক্ত?
ল্যান্স

উত্তর:


183

কমোডোর 64 বেসিক

40 print "Line 1"
30 print "Line 2"
20 print "Line 3"
10 print "Line 4"

83
আমি এখনও কখনই বুঝতে পারি না কেন লাইন নম্বরগুলির প্রয়োজনীয়তা রয়েছে।
ugoren

3
আমি প্রস্তাব দিতে যাচ্ছি, ক্যারেক্টার রম ($ D000) কে র‌্যামে ($ 3000) অনুলিপি করছি, "1" <-> "4" এবং "2" <-> "3" এর জন্য অক্ষর বিটম্যাপগুলি অদলবদল করুন, তারপরে প্রোগ্রামটি সামনের দিকে চালিত করুন । এটি কিউটার
লাকাটা

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

108

পিএইচপি

অপব্যবহারের প্রাধান্য ... :-)

!print "Line1\n".
!print "Line2\n".
!print "Line3\n".
!print "Line4\n";

3
পিএইচপি-তে, printভাব হিসাবে ব্যবহৃত হতে পারে, যেমন এটি পার্ল হতে পারে, এর ফিরতি মান সর্বদা থাকে 1!1প্রদান করে bool(false), যখন স্ট্রিং হিসাবে টাইপ করা হয় খালি স্ট্রিংটি দেয়। পিএইচপি এর জন্য একটি আরো সঠিক সীমাবদ্ধতা প্রয়োজন হতে পারে echoবদলে print; উপরেরটি সত্যই কেবল একটি বিবৃতি।
primo

1
@ কুলদীপ.কম্বুজ এটি ঠিক সেভাবেই গ্রুপবদ্ধ করেছে: print ("Line 1". !print ("Line2". !print ("Line 3". !print "Line4")));- একটি মুদ্রণ বিবরণের ডানদিকে থাকা সমস্ত কিছুই এর অংশ is
bwebi

4
মনে হচ্ছে প্রতিটি সংস্করণ 3v4l.org/dpSpK এ খুব চিত্তাকর্ষক!
আইজবার্গ

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

1
@ স্পারবোটা পড়ার নিয়মগুলি শক্ত। সংশোধন করা হয়েছে। আপনাকে ধন্যবাদ :-)
bwoebi

76

সি

অপরিবর্তিত আচরণই সবচেয়ে উত্তেজনাপূর্ণ ধরনের আচরণ!

f(){}
main()
{
   f(printf("Line 1\n"), 
     printf("Line 2\n"), 
     printf("Line 3\n"), 
     printf("Line 4\n"));
}

আপনার সংকলক, লিঙ্কার, অপারেটিং সিস্টেম এবং প্রসেসরের উপর নির্ভর করে প্রকৃত আউটপুট পরিবর্তিত হতে পারে :)


22
এটি আসলে কীভাবে কাজ করে তা আমার সম্পূর্ণ ধারণা নেই, +1।
সুইভ

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

@ গুন্টরামব্লহম যেমন বলেছে, মূল ধারণাটি হ'ল সি ফাংশন প্যারামিটারগুলি প্রায়শই (তবে সর্বদা নয়) ডান থেকে বাম ক্রমে স্ট্যাকের উপরে চাপ দেওয়া হয়। যেহেতু এগুলি ফাংশন কল, ফাংশনগুলি সম্ভবত (তবে প্রয়োজনীয় নয়) ডান থেকে বাম থেকেও ডাকা হয়। এগুলি যদিও সি স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত করা হয়নি, সুতরাং এটি জিসিসি 4-তে সঠিক ফলাফল দেওয়ার সময় এটি সম্পূর্ণরূপে সংকলক এবং কলিং কনভেনশনের উপর নির্ভর করে যা ঘটেছিল।
নিক 21

1
@fluffy: হায়রে, এটা অন্য উপায় কাছাকাছি হল: সি নেই না , ক্রম পয়েন্ট হিসাবে arglist কমা আচরণ অসদৃশ অন্যান্য কমা।
উইলিয়াম টটল্যান্ড

6
@ উইলিহ্যাম টটল্যান্ড ভাল তবে আমি এমন কিছু কোড সম্পর্কে জানি যা আমার সত্যিকার অর্থেই ঠিক করা দরকার ... ধন্যবাদ
ফ্লফি

74

জাভা

প্রতিবিম্ব ব্যবহার করে

public class ReversePrint {
    public static void main(String[]a) {
        System.out.println("Line1");
        System.out.println("Line2");
        System.out.println("Line3");
        System.out.println("Line4");
    }
    static {
        try{
            Field f=String.class.getDeclaredField("value");
            f.setAccessible(true);
            f.set("Line1","Line4".toCharArray());
            f.set("Line2","Line3".toCharArray());
            f.set("Line3","Line2 ".trim().toCharArray());
            f.set("Line4","Line1 ".trim().toCharArray());
        }catch(Exception e){}
    }
}

আউটপুট:

Line4
Line3
Line2
Line1

এই কাজগুলি কেন এখানে পাওয়া যায় তার একটি ব্যাখ্যা ।


61
ভয়ঙ্কর, ভয়াবহ, ভয়ানক. আমি এটা পছন্দ করি.
রজার লিন্ডসে

4
+1 লোকেরা সবসময় বলে থাকে যে জাভা স্ট্রিংগুলি পরিবর্তনযোগ্য নয়। আপনি প্রমাণ করেছেন যে তারা তা নয়।
ভিক্টর স্টাফুসা

16
এটি আনন্দদায়কভাবে অদ্ভুত, তবে বিপরীত মৃত্যুদণ্ডের প্রয়োজনীয়তা পূরণ হয় না।
থরবজর্ন রাভন অ্যান্ডারসন

4
@ থরবজর্ন রাভানঅ্যান্ডারসেন শ্হহ্ ... আপনার এগুলি তাদের বলার কথা নয়। : পি
ড্যানি

5
@Victor জাভাতে স্ট্রিং হয় অপরিবর্তনীয়। পুরো স্ট্যাকওভারফ্লোতে, "আমার মনে হয়েছিল স্ট্রিংগুলি অপরিবর্তনীয় ছিল" এর মতো প্রশ্ন রয়েছে। তারা প্রতিবিম্ব ব্যবহার করে এবং এটি তাদের অপরিবর্তনীয় বলে মনে করে। জাওয়ার প্রতিশ্রুতিগুলি এইভাবে কাজ করে: "আপনি যদি আমাদের জিনিসগুলি / ক্লাসগুলি আমাদের ইচ্ছা মতো ব্যবহার করেন তবে আমরা প্রতিশ্রুতি দিই যে আমাদের দাবিগুলি সঠিক।" প্রতিবিম্বটি ক্লাসগুলি যেভাবে ব্যবহারের উদ্দেশ্যে তা নয়।
জাস্টিন

70

সি (এবং পাইথনের বাছাই)

নতুন সংস্করণ, প্রশ্নের ফর্ম্যাটকে পুরোপুরি ফিট করার জন্য একটি ম্যাক্রো ব্যবহার করে। কুইকুনাক্সের মন্তব্যের পরে, আমি returnএটি আরও সুন্দর করে যোগ করেছি ।

এটি পাইথনেও কাজ করে তবে এটি সঠিক ক্রমে মুদ্রণ করে।

#define print"\n",printf(
#define return"\n"))));}
#define def main(){0?

def main():
    print "Line 1"
    print "Line 2"
    print "Line 3"
    print "Line 4"
    return

main();

আসল সংস্করণ - ম্যাক্রো প্রতিস্থাপনের পরে দু'টি ব্যবহারিকভাবে একই

main(){
    printf("Line 1\n",
    printf("Line 2\n",
    printf("Line 3\n",
    printf("Line 4\n",
    0))));
}

1
ম্যাক্রোর জন্য +1। অন্য একটি অন্তর্ভুক্ত হতে পারে; এর মতো কিছু #define } 0))));(আমি জানি না ঠিক কীভাবে ম্যাক্রোস সি তে কাজ করে)। এই পদ্ধতিতে আপনি কেবল মুখ্য পদ্ধতিতে মুদ্রণ বিবৃতি পেতে পারেন, অন্য কিছু নয়।
জাস্টিন

@ কুইনকুনস, আপনি সংজ্ঞা দিতে পারবেন না }, তবে আপনি returnএখন সংজ্ঞা দিতে পারবেন। এটি এখন প্রায় একটি বহুভুজ - printবাক্য গঠনটি বেশ কয়েকটি স্ক্রিপ্ট ভাষায় কাজ করে, #defineপ্রায়শই একটি মন্তব্য হয়, তবে main(){..}আমি যে ভাষায় খুঁজে পেতাম তাতে কোনও কাজ করে না।
উগোরেন

1
@ কুইনকুনস, এবং এখন এটি সত্যিই একটি বহুভুজ।
উগোরেন

প্রথম দুটি স্থান ফাঁকা ছাড়াই কীভাবে কাজ করবে? এটি printদ্বারা প্রতিস্থাপন করা হবে "\n",printf(?
ফুকলিভ

@ LưuVĩnhPhúc - স্থানটি alচ্ছিক। এটি যেমন আপনি বলছেন প্রতিস্থাপন করে।
ugoren

61

ES6 (পিছনের মোড ব্যবহার করে;)

বাহ, দেখে মনে হচ্ছে ECMAScript এর ডিজাইনারদের যখন তারা অনুমানের পিছনের দিকের অংশটি তৈরি করেছিল তখন কিছু অবিশ্বাস্য দূরদৃষ্টি ছিল :

// activate backwards mode:
'use backwardsˈ; \* mode backwards in now *\
code of lines some \
\*code*\ "Line1" print \*code*\
\*code*\ "Line2" print \*code*\
\*code*\ "Line3" print \*code*\
\*code*\ "Line4" print \*code*\
code of lines some \
⁏ˈforwards useˈ // back to ˈnormal'.

// So simple! No need to do anything this complicated:
split('"').reduce((L,o,l)=>(l%2?o:'')+L,'')

আউটপুট (মূল্যায়ন, সত্যই):

"Line4Line3Line2Line1"

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

চূড়ান্ত দ্রষ্টব্য: আসলে, পিছনের দিকের মোড নেই। তবে এটি এখনও একটি বৈধ স্ক্রিপ্ট যা ফায়ারফক্সে চলছে (পুরো জিনিসটি অনুলিপি করুন)। : ডি


ES6 "শিথিল মোড"

বোনাস : এখানে একটি আপডেট সংস্করণ রয়েছে যা পিছনের মোডটি ব্যবহার করে না, তবে সদ্য-নির্দিষ্ট "ল্যাক্স মোড" ব্যবহার করে যেখানে জেএস ইঞ্জিন কোনও নির্দিষ্ট জেএস সিনট্যাক্সের আনুগত্য ছাড়াই কোডটি কী করণীয় তা অনুমান করার চেষ্টা করবে মাত্র ( মূলত কঠোর মোডের বিরোধী):

// activate "lax" mode:
`use laxˋ; // also works: ˋuse relaxˋ, ˋuse guessingˋ, ˋuse whatevsˋ, etc.
//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code
ˋuse normalˋ; // same as ˋuse default`.

// Again, compare to inferior, illegible "traditional" ES6:
split('"').reduce((L,o,l)=>(l%2?o:'')+L,'')

দয়া করে নোট করুন যে " ল্যাক্স মোড " বর্তমানে কেবল ফায়ারফক্স> = 34. এ উপলব্ধ;


7
আপনার পোস্ট করা সমস্ত 3 টি লিঙ্ক 404- এ নিয়ে যাচ্ছে। এই জাতীয় রসিকতা কি?
manatwork

8
আহ। আমি এখন দেখি. সিনট্যাক্স হাইলাইটারটি এখানে আপনার সহযোগী ছিল।
manatwork

12
এটি একটি কম্বো জনপ্রিয়তা-প্রতিযোগিতা এবং কোড-ট্রোলিং , না? :) আমি এটা ভালোবাসি.
চার্লস

8
এটি জাভাস্ক্রিপ্টের অসাধারণ অপব্যবহার। আমি এটা পছন্দ করি.
সেয়েরিয়া

2
নিনজা। সুউ লুকোচুরি ....
ডেভিড কনরাড


56

চুনি

print 'Line1' unless
print 'Line2' unless
print 'Line3' unless
print 'Line4'

সম্পাদনা করুন:

def method_missing(meth,*)
  puts meth.to_s.sub('print'){}
end

printLine1(
printLine2(
printLine3(
printLine4)))

38
আমি এটি পছন্দ করি কারণ এটিতে মিথ রয়েছে
রায়

2
আপনার যদি দুটি সমাধান থাকে তবে আপনি স্বাভাবিকভাবে দুটি উত্তর পোস্ট করবেন না?
দ্য কনস্ট্রাক্টর

3
rubyকোড ব্লক সহ এটি কি আরও দেখতে পাবেন না ? পেস্টবিন.
com

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

@ মানাত ওয়ার্ক সুন্দর! method_missingযদিও আমি মনে করি নিজেই রুবি-ইশ খুব সুন্দর।
হিস্টোক্র্যাট

49

পিএইচপি

আমি জানি, এটা পাগলামি ...

goto d;
a: print "Line1\n"; goto end;
b: print "Line2\n"; goto a;
c: print "Line3\n"; goto b;
d: print "Line4\n"; goto c;
end: exit;

66
যে শব্দ আপনি শুনছেন তা হ'ল ডিজকસ્ત્રা তাঁর কবরে ঘুরছে। :-)
গ্যারেথ


22
@ দ্য কনস্ট্রাক্টর সৃজনশীল অংশটি পিএইচপি ; তে গোটো ব্যবহার করছে ;)
নিকিসি

1
তাই জয়ের পূর্ণ।
নিক টি

41

Haskell,

প্রোগ্রামটি এখন ডান থেকে বাম ফাংশন রচনার মতো দেখাচ্ছে বলে এটি প্রায় মুশকিল Has যদি ফাংশনটি মুদ্রণ না করা হয় তবে অপারেটরের ঘোষণাপত্রের (কার্যকর) মূল্য ফেরত দেবে এমন কিছু হ'ল অপ্রয়োজনীয় এবং কোডটি এমন কিছু হবে যা আপনি লাইব্রেরিতে দেখবেন।

a << b = (const a =<< b)

main = putStrLn "Line1"
    << putStrLn "Line2"
    << putStrLn "Line3"
    << putStrLn "Line4"

5
টিপ:(<<) = flip (>>)
বার্গি

@ বেরগি এটি লেখার অন্য একটি উপায়, আমি অনুমান করি যে এটি আরও একটু মার্জিত। জিনিসটি
উপস্থাপিত

@ শিওনা: হ্যাঁ, এটি অবাক করার মতো বিষয়। সুখের বিষয়, আমাদের দুটি প্রয়োগকারীদের জন্য অপারেটর রয়েছে: <*এবং *>
টিখন জেলভিস

@ টিখন জেলভিস আসলে, <*আবেদনকারী অপারেটর এর চেয়ে পৃথক <<: a <* bসমতুল্য do x<-a;b;return x, অর্থাত্ এটি aপ্রথম কার্যকর হয়
গর্বিত হাসেলেলার

40

পার্ল

use threads;

$a=threads->create(sub {sleep(5); print("Line1\n");});
$b=threads->create(sub {sleep(4); print("Line2\n");});
$c=threads->create(sub {sleep(3); print("Line3\n");});
$d=threads->create(sub {sleep(2); print("Line4\n");});

$a->join();
$b->join();
$c->join();
$d->join();

22
এটি তাত্ত্বিকভাবে সঠিক বিপরীত ক্রমে মুদ্রণের গ্যারান্টিযুক্ত নয়।
ক্রুঙ্কার

4
@ ক্রাঙ্কার আমি জানি, তবে 1 সেকেন্ডের ব্যবধানের সাথে বিপরীত ক্রম ব্যতীত অন্য কোনওটিতে এটি মুদ্রণের সম্ভাবনা বেশ পাতলা।
গ্যারেথ

3
@ গ্যারেথ সেজন্যই আমি তাত্ত্বিকভাবে ত্রিভুজ করেছি :)
ক্রাঙ্কার

3
@ ক্রুনচার কি এটাকে মজা করে না?
পিয়ের আরলাড

তাত্ত্বিকভাবে আমার পরমাণুগুলি কোনও প্রাচীরের মধ্য দিয়ে যেতে পারে এমনভাবে ক্র্যাঙ্কার @ ক্র্যাঙ্কার ?
cdeange

37

এইচটিএমএল + সিএসএস

<p>Line 1</p>
<p>Line 2</p>
<p>Line 3</p>
<p>Line 4</p>

সিএসএস:

body {margin-top:7em}
p + p {margin-top:-4em}

JsFizz দেখুন ।

সম্পাদনা করুন:
নিয়মগুলি আরও ভালভাবে মেনে চলার জন্য, এক্সএমএলে এখানে একটি বৈকল্পিক রয়েছে যা প্রকৃতপক্ষে ব্যবহার করে print

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="style.css"?>
<root>
  <print>Line 1</print>
  <print>Line 2</print>
  <print>Line 3</print>
  <print>Line 4</print>
</root>

যেখানে স্টাইল। CSS হওয়া উচিত

* {display:block; margin-top:3em}
print + print {margin-top:-3em}

সিএসএস ছাড়াই এইচটিএমএল

এবং এটি হ্যাকের জন্য, এখানে CSS ছাড়াই রয়েছে।

<table>
<tfoot><tr><td><table><tfoot><tr><td>Line 1</tr></tfoot>
<tbody><tr><td>                      Line 2</table></tfoot>
<tbody><tr><td><table><tfoot><tr><td>Line 3</tr></tfoot>
<tbody><tr><td>                      Line 4</table></tbody>
</table>

বেহালার


2
কেউ কি ডাউনটোটকে ব্যাখ্যা করতে পারে? এটি মুদ্রণের সময় কাজ করে, আপনি জানেন।
মিস্টার লিস্টার

আপনি কেবল করতেও পারেনp {float:right;}
Noyo

তবে ফলাফল সব এক লাইনে থাকবে!
মিস্টার লিস্টার

... এবং এটি অনুমোদিত :]
ন্যো

1
... এবং এটি অনুমোদিত নয়। : ডি আপনি এটি একটি ডিভের মধ্যেও মোড়তে এবং সিএসএস বিধি যুক্ত করতে পারেন div {float:left}
ন্যো

23

সি ++

#include <iostream>
#define Q(x,y) x ## y
#define P(x,y) Q(x, y)
#define print S P(s, __LINE__) =
struct S { const char *s; S(const char *s): s(s) {} ~S() { std::cout << s << std::endl; } };
int main() {
    print "Line1";
    print "Line2";
    print "Line3";
    print "Line4";
}

(ঘোষণার বিপরীত ক্রমে স্থানীয় ভেরিয়েবলগুলি ধ্বংস করা হয়))

সি ++ 11

#include <iostream>
int main() {
    struct S { void (*f)(); S(void (*f)()): f(f) {} ~S() { f(); } } s[] = {
        {[](){ std::cout << "Line1" << std::endl; }},
        {[](){ std::cout << "Line2" << std::endl; }},
        {[](){ std::cout << "Line3" << std::endl; }},
        {[](){ std::cout << "Line4" << std::endl; }},
    };
}

(অনেকটা একই, তবে ল্যাম্বডাস এবং এর পরিবর্তে অ্যারে ডেটা সদস্য ব্যবহার করছেন))


আমি ব্যবহার করে একটি সমাধান পোস্ট করেছি std::functionএবং আমি এ থেকে মুক্তি পাওয়ার চেষ্টা করছিলাম। এখন আমার দরকার নেই কারণ আপনি পেয়েছেন!
সার্জিওল

21

Haskell,

main = sequence_ $ reverse [
    putStr "Line1",
    putStr "Line2",
    putStr "Line3",
    putStr "Line4"]

21

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

setTimeout(function(){console.log("Line 1");},900);
setTimeout(function(){console.log("Line 2");},800);
setTimeout(function(){console.log("Line 3");},700);
setTimeout(function(){console.log("Line 4");},600);

টাইমআউট 1,2,3,4হিসাবে ব্যবহার করাও আমার পক্ষে কাজ করে। (তবে, এই আচরণটি
ইসমাস্ক্রিপ্টে মানকৃত

1
@কমফ্রিকে: setTimeoutএইচটিএমএল 5 / টাইমারগুলিতে মানক করা হয়, ES তে নয়। এছাড়াও, এটি 4ms :-) এর সর্বনিম্ন সময়সীমা নির্দিষ্ট করে
বার্গি

1
@ বেরগি হ্যাঁ, আপনি ঠিক বলেছেন, অবশ্যই! এইচটিএমএল স্ট্যান্ডার্ড - টাইমার - যদি কেউ আগ্রহী হন।
কমফ্রিচ

1
এটি যথেষ্ট ধীরে ধীরে মেশিনে চালান (বলুন, 8080 অন্যান্য কয়েকটি অ্যাপ্লিকেশন চলছে?) এবং এটি ব্যর্থ হবে। (ব্যর্থ হয়ে, আমি বোঝাতে চাইছি যে আদেশটি বিপরীত হবে না, যেহেতু প্রতিটি বিবৃতি কার্যকর করতে> = 100 মিমি লাগবে
জেফ ডেভিস

1
@ লাস্টার ২ ডি 2 লুপগুলি মোটামুটি বিষয়ভিত্তিক হলেও একটি ধীর কম্পিউটারের সিমুলেট করা, তবে আমি মনে করি এটি এর মতো আরও হবে: jsfiddle.net/7zbKw/1Whatwg.org/specs/web-apps/current-work/m মাল্টিপেজ/… থেকে নোট করুন "এই API টি গ্যারান্টি দেয় না যে টাইমারগুলি সময়সূচিতে ঠিক চলবে CP সিপিইউ লোডের কারণে, অন্যান্য কার্যাদি ইত্যাদির কারণে বিলম্ব আশা করা উচিত" "
জেফ ডেভিস

20

সি

প্রশ্নে থাকা টিপসটিকে যথাসম্ভব সৃজনশীল করার চেষ্টা করছেন:

#include <stdio.h>
#define print if (i == __LINE__) puts
static unsigned i;
int main(void) {
  while (--i) {
    print("Line 1");
    print("Line 2");
    print("Line 3");
    print("Line 4");
  }
  return 0;
}


15

বি ফল

ঘর-মোড়ক ধরে।

++++[->+
----[> (line 1) .[-]<]++++
---[> (line 2) .[-]<]+++
--[> (line 3) .[-]<]++
-[> (line 4) .[-]<]+
<]

কেন এটি কাজ করে

প্রথম এবং শেষ লাইনগুলি এমন লুপ রচনা করে যা চারবার পুনরুক্ত হয় (পাল্টা = cell0)।

লুপের অভ্যন্তরে, একটি পাল্টা ভেরিয়েবল ( cell1) রয়েছে যা প্রতিটি রান বাড়ানো হয়।

প্রতিটি লাইন চার, তিন, দুই, বা এক এর সমান শূন্য হয় কিনা তা পরীক্ষা করে। অতএব, প্রথম রানটিতে, কাউন্টারটি একটি এবং শেষ রেখাটি কার্যকর করা হয়, দ্বিতীয় রানে তৃতীয় রেখাটি কার্যকর করা হয় ইত্যাদি

(line 1)শো যেখানে আপনি যে টেক্সট ছাপা হয় করা উচিত। লুপগুলির তীরগুলি cell2এই উদ্দেশ্যে বরাদ্দ করে । [-]আউট সাফ করে cell2আপনি এটি ব্যবহার করেন।


14

সজোরে আঘাত

শ্রদ্ধেয় স্লিপসোর্ট এবং স্লিপ অ্যাডের স্মরণে , আমি আপনাদের সামনে উপস্থাপন করছি ... স্লিপ রিভার্স :

#!/bin/bash

function print(){(sleep $((4-$1));echo "Line $1";)&}

print 1
print 2
print 3
print 4

এটিকে আরও $1$2function print(){(sleep $((4-$2));echo "$1 $2";)&}; print Line 1
চশমার

13

জাভা

import java.io.PrintStream;
import java.util.concurrent.FutureTask;

public class Print {
  public static void main(String[] args) {
    new FutureTask<PrintStream>(new Runnable() {
      public void run() {
        new FutureTask<PrintStream>(new Runnable() {
          public void run() {
            new FutureTask<PrintStream>(new Runnable() {
              public void run() {
                System.out.append("Line1"); }
            }, System.out.append("Line2")).run(); }
        }, System.out.append("Line3")).run(); }
    }, System.out.append("Line4")).run();
  }
}

এগুলি সবই সঠিক সময়ে ... ;-)


লাইনগুলি সংলগ্ন হতে হবে।
টিমটেক

কোডগল্ফ.স্ট্যাকেক্সেঞ্জার.এ. / 20660/16293 এর সাথে এগুলি উদাহরণস্বরূপ এর চেয়ে কম সংলগ্ন নয় কেউ তাদের বলেন যে তাদের দেখতে একই রকম হওয়া উচিত। কিছু নতুনলাইন-চরিত্রগুলি সরিয়ে ফেলবে ;-)
TheConstructor

ঠিক আছে, দুর্দান্ত :-)
টিমটেক


12

সজোরে আঘাত

এখানে ডাবল-ফেস স্ক্রিপ্ট আসবে:

#!/bin/bash
s=1
if [ $s -ne 0 ]; then tac $0 | bash; exit; fi
s=0
echo "Line1"
echo "Line2"
echo "Line3"
echo "Line4"

2
এমনকি আমি জানতাম tacনা! হা হা ধন্যবাদ.
Noyo

11

কমন লিস্প № 1

ngorpবিপরীত ক্রমে এর ফর্মগুলি সম্পাদন করে এমন ম্যাক্রো লেখা সহজ :

(macrolet ((ngorp (&body ydob) `(progn ,@(reverse ydob))))
  (ngorp
   (write-line "Line 1")
   (write-line "Line 2")
   (write-line "Line 3")
   (write-line "Line 4")))
Line 4
Line 3
Line 2
Line 1

কমন লিস্প № 2

সমস্যাটি খুব আক্ষরিকভাবে গ্রহণ করে এমন একটি এখানে রয়েছে; প্রশ্ন থেকে কোডটি কোনও পরিবর্তন ছাড়াই প্রোগ্রামে উপস্থিত হয়:

(macrolet ((execute-prints-backwards (&body body)
             `(progn 
                ,@(nreverse (mapcar (lambda (string)
                                      (list 'write-line string))
                                    (remove-if-not 'stringp body))))))
  (execute-prints-backwards

//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code

  ))
Line4
Line3
Line2
Line1

10

পিএইচপি

অন্য evalরূপ:

$lines=array_slice(file(__FILE__),-4); // get last 4 lines of current file
eval(implode('',array_reverse($lines)));exit; // eval lines reversed and exit
print "Line1\n";
print "Line2\n";
print "Line3\n";
print "Line4\n";

1
বাক্পটুতাপূর্ণ! যাইহোক, আমি এটি একটি সত্যই খারাপ ধারণা উল্লেখ করতে বাধ্য বোধ করি।
ডেভিড ক্রিজনিয়াক

9

এফ #

let inline (?) f g x = g x; f x

(printfn "Line1%s") ?
 (printfn "Line2%s") ?
  (printfn "Line3%s") ?
   (printfn "Line4%s") ""

সবেমাত্র একটি কাস্টম অপারেটর তৈরি করেছেন যা বিপরীত ক্রমে ফাংশনগুলি কার্যকর করে।


3
আমি বেশ নিশ্চিত (?) F (g (x)) = g (x); f (x) হল ক্যালকুলাস এবং প্রোগ্রামিং নয়।
জেফ ডেভিস

2
@ জেফডাভিস: খুব নিশ্চিত যে (?) f g xমোটামুটি পড়ছে (?)(f, g, x), নাf(g(x))
এরিক

9

গো (গোলং)

package main

import "fmt"

func main() {
    defer fmt.Println("Line 1")
    defer fmt.Println("Line 2")
    defer fmt.Println("Line 3")
    defer fmt.Println("Line 4")
}

এটি ব্যবহার করে দেখুন: http://play.golang.org/p/fjsJLwOFn2


আমি ঠিক একই কোড পোস্ট করতে চেয়েছিলাম। আক্ষরিক অর্থে, বাইট-বাই-বাইট হুবহু একই।
আর্ট

@ আর্ট, দুর্দান্ত! আমি আশা করি কোড গল্ফ-এ আরও গো ব্যবহার করা হবে।
cory.todd

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

8

Python3

print("Line1",
print("Line2",
print("Line3",
print("Line4") or '') or '') or '')

শেষ লাইনের সমস্ত স্থান সরিয়ে 6 বাইট সংক্ষিপ্ত হতে পারে।


7

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

[
  "console.log('Line1')",
  "console.log('Line2')",
  "console.log('Line3')",
  "console.log('Line4')"
].reverse().forEach(function(e){eval(e)})

সি ++ 11

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<std::function<void()>> functors;
    functors.push_back([] { std::cout << "Line1"; });
    functors.push_back([] { std::cout << "Line2"; });
    functors.push_back([] { std::cout << "Line3"; });
    functors.push_back([] { std::cout << "Line4"; });
    std::reverse(functors.begin(),functors.end());
    std::for_each (functors.begin(), functors.end(), [](std::function<void()> f) {f();});
    return 0;
}

বদলে std::reverseএবং std::for_each, সহজভাবে ব্যবহারwhile (! functors.empty()) { functors.back()(); functors.pop_back(); }
ডেভিড Hammen

7

দল

echo off

call :revers ^
echo.line1 ^
echo.line2 ^
echo.line3 ^
echo.line4

:revers
if not "%2"=="" call :revers %2 %3 %4 %5 %6 %7 %8 %9
%1

কোডগল্ফ স্বাগতম! চমৎকার পোস্ট.
ক্রুঙ্কার

7

সি শার্প

সরাসরি রান পদ্ধতিটি কল করার পরিবর্তে, আমি একটি গতিশীল পদ্ধতি তৈরি করছি যা এতে রানের আইএল বাইটকোডের একটি অনুলিপি রয়েছে, লোড-স্ট্রিং অপকোড অপারেন্ডগুলি অদলবদল করা ছাড়া। যার ফলে বিপরীত ক্রমে নতুন পদ্ধতিটি স্ট্রিংগুলি প্রদর্শন করে।

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;

namespace TestApp
{
    class Program
    {
        public static void Run()
        {
            Console.WriteLine("Line 1");
            Console.WriteLine("Line 2");
            Console.WriteLine("Line 3");
            Console.WriteLine("Line 4");
        }


        static void Main(string[] args)
        {
            var method = typeof(Program).GetMethod("Run");
            var il = method.GetMethodBody().GetILAsByteArray();
            var loadStringOperands = new Stack<int>();
            for (int i = 0; i < il.Length; i++)
            {
                if (il[i] == OpCodes.Ldstr.Value)
                {
                    loadStringOperands.Push(BitConverter.ToInt32(il, i + 1));
                    i += 4;
                }
            }

            var run = new DynamicMethod("Run", typeof(void), null);
            var gen = run.GetILGenerator(il.Length);
            for (int i = 0; i < il.Length; i++)
            {
                if (il[i] == OpCodes.Ldstr.Value)
                {
                    var str = method.Module.ResolveString(loadStringOperands.Pop());
                    gen.Emit(OpCodes.Ldstr, str);
                    i += 4;
                }
                else if (il[i] == OpCodes.Call.Value)
                {
                    var mInfo = method.Module.ResolveMethod(BitConverter.ToInt32(il, i + 1)) as MethodInfo;
                    gen.Emit(OpCodes.Call, mInfo);
                    i += 4;
                }
                else if (il[i] == OpCodes.Ret.Value)
                {
                    gen.Emit(OpCodes.Ret);
                }
            }

            run.Invoke(null, null);
        }
    }
}

6

পাইথন

আরও একটি সমাধান ব্যবহার করে eval()

a = [
"print('Line1')",
"print('Line2')",
"print('Line3')",
"print('Line4')"]

for line in reversed(a):
    eval(line)

এটি খুব জটিল নয়, তবে বুঝতে সহজ।


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