এমনকি 0 থেকে 100 পর্যন্ত সংখ্যার মুদ্রণের জন্য সবচেয়ে ছোট পাইথন স্ক্রিপ্ট


11

আমি এমন একটি সমস্যায় কাজ করছি যা আমি নিজেকে মজাদার জন্য নির্ধারণ করেছি, এটি একটি অজগর স্ক্রিপ্ট তৈরি করা যা 0 থেকে 100 পর্যন্ত সমান সংখ্যা প্রিন্ট করে। চ্যালেঞ্জটি যতটা সম্ভব ছোট করা to আমার এ পর্যন্ত যা আছে:

for x in range(0, 101):
    if (x % 2 == 0):
        print x

বর্তমানে এটি 60 বাইট এটিকে আরও ছোট করার উপায় কি কেউ ভাবতে পারেন?


সম্পাদনা করুন: print(*range(2,101,2),sep='\n')যা 30 বাইট আরও ছোট?


4
i=2;exec"print i;i+=2;"*50
ভেক্টরাইজড


4
এটা কি শুরু হবে 0নাকি 2? আমি অজগরটি খুব বেশি করি না, তবে এটি আপনার কাছে দুটি উদাহরণ বিভিন্ন জিনিস করার মতো বলে মনে হচ্ছে। না হলে দয়া করে আমাকে সংশোধন করুন।
Geobits

20
print "0 10 100"(বাইনারি ঠিক আছে?)
r3mainer

1
@ স্কোয়ামিশোসিফ্রেজে স্থানটি গল্ফ করতে ভুলবেন না;)
ইসাএাকগ

উত্তর:


37

পাইথন 2 - 12 টি অক্ষর

print 8**999

0 থেকে 100 পর্যন্ত সমস্ত এমনকি সংখ্যার দশমিক প্রতিনিধিত্ব আউটপুটটিতে পাওয়া যাবে:

153778990270139647116444851659594064330089236967104214470764753645007350076834118596920008479824182447803706156756475613564110522612279602948135310258168541404369918794480627176627915013920083365328091029969610052054309789461709376676636344651086297099162082351332867728061686056465813162964114500668343488577962834185114919242101638217077550294093097112980059735456387540301162747936045475366317560310988720435512281742591085641505551107966844283901574058972330493685836063965131445246304097593431852972101058022587137885482726523043570690342524474585327775688980689010069001288756281975198668705741000141718184277589376710426738442847382969979234512669279398030637083755270090078676447687796406001053805898105262326290072552249025832780916090265261064205460488458795026145331708830141367124625271312584437671840499845750728447412590406684361326531266896486146862384988911439049971734022314877278748672

বোনাস হিসাবে, তাই বিজোড় সংখ্যা করতে পারেন।


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

1
@ সিগ, এমনকি অদ্ভুত ... কিন্ডা সমস্ত ঘাঁটিগুলি coveredেকে ফেলেছে, নিশ্চিত যে আপনি কীভাবে "আরও অনেক কিছু" পেয়েছেন তা নিশ্চিত নয়। ;)
পাকোগোমেজ

অন্যান্য ব্যবহারকারীর চেয়ে আমার মতামত প্রথম নয়। আমি যাই হোক না কেন আপনার উত্তর পছন্দ।

@ পাইকোগোমেজ এমনকি সংখ্যা 0-100, বিজোড় সংখ্যা এবং আরও অনেকগুলি সংখ্যক> 100
ওজেফোর্ড

বোবা প্রশ্ন জিজ্ঞাসা করা এড়াতে খুব কৌতূহল, কেন বিশেষত 8 * 999?
0xc0de

31

পাইথন 3, 22 (সম্ভবত অনুমোদিত নয়)

যদি চ্যালেঞ্জটি হয় "পাইথন স্ক্রিপ্ট তৈরি করা যা 0 থেকে 100 পর্যন্ত সমান সংখ্যা প্রিন্ট করে" এবং "পাইথন স্ক্রিপ্ট তৈরি না করে যা 0 থেকে 100 পর্যন্ত সমান সংখ্যা প্রিন্ট করে, নিউলাইন পৃথক করে ", তবে সংক্ষিপ্ততম সমাধানটি হল:

print(*range(0,101,2))

