উত্স কোড রূপান্তর


29

mbomb007 আমাদের একটি স্বতঃপ্রণালী প্রোগ্রাম তৈরি করতে বলেছে । এটি একটি আকর্ষণীয় চ্যালেঞ্জ, তবে আমি ব্যক্তিগতভাবে আমার প্রোগ্রামগুলিকে স্ব-বিয়োগাত্মক হতে উত্সাহিত করতে পছন্দ করি না। আমি ভাবতে চাই যে, প্রতিটি প্রোগ্রামের কেন্দ্রে একটি সুন্দর প্রজাপতি ভেঙে যাওয়ার অপেক্ষায় থাকে।

এর মতো, আমার প্রথম কোড গল্ফ চ্যালেঞ্জের জন্য, স্ট্যাক এক্সচেঞ্জকে একটি প্রজাপতির রূপান্তর করার জন্য আমি চ্যালেঞ্জ জানাই। আপনার প্রোগ্রামটির নিজস্ব কোডটি ইনপুট এবং আউটপুট হিসাবে I am a caterpillar!একই ভাষাতে অন্য প্রোগ্রামের কোডের পরে গ্রহণ করা উচিত (আপনি আউটপুটগুলির মধ্যে একটি বিভাজক রাখতে পারেন বা নাও পারেন ... তবে আমরা প্রজাপতিগুলি কথা বলছি, তাই প্রাকৃতিকতা গণনা করা হয়!)। এই দ্বিতীয় প্রোগ্রাম আউটপুট করা উচিতI am a beautiful butterfly!

রূপান্তর: এই প্রোগ্রামটি নিজেই পরিবর্তিত হওয়া উচিত, এ কারণেই এটি নিজেকে ইনপুট হিসাবে পাস করা হচ্ছে। আমি একটি বিরক্তিকর নেস্টেড প্রোগ্রাম চাই না যা I am a caterpillar!মুদ্রণ উত্স কোড অনুসারে একটি মুদ্রণ বিবৃতি ছাড়া কিছুই নয় । আপনাকে কোডটি নিজেই রূপান্তর করতে হবে, তাই সর্বাধিক বিরক্তিকর গ্রহণযোগ্য উত্তর হ'ল যা মুদ্রণ করে I am a caterpillar, তারপরে ইনপুট (যা কোড হতে পারে) এর বাইরে একটি স্ট্রিং ছড়িয়ে দেয় এবং প্রিন্ট করে। অবশ্যই এটি লেখার জন্য খুব জটিল সামান্য প্রয়োজনীয়তা, তাই এটি "চ্যালেঞ্জের মনোভাব" হিসাবে বিবেচনা করা উচিত। আনুষ্ঠানিক প্রয়োজনীয়তাটি সেট করতে চলেছে "যদি আপনার প্রোগ্রামটি যদি আপনার প্রোগ্রামের সমান দৈর্ঘ্যের একটি এলোমেলো স্ট্রিং দেওয়া হয় I am a butterflyতবে দ্বিতীয় প্রোগ্রামটি চালিত হওয়ার সময় মুদ্রণের 5% এরও কম সুযোগ থাকা উচিত ।"

সারাংশ:

  • একটি প্রোগ্রাম লিখুন যা, যখন ইনপুট হিসাবে তার নিজস্ব কোড সরবরাহ করা হয়, I am a caterpillar!উত্স কোডের একটি ব্লক অনুসরণ করে (তাদের মধ্যে একটি সীমানা যুক্ত করে বা না দিয়ে) প্রিন্ট করে।
  • উত্স কোডের এই দ্বিতীয় ব্লকটি যখন একই ভাষা সংকলিত / ব্যাখ্যা করা হয়, তখন মুদ্রণ করে I am a beautiful butterfly!
  • যদি আপনার প্রোগ্রামটিকে তার নিজস্ব উত্স কোডটি ইনপুট হিসাবে খাওয়ানো না হয় এবং পরিবর্তে তার নিজস্ব কোডের সাথে মেলে না এমন অক্ষরের একটি এলোমেলো স্ট্রিং দেওয়া হয়, ফলাফলটি অবশ্যই I am a butterfly!কমপক্ষে 95% রচনা করতে বা সংকলন / ব্যাখ্যা করতে ব্যর্থ হতে হবে স্ট্রিংস (স্পিরিট: আপনি ইনপুট থেকে নিজের উত্স কোডটি পড়বেন এবং এটি একটি প্রজাপতিতে একসাথে সেলাই করবেন)।
    • আপনার পক্ষে এটি প্রমাণ না করার জন্য আমি স্বাচ্ছন্দ্যবোধ করছি, যতক্ষণ আপনি রূপান্তর ধারণার ধারণাকে ধরে রেখেছেন, নিজের কোডটি পরিবর্তন করছেন তবে আপনি যদি নিজের ইনপুটগুলি ব্যবহার করার জন্য লুফোল গেমস খেলতে চেষ্টা করছেন তবে আশা করি এটা প্রমাণ করার জন্য.
  • স্ট্যান্ডার্ড লুফোলস প্রয়োগ হয়

