রুবি জন্য পরামর্শ


13

আমি কীভাবে সংক্ষিপ্ত করতে পারি:

p=gets.to_i
a=gets
b=gets.to_i

যদি আমার ইনপুটটি একটি পূর্ণসংখ্যা হয়, তার পরে কোনও স্ট্রিং হয় এবং তার পরে কোনও পূর্ণসংখ্যা হয়?


4
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

যে লোকেরা বলবে যে এটি বিষয় ছাড়াই, আপনি যদি এটি যুক্তি দিতে চান তবে মেটা দিয়ে পড়ুন এবং আমাকে বার্তা দিন।
স্ট্যান স্ট্রাম

উত্তর:


7

এআরজিভি ($ *) এবং ভর অ্যাসাইনমেন্ট ব্যবহার করুন

(অস্বীকৃতি: আমি রুবিকে চিনি না, তবে এটি টিআইওতে কাজ করে )

p,a,b=$*
p=p.to_i
b=b.to_i

30 এর পরিবর্তে 26 26 বাইট (trick * ট্রিকটি নির্দেশ করার জন্য স্নাককে ধন্যবাদ)


এআরজিভিতে $ * হিসাবেও অ্যাক্সেস করা যায় যা দুটি বাইট সংরক্ষণ করে
স্ন্যাক

4
@ স্ন্যাক হি, একটি টিপসের জবাব গল্ফ করে :)
অ্যাডমবর্কবার্ক

6

একটি ল্যাম্বডা ব্যবহার করুন

উত্তরগুলি সাধারণত আপনার ইনপুট / আউটপুটটি ল্যাম্বদার প্যারামিটার / রিটার্ন মান হিসাবে ল্যাম্বদা ফাংশন হিসাবে অনুমোদিত হয়, তাই আপনি এটি করতে পারেন:

->p,a,b{...}

আপনি যদি fএটি কোনও ভেরিয়েবলের জন্য নির্ধারিত করেন তবে এটি হিসাবে ডাকা হবে

f[p,a,b]

সাধারণত ইনপুটগুলির ধরণগুলি ধরে নেওয়াও ঠিক আছে তবে নিরাপদ থাকতে আপনি নিজের উত্তরে এটি উল্লেখ করতে পারেন mention

গ্রহণযোগ্য ইনপুট / আউটপুট পদ্ধতি সম্পর্কে প্রাসঙ্গিক মেটা পোস্ট


6

আপনি একটি সম্পূর্ণ প্রোগ্রাম প্রয়োজন সঙ্গে stdin / stdout- এ IO কিছু কারণে, সবচেয়ে কম আপনি কি করতে পারেন ব্যবহার -nকরার জন্য এক কল কমান পতাকা gets.to_iথেকে eval$_:

p=eval$_
a=gets
b=gets.to_i

-nপতাকা দিয়ে আপনার কোড ঘিরে while gets ... endযদি আরো ইনপুট আপনার প্রোগ্রাম হ্রাস চেয়ে সরবরাহ করা হয়, তাই প্রোগ্রাম ইচ্ছা লুপ।

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