পাইথনের আচার মডিউলটি সিরিয়ালাইজেশনের জন্য ব্যবহৃত হয়, একজনকে এমনভাবে কোনও বস্তুকে ডাম্প করার অনুমতি দেয় যাতে এটি পরে পুনর্গঠন করা যায়। এর জন্য, আচার একটি সাধারণ স্ট্যাক-ভিত্তিক ভাষা ব্যবহার করে।
জিনিসগুলি সহজ রাখতে, আমরা এই ভাষার একটি ছোট উপসেটটি নিয়ে কাজ করব:
( Push a mark to the stack
S'abc'\n Push a string to the stack (here with contents 'abc')
l Pop everything up to the last mark, wrapping all but the mark in a list
t Pop everything up to the last mark, wrapping all but the mark in a tuple
. Terminate the virtual machine
আপনার কাজটি ভাষার এই উপসেটটি বাস্তবায়ন করা। নোট যে \n
এখানে একটি আক্ষরিক নতুন লাইন, এবং নতুন লাইন আসলে ভাষার জন্য গুরুত্বপূর্ণ।
GolfScript বা সাথে পরিচিত ভাষায় CJam মত, তাদের জন্য (
এবং l/t
একইভাবে অপারেট [
এবং ]
যথাক্রমে।
ইনপুট
জিনিসগুলি সহজ রাখতে, ইনপুটটি সর্বদা বৈধ থাকবে। বিশেষত, আপনি ইনপুট সম্পর্কে নিম্নলিখিতটি ধরে নিতে পারেন:
- স্ট্রিংগুলিতে কেবল ছোট হাতের অক্ষর এবং স্পেস
[a-z ]
থাকবে এবং সর্বদা একক উদ্ধৃতি ব্যবহার করবে। - উপরে বর্ণিত সমস্ত নির্দেশাবলীর সাথে কোনও বহিরাগত অক্ষর থাকবে না। উদাহরণস্বরূপ, এর অর্থ এই যে নিউলাইনগুলি কেবল স্ট্রিংয়ের পরে কখনও ঘটবে।
- প্রত্যেকের আগে এর
l/t
মিল রয়েছে(
এবং এর পরেও প্রত্যেকটির(
মিল রয়েছেl/t
। কমপক্ষে একটিও থাকবে(
। - ঠিক এক হবে
.
, এবং এটি সর্বদা চূড়ান্ত চরিত্র হবে।
আপনি কমান্ড লাইন, STDIN বা ফাংশন যুক্তির মাধ্যমে ইনপুট নিতে পারেন। আপনি যদি চান তবে মাল্টিলাইন স্ট্রিংয়ের পরিবর্তে আপনি একটি একক নিউলাইন-পলায়নের স্ট্রিং ব্যবহার করতে পারেন, তবে দয়া করে আপনার উত্তরে এটি উল্লেখ করুন।
আউটপুট
আউটপুটটি চূড়ান্ত অবজেক্টের উপস্থাপনা হওয়া উচিত, STDOUT এ মুদ্রিত হওয়া বা স্ট্রিং হিসাবে ফিরে আসা উচিত । বিশেষ করে:
স্ট্রিংগুলি মধ্যবর্তী সামগ্রীর সাথে একক উদ্ধৃতি খোলার এবং বন্ধ করে প্রতিনিধিত্ব করা হয়, যেমন
S'abc' -> 'abc'
। পাইথনে অনুমতি দেওয়া সত্ত্বেও আপনি এই চ্যালেঞ্জের জন্য ডাবল উক্তি ব্যবহার করতে পারবেন না।তালিকাটি
[]
(যেমন['a','b','c']
) দ্বারা বেষ্টিত কমা-বিচ্ছিন্ন উপাদান দ্বারা প্রতিনিধিত্ব করা হয় , যখন টিপলগুলি কমা দ্বারা বিচ্ছিন্ন উপাদান দ্বারা পরিবেশন করা হয়()
(যেমন('a','b','c')
) eg- স্পেসগুলি কিছু যায় আসে না, যেমন
('a', 'b', 'c' )
ঠিক আছে। - বন্ধ করার বন্ধনীটির আগে আপনার কমা থাকতে পারে না। দ্রষ্টব্য যে এটি বেশিরভাগ ভাষার পক্ষে জিনিসগুলি সহজ করার জন্য পাইথন বাক্য গঠন নিয়মের থেকে ইচ্ছাকৃতভাবে পৃথক, এবং পাইথনের তালিকাগুলি / টুপলকে সহজেই তৈরি করা আরও শক্ত করে তোলে তবে একক-উপাদানগুলির টিউপলকে কীভাবে উপস্থাপন করা হয় তার কারণে (এটির জন্য) চ্যালেঞ্জ, আমাদের
('a')
যেমন বিরোধিতা করা দরকার('a',)
)।
উদাহরণ
উপরের পাঠ্যটি ভয়ঙ্কর মনে হতে পারে, তবে নিম্নলিখিত উদাহরণগুলির দ্বারা বিষয়গুলি কিছুটা স্পষ্ট করা উচিত।
(l.
সম্ভাব্য আউটপুট: []
(t.
সম্ভাব্য আউটপুট: ()
(S'hello world'
l.
সম্ভাব্য আউটপুট: ['hello world']
(S'string one'
S'string two'
S'string three'
t.
সম্ভাব্য আউটপুট: ('string one', 'string two', 'string three')
(S'a'
(S'b'
S'c'
lt.
সম্ভাব্য আউটপুট: ('a',['b','c'])
((S'a'
S'b'
(lS'c'
t(S'd'
tl.
সম্ভাব্য আউটপুট: [('a', 'b', [], 'c'), ('d')]
((S'a'
((S'b'
t(S'c'
lS'd'
(((ltlS'e'
S'f'
lS'g'
tl.
সম্ভাব্য আউটপুট: [('a',[('b'),['c'],'d',[([])],'e','f'],'g')]
বিধি
- এটি কোড-গল্ফ , সুতরাং কয়েকটি বাইটের কোডটি জয়ী।
- পাইথন আচারের সাথে কাজ করার জন্য তৈরি করা কোনও কার্যকারিতা অনুমোদিত নয়।
সুরক্ষা দ্রষ্টব্য: আসল কোডে, কেবলমাত্র আপনার বিশ্বাসযোগ্য উত্সগুলি থেকে সরান বা অন্যথায় আপনি একটি বাজে cos\nsystem\n(S'rm -rf'\ntR.
চমক পেতে পারেন
S'abc'\n
ধাক্কাabc
বা'abc'
?