আমি এগুলি তাদের সৌন্দর্যের দ্বারা বিচার করা উচিত, তবে এটি একটি নির্ধারিত অ-পরিমাণগত পদ্ধতির, তাই সাধারণ "বাইট সংখ্যা" রুটটি বিচার করতে ব্যবহৃত হতে পারে

বোনাস : -20% - আপনার প্রোগ্রামের প্রথম 3 টি অক্ষরের সাথে মেলে না এমন কোনও 3 অক্ষরের স্ট্রিং চয়ন করুন। যদি আমি শুঁয়োপোকা প্রোগ্রামটি চালনা করি তবে ইনপুটটি পরিবর্তন করুন যাতে প্রথম 3 টি অক্ষর নির্দিষ্ট বর্ণগুলিতে পরিবর্তিত হয়, I am Batman!পরিবর্তে মুদ্রণ করুন। সর্বদা ব্যাটম্যান থাকুন। ( একই র্যান্ডম স্ট্রিং বিধিগুলি এর জন্য প্রয়োগ হয় ... রূপান্তর! )

তুচ্ছ উদাহরণ (অজগর):

"""
    print "I am a beautiful butterfly!"
    #print "I am Batman!"
"""
import sys
code = sys.stdin.read()
if code.startswith("YYZ"):
   # swap the comments between the print statements
   code = code.replace("#print", "_a").replace("print", "#print").replace("_a", "print")
code = [3:] # remove """ or XYZ
code = code.split('"""')[0]
print "I am a caterpillar!"
print code

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

কোনও প্রোগ্রামে একাধিক ফাইল থাকলে আমাদের কী করা উচিত?
TheNumberOne

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

@ দি নাম্বারওন এবং টাইপো ধরার জন্য আপনাকে ধন্যবাদ সেই টাইপো খুব স্পষ্টভাবে একটি সুন্দর প্রজাপতি ছিল না!
কর্ট অ্যামোন - মনিকা st

উত্তর:


63

বেফুঞ্জ -98, 602 বাইট

                                        "^@<"v@@
                                     "'I'"00v>00g::
                                   "@v"0v@@@>g::a">#"
                                 "a">v@@>      0g::'"1>                                 /
                             ":\"'"v@>            'm'"00g:a                       >"@v$"
 "lufituaeb"'"'v00ga"@v\"'":'b\00v@>                :'a\":*84>"00ga"\>@@@@_,#:>"00g:a'<'"
