Pyth Practice 2


21

Час для іншої практики Pyth. Я представляю тут 8 тверджень про проблеми з рішенням Pyth кожен. Ці рішення пише початківець Pyth. Він цілком радий цим рішенням, оскільки вони набагато коротші, ніж відповіді його Python. Однак ваше завдання - показати йому краще. Створюйте рівноцінні, але короткіші програми.

Це виклик щодо хитрощів та оптимізацій, які можна використати при гольфі в Pyth. Гольфісти в Піті можуть розпізнати багато прийомів, які призводять до коротших рішень. Однак деякі проблеми потребують незвичних підходів, які рідко використовуються. Деякі хитрощі, яких я насправді ніколи не бачив у дикій природі. Але жодне рішення не вимагає жодних помилок або дивної поведінки, що не було навмисним дизайнерами Pyth. Усі відповіді повинні бути дійсними для останнього піт-ком ( 2b1562b ) станом на це питання. Можна використовувати інтерпретатор Pythдля тестування. Зараз це сучасне оновлення, і я не очікую великих змін в Pyth, які приведуть до недійсності оптимальних рішень або дозволять зробити коротші рішення. Інтернет-перекладач також пропонує нову довідку про символів. Оскільки він є досить новим, ви можете (повинні) також використовувати старі документи , якщо щось невірно або відсутнє.

Мета: Орієнтовні рішення містять 81 байт. Ваша мета - перемогти це якомога більше. Виграє подання, яке вирішує всі 8 задач з найменшою загальною кількістю байтів. Tiebreaker - дата подання.

Звичайно, справедливі лише подання, які містять рішення для всіх 8 проблем. Ви можете використовувати еталонну реалізацію, якщо ви не можете покращити оцінку однієї (або більше) конкретної проблеми.

Ваші рішення повинні друкувати точно такий же вихід, як і еталонні рішення. За винятком додаткового нового рядка.

Оскільки це практика Pyth, дозволені лише програми, написані мовою Pyth.

Відповідь: Будь ласка, зіпсуйте всю свою відповідь, за винятком загальної оцінки. Мається на увазі, що ви не дивитесь на відповіді інших людей, перш ніж подавати власні. Ви можете створити спойлери, поставивши>! перед кожним рядком, наприклад:

>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...

Я сподіваюся, що я не обрав занадто складних або занадто тривіальних проблем. Сподіваючись, що багато учасників і кожен здобуде кілька нових поглядів на Pyth. Щасливого гольфу!

Проблема 1:

Створіть таку матрицю 9x9 та роздрукуйте її:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]

Довідкове рішення ( Посилання ):

V9m?>dNd0S9 (11 bytes)

Проблема 2:

Роздрукуйте всі цифри та всі літери в окремих рядках:

0
...
9
a
...
z

Довідкове рішення ( Посилання ):

VTN)VGN (7 bytes)

Проблема 3:

Знайдіть лексикографічно найменший паліндром, який є лексикографічно більшим або рівним, ніж вхідний рядок, що містить малі літери, і такий же, як вхідний рядок.

a -> a
abc -> aca
adcb -> adda

Довідкове рішення ( Посилання ):

hf&gTzqT_T^Glz (14 bytes)

Проблема 4:

Перевірте, чи число в діапазоні [0, номер введення). Це також має працювати для поплавців.

4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True

Довідкове рішення ( Посилання ):

&gQ0<QE (7 bytes)

Довідковий формат є to be tested value<newline>end value. Однак ви можете вибрати інший формат введення. Важливо лише те, що ви виконаєте постановку проблеми та даєте правильні результати.

Проблема 5:

Розбираємо рядок введення формату "\ d + [a-zA-Z] +". Зауважте, що число дійсно повинно бути числом, а не рядком, що містить цифри.

'123Test' -> [123, 'Test']

Довідкове рішення ( Посилання ):

A.ggk\Az,sGH (12 bytes)

Проблема 6:

Обчисліть суму чисел, які розділені однією чи кількома комами. Можна припустити, що в рядку є хоча б одне число.

11,2,,,3,5,,8 -> 29

Довідкове рішення ( Посилання ):

svM:z",+"3 (10 bytes)

Проблема 7:

Прочитайте додаткові цілі числа з введення, поки не отримаєте число 0. Роздрукуйте суму всіх чисел.

Довідкове рішення ( Посилання ):

WJE=+ZJ)Z (9 bytes)

Проблема 8:

