Фон
Мініфери використовуються, як правило, під час обслуговування JavaScript у вашому веб-переглядачі. Зазвичай використовується для зменшення кількості байтів, які потрібно надіслати. Збереження пропускної здатності корисно з зрозумілих причин. Деякі люди використовують обфускатори (які навмисно ускладнюють читання коду), я не говорю про них.
Ми будемо мінімізувати Python 2
Я обговорював питання про те, чи використовувати JavaScript чи Python для досвіду мінімізації, і вирішив про Python з двох причин: пробіл має значення, і я думаю, що це додасть цікавої динаміки проблеми. Крім того, використання Python 2.7 забезпечить ще одну динаміку, таку як видалення зайвого ()
під час друку (тобто print("Hello world")
проти print"Hello world"
). Я особисто хотів би відкрити його для будь-якої мови, але для деяких мов цей процес не має великого сенсу. І те, яку мову ви вирішите змінити, безпосередньо вплине на ваш показник (і якщо мова навіть може бути спрощена).
Технічні характеристики
Ваша мета - лише змінити код таким чином, який ні в якому разі не змінить його функціональність. Звичайно, ви можете змінювати імена змінних (всередині вашої програми мінімізації) до тих пір, поки це не вплине на вихід (слідкуйте за обсягом ). Хоча я даю вам конкретну програму, будь ласка, не оптимізуйте для тестового випадку, оскільки всі стандартні лазівки заборонені.
Оцінка : довжина програми після того, як ви її мінімізували.
Введення : Будь-яка програма Python 2.7 (яка не містить помилок)
Вихід : мінімізована версія.
Хоча ваш код повинен вміщувати весь дійсний вхід Python 2.7, необхідно перевірити свій скрипт на щось, щоб довести його ефективність.
Клацніть тут, щоб переглянути приклад програми.
Зробити проблему більш доступною
Не соромтеся використовувати або змінювати будь-який код, знайдений всередині мого рішення (перелічено нижче). Я зробив це для того, щоб ви почали працювати з базовими цитатами; однак ви можете розширити його до відступу тощо.
Приклади способів мінімізації Python
Весь пробіл можна замінити на мінімально можливу кількість (я визнаю, що в Python ви можете робити деякі хитрі речі з вкладками , але я залишаю це вирішувати, чи реалізувати це чи ні).
Приклад
Наступні:
def print_a_range(a):
for i in range(a):
print(i)
Може бути:
def print_a_range(a):
for i in range(a):
print(i)
Технічно, якщо всередині циклу є лише один рядок, ви можете стиснути його ще більше:
def print_a_range(a):
for i in range(a):print(i) #Note, you can also remove the `()` here.
Однак є ще один спосіб зменшити пробіл у Python:
Наступні:
print ([a * 2 for a in range(20) if a % 2 == 0])
Може бути:
print([a*2for a in range(20)if a%2==0])
Зауважте, що немає необхідності у проміжку між 2
та for
. Змінна, функції та ключові слова не можуть починатися з числа. Отже, інтерпретатор Python не в порядку <num><keyword>
, місця немає. Також слід зазначити, що не має місця між )
іif
.
Зверніть увагу, ви не повинні змінювати вихід програми! Так:
print"f(x)=x*2 is a great equation!"
Наведене вище твердження про друк має залишатися незмінним, оскільки видалення проміжку між ними 2
та is
змінення виводу.
'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
на '1'*100
? Вимагаєте робити так, як поведінка однакова?