পাইথন: আমি আশা করি আমি পিএইচপি [বন্ধ]


8

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

একইভাবে, আপনার কাজটি এমন একটি প্রোগ্রাম লেখা যা এটি যে ভাষাতে থাকে তার সাথে কখনই সন্তুষ্ট হয় না Your আপনার প্রোগ্রামটিকে আলাদা ভাষায় রূপান্তর করতে অবশ্যই রেজেক্স প্রতিস্থাপনের একটি সেট আউটপুট করতে হবে। ইত্যাদি।

বিধি

  1. আপনার পছন্দসই ভাষায় একটি প্রোগ্রাম লিখুন।
  2. প্রোগ্রামটি কমপক্ষে দুটি বিভাগের একটি সিরিজ আউটপুট করা উচিত। একটি অংশটি সেমিকোলন দ্বারা পৃথক পৃথক পাঠ্যের একটি গুচ্ছ। যাইহোক, যদি একটি সেমিকোলন কোনও রেইজেক্সের মধ্যে থাকে তবে এটি এখানে ভেঙে ফেলার ফলে অবৈধ বাক্য গঠন হবে, এটি পৃথক বিভাগগুলিকে পৃথক করে না। উদাহরণ দেখুন।
  3. প্রথম বিভাগটি হ'ল একটি রেজেক্স প্যাটার্ন এবং দ্বিতীয় বিভাগটি প্রতিস্থাপনের ধরণ pattern তৃতীয়টি হ'ল অন্য "ফাইন্ড" প্যাটার্ন এবং চতুর্থটি "প্রতিস্থাপন" প্যাটার্ন এবং আরও অনেক কিছু।
  4. প্রোগ্রামে রেজেক্স প্যাটার্ন প্রয়োগ করুন। প্রথম বিভাগে প্যাটার্নটি দ্বিতীয়টিতে একটি দিয়ে প্রতিস্থাপন করুন; চতুর্থের সাথে একটি তৃতীয় প্যাটার্ন প্রতিস্থাপন করুন, এবং আরও।
  5. ফলাফলটি একটি ভিন্ন ভাষায় একটি প্রোগ্রাম হওয়া উচিত, যা নিজেই, নিয়ম 2 থেকে 4 অনুসরণ করে।
  6. ব্যবহৃত ভাষা অবশ্যই একটি অনন্ত, পুনরাবৃত্তি চক্র গঠন করতে হবে।
    • উদাহরণস্বরূপ, পাইথন -> পিএইচপি -> সি ++ -> পাইথন -> পিএইচপি -> সি ++ -> পাইথন -> ...
  7. আপনার স্কোরটি চক্রের সময়কাল। সংক্ষিপ্ততম প্রাথমিক কোড দৈর্ঘ্যের দ্বারা টাইগুলি ভেঙে যায়।
    • উপরের উদাহরণে স্কোর তিনটি।
  8. চক্রের প্রতিটি পুনরাবৃত্তিতে কোনও ভাষা একাধিকবার ব্যবহৃত হতে পারে না।
  9. 5 এবং 7 বিধিগুলির জন্য, সামঞ্জস্যপূর্ণ ভাষা (সি এবং সি ++) এবং একই ভাষার বিভিন্ন সংস্করণ (পাইথন 2 এবং পাইথন 3) একই হিসাবে বিবেচিত হয়।
  10. প্রোগ্রামগুলি তাদের পুনরাবৃত্তি করার প্রয়োজন নেই।
    • উপরের উদাহরণে প্রথম এবং চতুর্থ প্রোগ্রামগুলি ভিন্ন হতে পারে।
  11. রেগেক্সের যে কোনও সংস্করণ গ্রহণযোগ্য, তবে সমস্ত প্রোগ্রামের জন্য একই ব্যবহার করা উচিত।
  12. প্রতিটি প্রোগ্রামের জন্য মোট আউটপুট 100 টি অক্ষরের বেশি নাও হতে পারে।
  13. প্রতিটি আউটপুটে অবশ্যই প্রোগ্রামটি পরিবর্তনের জন্য নির্দেশাবলী থাকতে হবে। অর্থাৎ, চক্রের পর পর দুটি কোনও প্রোগ্রাম একই নাও হতে পারে।

উদাহরণ

