सबसे छोटी पायथन लिपि 0 से 100 तक की संख्याएँ भी छापती है


11

मैं एक ऐसी समस्या पर काम कर रहा हूं, जिसे मैंने खुद को मनोरंजन के लिए सेट किया है, जो कि एक अजगर स्क्रिप्ट बनाने के लिए है, जो 0 से 100 तक की संख्या को प्रिंट करता है। चुनौती यह है कि स्क्रिप्ट को जितना संभव हो उतना छोटा बनाया जाए। अभी तक मेरे पास इतना ही है:

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
vectorized


4
क्या इसे शुरू करना चाहिए 0या 2? मैं ज्यादा अजगर नहीं करता, लेकिन यह मुझे लगता है कि आपके दो उदाहरण अलग-अलग काम करते हैं। कृपया मुझे सुधारें अगर नहीं।
Geobits 16

20
print "0 10 100"(बाइनरी ओके?)
r3mainer

1
@squeamishossifrage अंतरिक्ष से बाहर निकलना मत भूलना;)
isaacg

जवाबों:


37

पायथन 2 - 12 अक्षर

print 8**999

0 से 100 तक की सभी संख्याओं का दशमलव प्रतिनिधित्व आउटपुट में पाया जा सकता है:

153778990270139647116444851659594064330089236967104214470764753645007350076834118596920008479824182447803706156756475613564110522612279602948135310258168541404369918794480627176627915013920083365328091029969610052054309789461709376676636344651086297099162082351332867728061686056465813162964114500668343488577962834185114919242101638217077550294093097112980059735456387540301162747936045475366317560310988720435512281742591085641505551107966844283901574058972330493685836063965131445246304097593431852972101058022587137885482726523043570690342524474585327775688980689010069001288756281975198668705741000141718184277589376710426738442847382969979234512669279398030637083755270090078676447687796406001053805898105262326290072552249025832780916090265261064205460488458795026145331708830141367124625271312584437671840499845750728447412590406684361326531266896486146862384988911439049971734022314877278748672

एक बोनस के रूप में, इसलिए विषम संख्याएं हो सकती हैं।


केवल समस्या: यह विषम संख्या और बहुत अधिक प्रिंट करता है।
seequ

1
@Sieg, सम और विषम ... थोड़े से सभी आधारों को कवर किया गया है, यह सुनिश्चित नहीं है कि आप इसमें "बहुत अधिक" कैसे पाएंगे। ;)
पहोगोमेज़

पहली बार नहीं है जब मेरे पास अन्य उपयोगकर्ताओं की तुलना में एक अलग राय है। मुझे आपका जवाब वैसे भी पसंद है।

@paqogomez सम संख्याएँ 0-100, विषम संख्याएँ, और भी बहुत कुछ संख्याएँ> 100
OJFord

एक गूंगे क्यू से बचने के लिए बहुत उत्सुक, विशेष रूप से 8 * 999 क्यों?
0xc0de

31

पायथन 3, 22 (संभवतः अनुमति नहीं है)

यदि चुनौती "एक अजगर स्क्रिप्ट बनाने के लिए है जो 0 से 100 तक की संख्याओं को प्रिंट करती है" और न कि "एक पायथन स्क्रिप्ट बनाने के लिए जो 0 से 100 तक की संख्याओं को प्रिंट करती है , तो न्यूलाइन को अलग किया जाता है ", फिर सबसे छोटा समाधान है:

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

याद रखें, कोड गोल्फ में यह बहुत महत्वपूर्ण है कि अपने आप पर कोई सीमा न रखें - आपके पास वह समस्या नहीं है जो समस्या पूछती है, और नहीं।


1
क्या ओपी का दूसरा उत्तर संपादित नहीं होगा, आपको लगता है कि वह चाहता था कि यह अलग हो जाए?
Moop

10
यह पूरी तरह से संभव है, और इसलिए possibly not allowedशीर्षक में है। दूसरी ओर, यह भी संभव है कि वह / वह अपने प्रारंभिक कार्यक्रम के आउटपुट से मेल खाते हुए पकड़ा गया हो, और प्रारंभिक समस्या की कल्पना भूल गया हो। चूंकि मुझे नहीं पता कि मामला क्या है, इसलिए मैंने यह जवाब दिया।
isaacg

22

पायथन 2 26

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

@ bitpwner के समाधान की स्वतंत्र खोज


