বিমূর্ত সিনট্যাক্স ট্রি গল্ফিং: ফিজবুজ, পাইথন


12

সারসংক্ষেপ

পাইথনে FizzBuzz প্রয়োগ করুন, খুব কম সংখ্যক টোকেন সহ।

চ্যালেঞ্জ

একটি প্রোগ্রাম লিখুন যা 1 থেকে 100 সহ দশমিক সংখ্যা মুদ্রণ করে। তবে সংখ্যার পরিবর্তে তিনটি মুদ্রণ "ফিজ" এবং পাঁচটি মুদ্রণ "বাজ" এর গুণকগুলির জন্য। সংখ্যার জন্য যা উভয় তিনটি এবং পাঁচটি "FizzBuzz" মুদ্রণের গুণক। প্রোগ্রামগুলি পাইথনের কিছু সংস্করণে লিখতে হবে।

আরও বিশদের জন্য দেখুন 1, 2, ফিজ, 4, বাজ

স্কোরিং

পাইথন 3 এর জন্য এই প্রোগ্রাম বা পাইথন 2 এর জন্য এই প্রোগ্রামের দ্বারা রিপোর্ট করা হিসাবে আপনার স্কোরটি আপনার কোডের বিমূর্ত সিনট্যাক্স ট্রি এর নোডের সংখ্যার সমান হবে । প্রোগ্রামগুলি চালাতে, আপনার কোডের ফাইলের নাম প্রোগ্রামে কমান্ড লাইন যুক্তি হিসাবে সরবরাহ করুন। এই ক্ষেত্রে:

python simple_counter.py fizzbuzz.py

এই প্রোগ্রামগুলি পাইথনের অ্যাস্ট মডিউলটি ভিত্তিক । আপনার যদি কোন অসুবিধা হয় তবে আমাকে জানান।

তুচ্ছ সমাধানগুলি প্রতিরোধ করতে, যেমন আসল প্রোগ্রামের সাথে একটি দীর্ঘ স্ট্রিং কার্যকর করা বা আউটপুটকে হার্ডকডিং করার জন্য কিছু অতিরিক্ত বিধিনিষেধ রয়েছে:

  • আপনার কোডের কোনও টোকেন 15 টি অক্ষরের বেশি হতে পারে। উপরের প্রোগ্রামগুলি আপনার জন্য এই প্রয়োজনীয়তাটি পরীক্ষা করবে। নোট করুন যে বাস্তবায়নের স্বাচ্ছন্দ্যের জন্য, উপরের প্রোগ্রামগুলি টোকেন হিসাবে মন্তব্য গণনা করে।

  • কোড কার্যকরকরণ / মূল্যায়ন নিষিদ্ধ।

কোনও কিছুর অনুমতি আছে কিনা তা নিয়ে আপনার যদি প্রশ্ন থাকে তবে আমাকে জিজ্ঞাসা করুন।

স্কোরিং হিউরিস্টিক্স

নিম্নলিখিত প্রোগ্রামগুলি সাধারণত আপনার প্রোগ্রামের স্কোর গণনা করার জন্য যথেষ্ট:

  • ব্লক বিবৃতি 1 পয়েন্ট হল: if, for ... in ..., while, else, ইত্যাদি

  • : স্বতন্ত্র বিবৃতি 1 পয়েন্ট হয় printপাইথন 2, break, pass, ইত্যাদি

  • চলক 2 পয়েন্ট

  • একক-টোকেন লিটারেল 1 পয়েন্ট হল: 2131, "Hello, world!",True

  • ফাংশনগুলি 3 পয়েন্ট (ভেরিয়েবল ব্যবহারের জন্য 2, 1 অতিরিক্ত): printপাইথন 3 range, ইত্যাদিতে etc.

  • অপারেটর 2 পয়েন্ট হল: +, *, %, and, not, ইত্যাদি

  • = 1 পয়েন্ট

  • : বৃদ্ধি নিয়োগ 2 পয়েন্ট হয় +=, |=ইত্যাদি

  • প্যারেন্টেসিস, ইনডেন্টেশন ইত্যাদি 0 পয়েন্ট।

  • একটি অ্যাসাইনমেন্ট বা এক্সপ্রেশনের বিপরীতে একটি অভিব্যক্তিযুক্ত একটি লাইন + 1 পয়েন্ট।

  • সব মিলিয়ে কোড থাকা 1 পয়েন্ট।

চ্যালেঞ্জ:

সর্বনিম্ন স্কোর জয়। শুভকামনা!


1
আমি এই স্টাইল পছন্দ করি। আপনাকে কেবলমাত্র ছোট প্রোগ্রামগুলির চেয়ে সহজ প্রোগ্রামে যেতে হবে।
16'7

1
এর জন্য আমাদের কি সত্যই কোড-চ্যালেঞ্জের অ্যাস-গল্ফ দরকার ? এটি কি কেবল পারমাণবিক-কোড-গল্ফের নির্দিষ্ট রূপ নয় ?
মার্টিন ইন্ডার

@ মার্টিনএেন্ডার আমি যেভাবে এটি করেছি তার কারণ হ'ল পারমাণবিক-কোড-গল্ফের ট্যাগ পাঠ্যটি বলে "আপনার প্রোগ্রামের টোকেনের সংখ্যা দ্বারা অ্যাটমিক কোড গল্ফটি স্কোর করে", এবং এটি এর মতো নয়, যদিও এটি কেবলমাত্র একটি সুন্দর অল্প পরিমান.
isaacg

উত্তর:



2

46

for x in range(100):print('Fizz'*(x%3>1)+'Buzz'*(x%5>3)or str(x+1))

X + 1 অজগর 3 এ স্ট্রিংফাই করা যাবে না?
ধ্বংসাত্মক লেবু

1
reprআমি জানি যতদূর মনে পড়েনি
কেদে

3
মুদ্রণটি একটি পূর্ণসংখ্যাটিকে তার তর্ক হিসাবে নিতে পারে, এটি আমার বক্তব্য ছিল
ধ্বংসাত্মক লেবু


0

পাইথন 2, 36

for i in range(1, 101):
    print (not i % 3) * "Fizz" + (not i % 5) * "Buzz" or i

আমি মনে করি এটি এমন সংখ্যার সংক্ষিপ্ততম পন্থা যা প্রচুর সংখ্যক / স্ট্রিং ব্যবহার করে না।

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