Я работаю над проблемой, которую я поставил себе для удовольствия: создать скрипт на python, который печатает четные числа от 0 до 100. Задача - сделать скрипт как можно меньше. Это то, что я до сих пор:
for x in range(0, 101):
if (x % 2 == 0):
print x
В настоящее время это 60 байтов. Кто-нибудь может придумать способ сделать его меньше?
Изменить: print(*range(2,101,2),sep='\n')
что составляет 30 байтов. Немного меньше?
i=2;exec"print i;i+=2;"*50
0
или2
? Я не сильно питон, но мне кажется, что ваши два примера делают разные вещи. Пожалуйста, поправьте меня, если нет.print "0 10 100"
(двоичный ли это нормально?)Ответы:
Python 2 - 12 символов
Десятичное представление всех четных чисел от 0 до 100 можно найти в выходных данных:
Как бонус, так и нечетные числа.
источник
Python 3, 22 (возможно, не допускается)
Если задача состоит в том, чтобы «создать скрипт Python, который печатает четные числа от 0 до 100», а не «создать скрипт Python, который печатает четные числа от 0 до 100, разделенные новой строкой », то самое короткое решение:
Помните, в коде гольф очень важно не накладывать на себя никаких ограничений, которые вам не нужны - делайте то, о чем просит проблема, и не более того.
источник
possibly not allowed
в названии. С другой стороны, также возможно, что он / она попал в соответствие с выводом его начальной программы, и забыл начальную спецификацию проблемы. Поскольку я не знаю, в чем дело, я дал этот ответ.Python2 26
независимое открытие решения @ bitpwner
источник
Python 2 - 26
Основано на советах по exec с умножением строк, которые можно найти в разделе Советы по игре в гольф на Python .
источник
Python 2, 26 (возможно, не допускается)
Не было строго указано, в каком порядке должны были быть напечатаны номера.
источник
Python 2, 28
источник
Python 2 - 20 (возможно, не допускается)
Это специфично для Python 2 и, вероятно, обманывает, поскольку печатает список, но так как все числа оказываются на экране:
источник
Python 2 в * NIX, 24
Если вам нужно добавить
Тогда всего 33 символа.
источник
os.system
называет системную программу.os.system('a')
, потому что уa
меня в системеPython 3, 29
Если вы работаете в Python 2 и уже импортировали функцию печати, вам не нужно превращать объект итератора в список, и он становится 25 символами:
Я не знаю, что это совершенно справедливо, хотя.
Вот еще одна забавная идея, которая работает в Python 2 или 3. Это немного дольше.
источник
*a,=map(print,range(0,101,2))
использования расширенной итерируемой распаковки .Python 2 - 24
(на основе решения Bitpwner и Sparr)
В оболочке «_» содержит значение ранее вычисленного выражения
источник
range(0,102,2)
так как на экране будут показаны все четные числа (плюс несколько запятых и две скобки).Понимание списка Python - 39
При этом используется понимание списка, одна хитрость для того, чтобы сделать его короче, состоит в том, чтобы умножить индекс на 2, а не идти от 0 до 100, и на конечную
if x % 2
проверку на четность.Используя карту и предложение @ isaacg, получается 39 одинаковых символов:
Изменить: после разделения значений по новой строке это далеко не самое короткое.
источник
prints the even numbers from 0 to 100
, а не просто генерировать их. Кроме того, если вы просто хотите список,range(0,101,2)
короче.Python 2 - 20 (сомнительно)
Если решение isaacg с пробелами в порядке, то, вероятно, нормальное форматирование списка также:
Для дальнейшего скручивания правил примените предложение SirBraneDamuj из комментариев:
а вам 16 лет. А что, если их разделяет какой-то лишний мусор?
источник