মনে রাখবেন, কোড গল্ফের পক্ষে নিজের উপর কোনও সীমাবদ্ধতা না রাখার খুব দরকার - সমস্যাটি যা বলে, তা করুন এবং আরও কিছু না।


1
সম্পাদনাটিতে ওপি-র দ্বিতীয় উত্তরটি কী আপনি কী ভাবেন যে তিনি নতুন লাইনটি আলাদা করতে চেয়েছিলেন?
মুপ

10
এটি সম্পূর্ণরূপে সম্ভবত এবং এটিই possibly not allowedশিরোনামে রয়েছে। অন্যদিকে, এটিও সম্ভব যে সে / সে তার প্রাথমিক প্রোগ্রামটির আউটপুটটির সাথে মিলে যায়, এবং প্রাথমিক সমস্যা সম্পর্কিত অনুমানটি ভুলে যায়। যেহেতু আমি জানি না কোনটি মামলা তাই আমি এই উত্তরটি দিয়েছি।
isaacg

22

পাইথন 2 26

i=0;exec"print i;i+=2;"*51

@ বিটপউনার এর সমাধানের স্বাধীন আবিষ্কার


আমি এটি চালানোর চেষ্টা করার সময় আমি একটি সিনট্যাক্স এরির পাই। এই উত্তরের শীর্ষ লাইনে "পাইথন 2, 26" বলা উচিত?

+1, এই সমাধানটি পোস্ট করার জন্য আপনি 58 সেকেন্ড দ্রুত গতিযুক্ত বলে মনে হয়। :)
ইলমারি করোনেন

19

পাইথন 2 - 26

i=0;exec"print i;i+=2;"*51

পাইথনে গল্ফ করার জন্য টিপসে স্ট্রিংয়ের গুণটির সাথে এক্সিকিউটে টিপটির উপর ভিত্তি করে ।


0 টি অন্তর্ভুক্ত করা উচিত, স্পার এর সমাধান দেখুন।
isaacg

আমি এটি চালানোর চেষ্টা করার সময় আমি একটি সিনট্যাক্স এরির পাই। এই উত্তরের শীর্ষ লাইনে "পাইথন 2 - 26" বলা উচিত?

13

পাইথন 2, 26 (সম্ভবত অনুমোদিত নয়)

i=102
while i:i-=2;print i

এটি কঠোরভাবে সুনির্দিষ্টভাবে নির্দিষ্ট করা হয়নি, যাতে ক্রমানুসারে নম্বরগুলি প্রিন্ট করা উচিত।



9

পাইথন 2 - 20 (সম্ভবত অনুমোদিত নয়)

এটি পাইথন 2 নির্দিষ্ট এবং সম্ভবত প্রতারণা কারণ এটি তালিকাটি মুদ্রণ করে, তবে যেহেতু সমস্ত সংখ্যা পর্দায় শেষ হয়:

print range(0,101,2)

7

পাইথন 2 * এনআইএক্স, 24

os.system('seq 0 2 100')

আপনার যদি যোগ করার প্রয়োজন হয়

import os

তারপরে মোট 33 টি অক্ষর।


চতুর - এটি কিছু ক্ষেত্রে ভাল হতে পারে। এটি ওএস নির্দিষ্ট কি?
isaacg

4
@ আইসএইচজি অনেক কিছু, যেমন os.systemএকটি সিস্টেম প্রোগ্রামকে কল করে।

3
যদি এটি অনুমোদিত হয়, তবে os.system('a'), কারণ aআমার সিস্টেমে কাঙ্ক্ষিত আচরণের সাথে আমার একটি প্রোগ্রাম ডাকা হতে পারে ..
ওজেফোর্ড

5
@ অলিফোর্ড Seq gnu কোর্টিলের অংশ। আপনার কাছে তেমন একটা গোলমাল নেই।
স্পার 1

4

পাইথন 3, 29

*a,=map(print,range(0,101,2))

আপনি যদি পাইথন 2 এ থাকেন এবং প্রিন্ট ফাংশনটি ইতিমধ্যে আমদানি করে নিয়েছেন, আপনাকে পুনরাবৃত্তকারীটিকে কোনও তালিকার মধ্যে তৈরি করতে হবে না এবং এটি 25 টি অক্ষরে পরিণত হয়:

map(print,range(0,101,2))

আমি জানি না যে যদিও এটি সম্পূর্ণ ন্যায্য।