Підсумуйте всі елементи квадратної матриці, крім основних по діагоналі (лівий верхній кут до правого нижнього кута).

Довідкове рішення ( Посилання ):

-ssQs.e@bkQ (11 bytes)

Мені дуже подобається ідея щодо специфічних для мови питань (і я відповів на це). Але я подумав, що питання, пов'язані з мовою, були нахмурені в PPCG?
Луїс Мендо

3
@LuisMendo Я думаю, що питання, пов'язані з мовою, лише нахмурені, якщо причиною цього питання є загальна неприязнь до мов гри в гольф, таких як CJam, Pyth, ..., або тому, що ОП розуміє лише певні мови. Це тут трохи інакше. Це питання головним чином розроблено, щоб показати деякі більш приховані особливості популярної (на PPCG) мови. Певним чином це як збірка хитрощів. Це не має сенсу, щоб дозволити це до кожної мови. Ось мета-допис на цю тему: посилання
Якубе

У 6 чи є числа додатними одноцифровими цілими числами?
xnor

@xnor Ви можете припустити, що вони позитивні, але вони можуть складатися з декількох цифр. Я заміню тестовий випадок.
Якубе

1
Я голосую за те, щоб закрити це питання поза темою, оскільки це багатоскладове завдання без взаємодії між частинами
pppery

Відповіді:


9

59 58 56 байт

Проблема 1:

j.tmLdS9Z (9 байт)

Проблема 2:

MTjG (5 байт) (Перший символ - це новий рядок)

Проблема 3:

h.f_IZ1z (8 байт)

Проблема 4:

%IQE (4 байти)

Проблема 5:

,J.vz-zJ (8 байт)

Проблема 6:

srXz\,d7 (8 байт)

Проблема 7:

u+GE0 (5 байт)

Проблема 8:

ss.DR~hZQ (9 байт)


2

66 байт

1. 10 байт: V9+mZN}hN9
2. 6 байт: jUT)jG
3. 8 байт: h.f_IZ1z
4. (реалізація посилань) 7 байт: &gQ0<QE
5. 11 байт: ,sK-rzZG-zK
6. 7 байт: ssMcz\,
7. 8 байт: s<.Qx.QZ
8. 9 байт:ss.eXbkZQ


2

68 67 66 65 байт

Завдання 1

10 байт: V9m*d>dNS9

Завдання 2

5 байт:, \nMTjGде \nновий рядок

Завдання 3

9 байт: h.fqZ_Z1z

Завдання 4

5 байт: qQ%QE

Завдання 5

Довідкове рішення, 12 байт: A.ggk\Az,sGH

Завдання 6

7 байт: ssMcz\,

Завдання 7

8 байт: s<.Qx.Q0

Завдання 8

9 байт: ss.DVQUlQ


1

54 байти

Ось запропоновані рішення. За винятком завдання 8 було знайдено всі рішення.

1. j.tmLdS9Z (9 байт), використовуючи карту для лівої карти, переміщуйте та заповнюйте нулі
2. \ nMTjG (5 байт) використовуйте нові рядки для карти
3. h.f_IZ1z (8 байт) генеруйте можливі рядки за допомогою .f
4 .% IQE (4 байти) знайшов випадок, де інваріантному оператору потрібні 2 параметри
5., J.vz-zJ (8 байт) .v оцінює лише перше твердження рядка і ігнорує решту
6. ssMcz \, ( 7 байт s "" = 0
7. u + GE0 (5 байт) зменшити, поки не досягне
знаючого числа 8. ss.DVQUQ (8 байт) видалити діагональ за допомогою векторизації


Чорт, я забув Uзробив lв списках!
lirtosiast

1
Приємно побивати isaacg своєю мовою.
Стен Струм

1

 60 59  57 байт

1. 9 байт :j.tmRdS9Z


2. 6 байт :jbUTjG


3. 8 байт :h.f_IZ1z


4. 4 байти :}sEU


5. 8 байт :,K.vz-zK


6. 7 байт :ssMcz\,


7. 8 байт :s<FxB.Q0


8. 11 10 7 байт : ss.DVQU Попередня версія:ss.e+<bk>bh

Зауважте, що я розробив ці рішення абсолютно незалежно від інших відповідей, хоча я досить спізнююся з учасником.


Приємна спроба. Третя проблема - 8 байт.
Якубе

І я майже впевнений, що рішення проблеми 8 тоді ще не збиралося. Але я цього не перевіряв.
Якубе

@Jakube О, дякую, що помітили!
Містер Xcoder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.