Pyth Practice 2

21

Время для другой практики Pyth. Я представляю здесь 8 задач с решением Pyth каждое. Эти решения написаны начинающим Pyth. Он очень доволен этими решениями, так как они намного короче, чем его ответы на Python. Ваша задача, однако, показать его лучше. Создавайте эквивалентные, но более короткие программы.

Это сложный вопрос о хитростях и оптимизациях, которые можно использовать при игре в гольф в Pyth. Игроки в Pyth могут признать многие из уловок, которые приводят к более коротким решениям. Однако некоторые проблемы потребуют некоторых необычных подходов, которые используются редко. Некоторые из трюков, которые я на самом деле никогда не видел в дикой природе. Но ни одно решение не требует каких-либо ошибок или странного поведения, которое не было намеренным разработчиком (-ями) 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)
Jakube
источник
Мне действительно нравится идея специфичных для языка вопросов (и я проголосовал за этот). Но я думал, что специфичные для языка вопросы были осуждены в PPCG?
Луис Мендо
3
@LuisMendo Я думаю, что специфичные для языка вопросы осуждаются только в том случае, если причиной этого вопроса является общая неприязнь к таким играм в гольф, как CJam, Pyth, ..., или потому что OP понимает только определенные языки. Это здесь немного по-другому. Этот вопрос в основном предназначен для того, чтобы показать некоторые из более скрытых особенностей популярного (на PPCG) языка. В некотором смысле это похоже на коллекцию трюков. Не имеет смысла позволять это каждому языку. Вот Мета-пост на эту тему: ссылка
Jakube
В 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 байт)

isaacg
источник
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

Maltysen
источник
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

lirtosiast
источник
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 байт) удаляет диагональ, используя векторизацию

Jakube
источник
Блин, я забыл, Uсделал lв списках!
lirtosiast
1
Приятно побеждать Исаака на его родном языке.
Стэн Струм
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

Обратите внимание, что я разработал это решение совершенно независимо от других ответов, хотя я довольно поздно на вечеринку.

Мистер Xcoder
источник
Хорошая попытка. Третья проблема - 8 байт.
Якуб
И я уверен, что решение проблемы 8 тогда не компилировалось. Но я не проверял это.
Якуб
@Jakube О, спасибо, что заметили!
г-н Xcoder