সংক্ষিপ্ত বিবরণ:
আপনার কাজটি হ'ল সিএসভি ইনপুটটিকে key=value
ফর্ম্যাটে নেওয়া এবং এটি আরও সুসংহত (নীচে দেখুন) উপায়ে লাইন করা।
ইনপুট:
সর্বদা stdin মাধ্যমে । রেকর্ডগুলি সর্বদা নিম্নলিখিত ফর্মে থাকবে key=value
:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- আগে থেকে সম্ভাব্য কীগুলির কোনও তালিকা থাকবে না, আপনাকে অবশ্যই ইনপুট পাঠ্যে এটি সন্ধান করতে হবে।
- ইনপুটটির সমাপ্তি আপনার ওএসের জন্য যথাযথ
EOF
যে কোনও প্রয়োগইEOF
যথাযথ be
আউটপুট:
আপনার আউটপুটটির প্রথম সারিটি বর্ণমালা অনুসারে সমস্ত কীগুলির একটি তালিকা হবে (কীগুলি সমস্ত সংখ্যা হলেও) are এরপরে, প্রতিটি রেকর্ড একই সিএসভি ফর্ম্যাটে প্রিন্ট করুন যথাযথ সংখ্যা শিরোনাম, কীগুলি তালিকাভুক্ত না করে। সুতরাং, উপরের উদাহরণের জন্য, সঠিক আউটপুটটি হবে:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী:
- আমাকে কি ভুলভাবে ফর্ম্যাট করা ইনপুট সম্পর্কে চিন্তা করতে হবে?
- না। আপনার প্রোগ্রামটি যা কিছু করতে পারে তা করতে পারে (একটি ব্যতিক্রম নিক্ষেপ, উপেক্ষা, ইত্যাদি) যদি ইনপুটটি সঠিকভাবে ফর্ম্যাট না করা হয়, উদাহরণস্বরূপ একটি লাইন
foo,bar,baz
- না। আপনার প্রোগ্রামটি যা কিছু করতে পারে তা করতে পারে (একটি ব্যতিক্রম নিক্ষেপ, উপেক্ষা, ইত্যাদি) যদি ইনপুটটি সঠিকভাবে ফর্ম্যাট না করা হয়, উদাহরণস্বরূপ একটি লাইন
- আমি কীভাবে বিশেষ অক্ষরগুলি অবলম্বন করতে পারি?
- আপনি ধরে নিতে পারেন যে বিন্যাসের অংশ নয় এমন কোনও অতিরিক্ত
,
বা=
ডেটা থাকবে নাkey=value
।"
এই প্রতিযোগিতার কোনও বিশেষ অর্থ নেই (যদিও এটি প্রচলিত সিএসভিতে রয়েছে)।কোনওভাবেই বিশেষ নয়।
- লাইনগুলি নীচের রেজেক্সের সাথে মেলে:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$
- সুতরাং, উভয় কী এবং মানগুলি মিলবে
[^=,]+
- সুতরাং, উভয় কী এবং মানগুলি মিলবে
- আপনি ধরে নিতে পারেন যে বিন্যাসের অংশ নয় এমন কোনও অতিরিক্ত
CRLF
বনাম সম্পর্কে কিLF
?- আপনার প্ল্যাটফর্মের জন্য ডিলিমিটার উপযুক্ত যেটি চয়ন করতে পারেন। বেশিরভাগ ভাষাগুলি কোনও বিশেষ বিস্মৃত কোড ছাড়াই এটি পরিচালনা করে।
- শেষ কয়েকটি কলাম বিদ্যমান না থাকলে আমার কি ট্রিলিং কমাগুলি মুদ্রণ করা দরকার?
- হ্যাঁ. উদাহরণ দেখুন।
- সিএসভি পার্সার বা অন্যান্য অনুরূপ বাহ্যিক সরঞ্জাম অনুমোদিত?
- না। আপনাকে অবশ্যই ডেটা পার্স করতে হবে।