जब मुझे लगता है कि मुझे चलाने की कोशिश करता है तो मुझे एक सिंटेक्सऑयर मिलता है। क्या इस उत्तर की शीर्ष पंक्ति को "पायथन 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 * में * NIX, 24

os.system('seq 0 2 100')

अगर आपको जोड़ना है

import os

तब कुल 33 वर्ण होते हैं।


चतुर - यह कुछ मामलों में बेहतर हो सकता है। क्या यह ओएस विशिष्ट है?
isaacg

4
@ लिसाकग बहुत बहुत, जैसा कि os.systemएक सिस्टम प्रोग्राम कहता है।
२०

3
अगर यह अनुमति है, तो os.system('a'), क्योंकि मुझे aअपने सिस्टम पर वांछित व्यवहार के साथ एक कार्यक्रम कहा जाता है ..
OJFord

5
@ ऑलीफोर्ड सीक ग्नू कोरुटिल्स का हिस्सा है। आपके पास बहुत अधिक थक्का नहीं है।
Sparr

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
विस्तारित Iterable अनपैकिंग*a,=map(print,range(0,101,2)) का उपयोग करके पायथन 3 संस्करण को छोटा किया जा सकता है ।
flornquake

@flornquake धन्यवाद, मैंने इसे अपडेट किया है।
IANH

3

अजगर 2 - 24

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

(Bitpwner और Sparr समाधान पर आधारित)

शेल में, "_" में पहले से मूल्यांकन की गई अभिव्यक्ति का मूल्य होता है


आपको ध्यान देना चाहिए कि यह केवल काम करता है, अगर कुछ पायथन दुभाषियों के संवादात्मक मोड में चिपकाया जाता है (उदाहरण के लिए, यह आईपीथॉन में काम नहीं करता है) और स्क्रिप्ट के रूप में नहीं।
Wrzlprmft

आप सही हैं, मैं इसका उल्लेख करना भूल गया। (btw मानक पायथन कंसोल में काम करता है)
le_vine

1
-1 - प्रश्न में स्पष्ट रूप से एक पायथन लिपि का उल्लेख है , जिसका अर्थ है कि कोड को एक फ़ाइल में लिखा जाना चाहिए और निष्पादित किया जाना चाहिए । अन्यथा एक बेहतर समाधान बस होगा: range(0,102,2)चूंकि यह स्क्रीन पर सभी समान संख्याओं (साथ ही कुछ कॉमा और दो ब्रैकेट) को प्रदर्शित करेगा।
बाकूरी

1

पायथन सूची समझ - 39

यह एक सूची समझ का उपयोग करता है, इसे छोटा करने के लिए एक ट्रिक 0 से 100 तक जाने के बजाय सूचकांक को 2 से गुणा करना है और if x % 2यहां तक ​​कि इसके लिए एक अनुगामी चेक भी है।

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

मानचित्र और @ isaacg के सुझाव का उपयोग करते हुए यह समान 39 वर्णों को समाप्त करता है:

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

संपादित करें: न्यूलाइन द्वारा मूल्यों को अलग करने के बाद यह अब तक का सबसे छोटा नहीं है।


1
यह सवाल का जवाब नहीं देता है - ओपी कहते हैं prints the even numbers from 0 to 100, न कि उन्हें उत्पन्न करें। इसके अलावा, अगर आप सिर्फ सूची चाहते हैं, range(0,101,2)कम है।
isaacg

1
@isaacg इस प्रश्न का उत्तर देने के लिए अपडेट किया गया, अब इसमें शामिल होने के लिए str () में प्रत्येक मान को एम्बेड करने की आवश्यकता है।
एड ग्रिबेल

@Wrzlprmft सुझाव के लिए धन्यवाद, मुझे नहीं पता था कि मैं ऐसा कर सकता हूं! इस नए ज्ञान को दर्शाने के लिए कोड बदल गया।
एड ग्रिबेल

1

अजगर 2 - 20 (संदिग्ध)

यदि isaacg का अंतरिक्ष-पृथक समाधान ठीक है, तो संभवतः सामान्य सूची स्वरूपण भी है:

print range(0,101,2)

आगे नियम-मोड़ के लिए, टिप्पणियों से SirBraneDamuj का सुझाव लागू करें:

print range(101)

और आप 16 साल के हैं। तो क्या होगा अगर कुछ अतिरिक्त कचरा उन्हें अलग कर रहा है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.