"et"'"'va'v'":'l\00g5k:'""y!">>v@>                    g::'''""ut"'"'>a'<'""fr"'"00g3k:'">
 "ma"00g>'I~48*-~48*-+#@_>:#,_@>                        '"aa"---"aa"!rallipretac"00g:'a\

পাইফুঞ্জে পরীক্ষিত।

যখন 2 টি স্পেস দিয়ে শুরু না হওয়া স্ট্রিং দিয়ে চালানো (সম্ভাব্যতা 95% এর বেশি এলোমেলোভাবে) আউটপুট দেয় না। এটি ওপি ঠিক যা খুঁজছে তা নয়, তবে নির্দিষ্টকরণের সাথে ফিট করে।

যখন 2 টি স্পেস (নিজের মতো) দিয়ে শুরু করে কোনও স্ট্রিং পাস হয়ে যায় তখন এটি আউটপুট দেয়:

I am a caterpillar!

---

"!y"       "l"v
v"te"     "rf"<
>"tu"'   "b"\v@
 v"beautiful"<
  >:#,_@@@@>\
 >48*:"a"\:$v@
  "ma"   v@#>
   'I'   <@^

এর নীচের অংশটি, ঘুরে, আউটপুটগুলি:

I am a beautiful butterfly!

2
কি দারুন. এটা চমৎকার.
একটি স্প্যাগেটো

3
আমি জানতাম যে কেউ আপনার মতো করে নিয়মাবলী ঠেকাতে চাইবে; আমি খুশি হয়েছি এর থেকে সুন্দর কিছু বেরিয়ে এসেছিল =)
কর্ট অ্যামোন - মনিকা পুনরায় স্থাপন করুন

শুঁয়োপোকা এবং প্রজাপতি উভয়ই ম্যাট্রিক্সে আটকে রয়েছে বলে মনে হচ্ছে। সুন্দর!
এরনো

আমি কোথায় এটি চালাতে পারি?
ব্যবহারকারী 1514631

3
আমি কখনই বুঝতে পারি না যে কোড গল্ফের আপনি কীভাবে ভাল লোকেরা এত সুন্দর মনস্ট্রোসিটিগুলি তৈরি করতে পরিচালনা করেন।
ক্রিস সাইরেফাইস

19

পিএইচপি, 74 বাইট

<?=~¶ßž’ßžß,$s="caterpillar!",strtr($argv[1],[$s=>~šžŠ‹–™Š“ߊ‹‹š™“†Þ]);
  • <?=সমতুল্য <?php echoএবং আউটপুটে বেশ কয়েকটি কমা বিভাজিত মান নিতে পারে
  • ¶ßž’ßžßএবং šžŠ‹–™Š“ߊ‹‹š™“†Þপিএইচপি-তে বৈধ স্থির নাম, তবে ধ্রুবকগুলির অস্তিত্ব না থাকায় স্ট্রিং আক্ষরিক হিসাবে বিবেচনা করা হয়। ~এগুলিতে রূপান্তর করে "I am a "এবং "beautiful butterfly!"(প্রতিটি উদ্ধৃতি চিহ্নের জন্য একটি বাইট সংরক্ষণ করে)
  • strtr"শুঁয়োপোকা!" "একটি সুন্দর প্রজাপতি!" তর্ক মধ্যে

2
একটি ব্যাখ্যা প্রদান যত্ন?
টিমউই

@ টিমউই কোনও সমস্যা নেই, ব্যাখ্যা যুক্ত করেছেন
ফ্যাবিয়ান শেমংলার

আমি সম্পূর্ণরূপে প্রত্যাশা করেছিলাম যে কেউ "সুন্দর প্রজাপতি" কে ROT13 এর মতো কিছু দিয়ে এনকোড করবে, তবে পিএইচপি-র স্ট্রিং আক্ষরিক প্রযুক্তির সাথে এটির মিলের ধারণাটি কায়লির ভাষায়, চকচকে!
কর্ট অ্যামোন - মনিকা পুনরায় ইনস্টল করুন

7

পাইথ, 50 46 বাইট

"I am a caterpillar!"+<z8"beautiful butterfly!

ব্যাখ্যা

"I am a caterpillar!"        print "I am a caterpillar!"
 z<8                         first 8 chars of input
+   "beautiful butterfly!    add "beautiful butterfly!" to that and print

ফলাফল উত্স কোড হয়

"I am a beautiful butterfly!

যা মূলত পাঠ্য মুদ্রণ করে।


6

পার্ল 6, 60 56 বাইট

say "I am a caterpillar!"; s/\S+\!/beautiful butterfly!/

সঠিকভাবে চালানোর জন্য -p প্রয়োজন; আমি এটির জন্য বাইট গণনায় হিসাব করেছি। দুঃখের সাথে পার্ল to-এর একটি ডাউনসাইড হ'ল সিনট্যাক্স এখন অনেক বেশি কড়া ...


ছত্রাকক্ষকগুলি রূপান্তরকালে দুর্বল থাকে। কেন তারা পছন্দ নিজেদের গুটি ভেরিয়েবলের মধ্যে মোড়ানো যে: $a=caterpillar;say"I am a $a!";s/$a/beautiful butterfly/(আমি অভিমানী করছি যে পার্ল 6 পার্ল 5 মত barewords পারবেন no strict 'subs'এবং s///LHS উপর interpolates ভেরিয়েবল।)
ThisSuitIsBlackNot

হুঁ, এটা মজার। আমি এটি চেষ্টা করেছি এবং কোনও কারণে যখন আমি ডাব্লুসিটি করি তখন এটি আমাকে একই পরিমাণ বাইট দেয়। তবে এটি আবার টাইপ করার পরে এটি আমাকে কম বাইট দিয়েছে। স্ট্রেঞ্জ।
একটি স্প্যাগেটো

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

আহ, আমি পার্ল 6 কখনও ব্যবহার করি নি তাই সেখানে আপনাকে সাহায্য করতে পারে না। আমি সত্যিই একটি মজাদার মন্তব্য করার জন্য একটি অজুহাত চেয়েছিলাম। ;) say"I am a caterpillar!";s/\S+!/beautiful butterfly!/খাটো এবং হবে অবশ্যই পার্ল 6. কাজ
ThisSuitIsBlackNot

1
@ThisSuitIsBlackNot এটি চ্যালেঞ্জের সাথে খাপ খায় না। আপনি আসলে আপনার কোডটি পড়েছেন এবং সংশোধন করেছেন তা নিশ্চিত করার জন্য নিয়মগুলি ঠিক সেখানে ছিল। শেষ পর্যন্ত, আসল চেতনা কোডের কেন্দ্রে সুন্দর প্রজাপতিটিকে মুক্ত করতে চেষ্টা করছে। সৌন্দর্য অবশ্যই দর্শকের চোখে পড়ে। আমরা প্রত্যেকে অন্যের চেয়ে কম-বেশি সুন্দর সমাধান পেতে পারি। পার্লের সমাধানগুলির জন্য, ভাল ... আসুন আমরা কেবল বলি যে পার্লের সুন্দর একটি নিজস্ব বিচিত্র সংজ্ঞা আছে এবং এটি তার উদ্দেশ্যগুলি ঠিক সূক্ষ্মভাবে স্যুট করে ;-)
কর্ট অ্যামোন - মনিকা পুনরায়

4

রেটিনা, 53 বাইট

caterpillar
beautiful butterfly
^
I am a caterpillar!

প্রিন্ট আউট:

I am a caterpillar!beautiful butterfly
beautiful butterfly
^
I am a beautiful butterfly!

লক্ষ্য করুন যে I am a caterpillar! নতুন প্রোগ্রামের মধ্যে কোনও বিভাজক নেই । নতুন প্রোগ্রামটি কোনও ইনপুট আশা করে না।


3

bash/ awk/ cksum- 179.2 169.6 168 বাইট

awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'

ডেমো:

$ awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'<<'E'
> awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'
> E
I am a caterpillar!
echo|awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."10"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'
$ echo|awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."10"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'
I am a beautiful butterfly!

# Batman!
$ awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'<<'E'
> xyzawk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'
> E
I am Batman!

# Invalid input
$ awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0}'<<'E'
> awk '/^xyz/{print"I am Batman!";exit}NF{("cksum<<<'"'"'"substr($0,100))|getline r;if(r!~/^6689751/)exit}{printf"I am a %s%."!NF"s!\n",NF?"caterpillar":"beautiful"," butterfly"}NF&&sub(/!NF/,10){print"echo|"$0{'
> E

আমি আশা করি যে 20% শুরু হওয়া কোনও স্ট্রিংয়ের জন্য প্রযোজ্য xyz, অন্যথায় আসল গণনা 224 212 210 বাইট ( "I am Batman!"অংশটি স্থির করে )।

ট্রান্সফরমেসন সম্পন্ন হয়েছে: আক্ষরিক একমাত্র সংঘটন প্রতিস্থাপন !NFসঙ্গে 10, যাতে " butterfly"হয় এছাড়াও ব্যবহার মুদ্রিতprintf

cksumউত্স কোডের একটি অংশে (যেমন বাকী) একটি সাধারণ সম্পাদন করে, সুতরাং এর প্রয়োজনীয়তাও।

ক্যাভেট: প্রথম ইনপুটটি অবশ্যই শেষ হবে 'ভুল ইনপুট দমন করার মতো এতটা সাবধানতা নয় ...

দ্বিতীয় কোনও ইনপুট আশা করা যায় না।


1
দাঁড়ান। আমি অবাক ব্যক্তির জন্য অপেক্ষা করছিলাম, এবং এটিই। যে বেশ শান্ত.
21 ই

@ জেআরজি উত্সাহের জন্য ধন্যবাদ। :)
hjk

1

পাইথন - বোনাসের জন্য 184 বাইট -20% = 147.2

""""""
import sys;c=sys.stdin.read();print"I am a caterpillar!";x=c[3:] if"\'''"!=c[:3] else c
print x+c[:3]
""";print"I am a beautiful butterfly!" """
''';print"I am Batman";'''

মুদ্রণের I am batmanজন্য, প্রথম তিনটি ডাবল উদ্ধৃতিগুলি ইনপুটটিতে একক উদ্ধৃতি সহ প্রতিস্থাপন করুন ((প্রথম লাইনটি হ'ল '''""")

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