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
벡터화

2
이 팁은 python golfing tips 페이지 codegolf.stackexchange.com/questions/54/…에 있습니다.
벡터화

4
0또는 에서 시작해야 2합니까? 나는 파이썬을별로하지 않지만 두 예제가 다른 일을하는 것처럼 보입니다. 그렇지 않은 경우 수정하십시오.
Geobits

20
print "0 10 100"(바이너리 OK인가?)
r3mainer

1
@squeamishossifrage는 공간에서 골프를 잊지 마세요)
isaacg

답변:


37

파이썬 2-12 자

print 8**999

0에서 100까지의 모든 짝수의 10 진수 표현은 출력에서 ​​찾을 수 있습니다.

153778990270139647116444851659594064330089236967104214470764753645007350076834118596920008479824182447803706156756475613564110522612279602948135310258168541404369918794480627176627915013920083365328091029969610052054309789461709376676636344651086297099162082351332867728061686056465813162964114500668343488577962834185114919242101638217077550294093097112980059735456387540301162747936045475366317560310988720435512281742591085641505551107966844283901574058972330493685836063965131445246304097593431852972101058022587137885482726523043570690342524474585327775688980689010069001288756281975198668705741000141718184277589376710426738442847382969979234512669279398030637083755270090078676447687796406001053805898105262326290072552249025832780916090265261064205460488458795026145331708830141367124625271312584437671840499845750728447412590406684361326531266896486146862384988911439049971734022314877278748672

보너스로 홀수도 가능합니다.


유일한 문제 : 홀수와 더 많은 것을 인쇄합니다.
seequ

1
@Sieg, 짝수 및 홀수 ... 약간 모든 기초를 다뤘습니다. ;)
paqogomez

다른 사용자와 다른 의견을 가진 것은 이번이 처음이 아닙니다. 어쨌든 당신의 대답을 좋아합니다.
seequ

@paqogomez 짝수 0-100, 홀수, 더 많은 짝수> 100
OJFord

멍청한 Q, 왜 구체적으로 8 * 999를 요구하지 않는 것이 궁금하십니까?
0xc0de

31

Python 3, 22 (아마도 허용되지 않음)

"0에서 100까지의 짝수를 인쇄하는 Python 스크립트를 작성하는 것"이 ​​아니라 "0에서 100까지의 짝수를 인쇄하는 Python 스크립트를 작성하는 것이 아니라, 개행이 분리 된 경우 "라는 가장 어려운 해결책은 다음과 같습니다.

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

코드 골프에서는 자신에게 제한을 두지 않는 것이 중요합니다. 문제가 요구하는 것을 더 이상하지 마십시오.


1
편집에서 OP의 두 번째 답변이 줄 바꿈으로 구분되어 있다고 생각하지 않습니까?
Moop

10
그것은 전적으로 가능 possibly not allowed하며 제목에 있습니다. 반면에, 초기 프로그램의 출력과 일치하여 초기 문제 사양을 잊었을 수도 있습니다. 어떤 경우인지 알 수 없으므로이 답변을주었습니다.
isaacg

22

파이썬 2 26

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

@bitpwner의 솔루션에 대한 독립적 인 발견


그것을 실행하려고하면 SyntaxError가 발생합니다. 이 답변의 최상위 줄에 "Python 2, 26"이 표시되어야합니까?

+1,이 솔루션을 게시하는 데 58 초 더 빠른 것으로 보입니다. :)
Ilmari Karonen

19

파이썬 2-26

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

Python의 골프위한 팁 에서 찾은 문자열 곱셈을 가진 exec에 대한 팁을 기반으로합니다 .


0을 포함해야합니다 (Sparr의 솔루션 참조).
isaacg

그것을 실행하려고하면 SyntaxError가 발생합니다. 이 답변의 최상위 줄에 "Python 2-26"이 표시되어야합니까?

13

Python 2, 26 (허용되지 않을 수 있음)

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

번호가 인쇄되는 순서대로 엄격하게 지정되지 않았습니다.



9

파이썬 2-20 (아마도 허용되지 않음)

이것은 파이썬 2에만 해당되며 목록을 인쇄하기 때문에 부정 행위 일 수 있지만 모든 숫자가 화면에 표시되므로

print range(0,101,2)

7

* NIX, 24의 Python 2

os.system('seq 0 2 100')

추가해야 할 경우

import os

그런 다음 총 33 자입니다.


영리한-이것은 경우에 따라 훨씬 우수 할 수 있습니다. OS에만 해당됩니까?
isaacg

4
@isaacg os.system시스템 프로그램 을 호출 할 때 매우 그렇습니다 .
seequ

3
허용되는 경우, 시스템에서 원하는 동작으로 os.system('a')호출되는 프로그램이 a
생겼기 때문입니다

5
@OllieFord seq는 gnu coreutils의 일부입니다. 당신은 많은 영향력을 가지고 있지 않습니다.
Sparr

4

파이썬 3, 29

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

Python 2에 있고 인쇄 기능을 이미 가져온 경우 반복자 객체를 목록으로 만들 필요가 없으며 25 자로됩니다.

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

나는 그것이 완전히 공평하다는 것을 모른다.

파이썬 2 또는 3에서 작동하는 또 다른 재미있는 아이디어가 있습니다.

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

1
Python 3 버전은 Extended Iterable Unpacking*a,=map(print,range(0,101,2))사용하여 단축 할 수 있습니다 .
flornquake

@flornquake 감사합니다. 업데이트했습니다.
IanH

3

파이썬 2-24

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

(bitpwner 및 Sparr 솔루션 기반)

쉘에서 "_"는 이전에 평가 된 표현식의 값을 포함합니다.


스크립트가 아닌 일부 Python 인터프리터의 대화식 모드 (예 : IPython에서는 작동하지 않음)에 붙여 넣은 경우에만 작동합니다.
Wrzlprmft

네 말이 맞아 잊어 버렸어 (btw는 표준 파이썬 콘솔에서 작동합니다)
le_vine

1
-1-이 질문에는 파이썬 스크립트가 명시 적으로 언급되어 있는데, 이는 코드가 파일에 작성되어 실행 되어야 함을 의미합니다 . 그렇지 않으면 더 나은 해결책은 간단합니다. range(0,102,2)화면에 모든 짝수 (쉼표와 두 개의 대괄호)가 표시되기 때문입니다.
Bakuriu

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
이것은 질문에 대답하지 않습니다-OP는 prints the even numbers from 0 to 100단지 그것을 생성하는 것이 아니라 말합니다 . 또한 목록을 원하면 range(0,101,2)더 짧습니다.
isaacg

1
@isaacg 질문에 대답하기 위해 업데이트되었습니다. 조인을 위해 str ()에 각 값을 포함시켜야합니다.
Ed Griebel

@Wrzlprmft 제안 주셔서 감사합니다, 내가 그렇게 할 수 몰랐어요! 이 새로운 지식을 반영하기 위해 코드가 변경되었습니다.
Ed Griebel

1

파이썬 2-20 (질문)

isaacg의 공백으로 분리 된 솔루션 이 정상이면 아마도 일반 목록 형식도 다음과 같습니다.

print range(0,101,2)

더 많은 규칙 왜곡을 위해서는 SirBraneDamuj의 의견을 다음 의견에서 적용하십시오.

print range(101)

여러분은 16 세입니다. 쓰레기를 분리하는 여분의 쓰레기가 있다면?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.