পাইথন 2 বা 3 এ কাজ করে এমন আরও একটি মজাদার ধারণা এখানে।

def p(i):
    if i+2:p(i-2);print i
p(100)

1
পাইথন 3 সংস্করণটি এক্সটেন্ডেড ইটারেবল আনপ্যাকিং*a,=map(print,range(0,101,2)) ব্যবহার করে সংক্ষিপ্ত করা যেতে পারে ।
ফ্লোরকোয়েন

@ ফ্লোরকোয়াক ধন্যবাদ, আমি এটি আপডেট করেছি।
আইয়ানএইচ

3

পাইথন 2 - 24

0;exec"_+=2;print _;"*50

(বিটপউনার এবং স্পার সমাধানের উপর ভিত্তি করে)

শেলটিতে, "_" পূর্ববর্তী মূল্যায়িত এক্সপ্রেশনটির মান ধারণ করে


আপনার লক্ষ করা উচিত যে এটি কেবলমাত্র কিছু পাইথন ইন্টারপ্রেটারির ইন্টারেক্টিভ মোডে আটকানো হলে (যেমন, এটি আইপথিতে কাজ করে না) স্ক্রিপ্ট হিসাবে নয় works
Wrzlprmft

তুমি ঠিক বলেছ, আমি তা উল্লেখ করতে ভুলে গেছি (
বিটিডাব্লু

1
-1 - প্রশ্নটিতে স্পষ্টভাবে একটি অজগর স্ক্রিপ্ট উল্লেখ করা হয়েছে , যার অর্থ কোডটি কোনও ফাইলে লেখা উচিত এবং সম্পাদন করা উচিত। নাহলে আরও ভাল সমাধান হ'ল: range(0,102,2)যেহেতু এটি স্ক্রিনে সমস্ত সমান সংখ্যা (প্লাস কিছু কমা এবং দুটি বন্ধনী) প্রদর্শন করবে।
বকুরিউ

1

পাইথন তালিকার সমঝোতা - 39

এটি একটি তালিকা বোধগম্য ব্যবহার করে, একটি কৌশলকে এটি সংক্ষিপ্ত করে তোলার জন্য সূচকটি 0 থেকে 100 এর পরিবর্তে 2 দ্বারা গুণ করা হয় এবং সমান if x % 2জন্য ট্রেলিং চেকও থাকে ।

print'\n'.join(`2*x`for x in range(51))

একটি মানচিত্র এবং @ ইস্যাকের পরামর্শ ব্যবহার করে এটি একই 39 টি অক্ষর হিসাবে শেষ হয়:

print'\n'.join(map(str,range(0,101,2)))

সম্পাদনা: নিউলাইন দ্বারা মানগুলি আলাদা করার পরে এটি খুব কম নয় not


1
এটি প্রশ্নের উত্তর দেয় না - ওপি বলে prints the even numbers from 0 to 100, কেবল এগুলি উত্পন্ন করে না। এছাড়াও, আপনি যদি কেবল তালিকাটি চান তবে range(0,101,2)খাটো হয়।
isaacg

1
প্রশ্নের উত্তর দেওয়ার জন্য @ আইসএইচজি আপডেট হয়েছে, এখন দীর্ঘতর হওয়ার জন্য, জোড়ার জন্য প্রতিটি মান টিআর () এ এম্বেড করা দরকার।
এড গ্রিবেল

@Wrzlprmft এই পরামর্শের জন্য ধন্যবাদ, আমি জানতাম না যে আমি এটি করতে পারি! কোডটি এই নতুন জ্ঞানের প্রতিবিম্বিত করতে পরিবর্তিত হয়েছে।
এড গ্রিবেল

1

পাইথন 2 - 20 (প্রশ্নোত্তর)

যদি ইসাকের স্পেস- বিভাজনযুক্ত সমাধানটি ঠিক থাকে তবে সম্ভবত সাধারণত তালিকা ফর্ম্যাটিংটিও:

print range(0,101,2)

আরও নিয়ম মোচড়ানোর জন্য, মন্তব্যগুলি থেকে স্যারব্রেনডামুজের পরামর্শটি প্রয়োগ করুন:

print range(101)

এবং আপনি 16 এ আছেন। সুতরাং যদি সেখানে কিছু অতিরিক্ত আবর্জনা তাদের আলাদা করে দেয় তবে কী হবে?

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