পাইথন -> রুবি -> পাইথন -> ...

print "uts;Z;rint;uts;Z(?=;Z);rint"

আউটপুট:

uts;Z;rint;uts;Z(?=;Z);rint

বিভাগগুলি হল:

FIND     ;    REPLACE
uts      ;    Z
rint     ;    uts
Z(?=;Z   ;    rint   (breaking the first segment in two would result in invalid syntax)

ক্রমানুসারে রেজেক্স রিপ্লেসমেন্ট প্রয়োগ করা আমাদের দেয়:

print "Z;Z;rint;Z;Z(?=;Z);rint"      # replace each "uts" with "Z"
puts "Z;Z;uts;Z;Z(?=;Z);uts"         # replace each "rint" with "uts"
puts "rint;Z;uts;rint;Z(?=;Z);uts"   # replace each "Z" followed by ";Z" with "rint"

শেষ লাইনটি চালানো আমাদের এটিকে পাইথন কোডে ফিরিয়ে আনার নির্দেশনা দেয়।


আপনি যদি কোড ব্রেকটিকে ব্রেক ব্রেকার হিসাবে ব্যবহার করছেন তবে আমাদের কী 100 অক্ষরের সীমাটি দরকার?
মার্টিন ইন্ডার

@ মার্টিনব্যাটনার হ্যাঁ; কেন না?
Ypnypn

অবশ্যই, তবে এটি এর চেয়ে দীর্ঘতর একটি চরিত্র \;;)
মার্টিন ইন্ডার

সি ++ সি এর সাথে প্রয়োজনীয়ভাবে সামঞ্জস্যপূর্ণ নয়
golfer9338

8
আমি মনে করি আপনি সম্ভবত চক্রের সমস্ত প্রোগ্রাম আলাদা হওয়া দরকার। আমি যদি ভুল হয়ে থাকি তবে দয়া করে তা জানিয়ে দিন - এবং আমি সুস্পষ্ট সমাধানের জন্য অগ্রাধিকার দাবি করি।
পিটার টেলর

উত্তর:


6

2 ভাষা: পাইথন, রুবি; 33 29 বাইট

পাইথন এবং রুবি করার আরও একটি উপায় এখানে, এটি চ্যালেঞ্জের চেয়ে কিছুটা ছোট:

Python:   print'^;puts"^.*?\\42#\\73"#'
prints:   ^;puts"^.*?\42#\73"#

Ruby:     puts"^.*?\42#\73"#print'^;puts"^.*?\\42#\\73"#'
prints:   ^.*?"#;

মিশ্রণে পিএইচপি যুক্ত করা খুব বেশি কঠিন হওয়া উচিত নয় ।


1

2 টি ভাষা: পাইথন 2 এবং বেফুঞ্জ -99, 77 বাইট

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

u=u">>>>>:#,_@;Z;print;>>>>>:#,_@;Z(?=;Z);print;<v;Y;u;<v;Y(?=;Y);u"
print u

এই পাইথন প্রোগ্রাম আউটপুট:

>>>>>:#,_@;Z;print;>>>>>:#,_@;Z(?=;Z);print;<v;Y;u;<v;Y(?=;Y);u

যা এই প্রতিস্থাপনগুলি দেয়:

FIND         REPLACE
>>>>>:#,_@   Z
print        >>>>>:#,_@
Z(?=;Z)      print
<v           Y
u            <v
Y(?=;Y)      u

যা প্রোগ্রামটিকে এই বেফঞ্জ প্রোগ্রামে পরিণত করে:

<v=<v"print;Z;>>>>>:#,_@;print;Z(?=;Z);>>>>>:#,_@;u;Y;<v;u;Y(?=;Y);<v"
>>>>>:#,_@ <v

আমি এটি একটি লাইন করতে পারি কিনা তা আমি দেখতে পাব। সত্যি বলতে, আমি কিছুটা অবাক হয়েছি বেফুঞ্জ এই ধরণের সমস্যার জন্য আদৌ কাজ করে।

(গুচ্ছ মুছে ফেলতে এবং মুছে ফেলার জন্য দুঃখিত; আমি এক সেকেন্ডের জন্য আতঙ্কিত ছিলাম কারণ আমি ভেবেছিলাম প্রোগ্রামটি সম্ভবত কাজ করে না have)

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