Гольф Практика: Пит [закрыто]

10

Это сложный вопрос о хитростях и оптимизациях, которые можно использовать при игре в гольф в Pyth. Гольфисты Pyth могут распознать многие хитрости. Однако могут быть задействованы незнакомые подходы и конструкции, поэтому, если вы застряли, взгляните на советы по Pyth, а также на справочник персонажей Pyth. Решения могут быть проверены здесь .

Цель: есть 8 задач, каждая из которых содержит фрагмент Pyth для оптимизации. Ваша цель - создать что-то эквивалентное, но более короткое. Эталонные решения занимают 80 байтов. Ваша цель - побить это как можно больше.

Победитель перейдет к представлению, которое решает все 8 задач с наименьшим общим количеством байтов. Tiebreaker - более ранний пост.

Ответ: Пожалуйста, спойлер весь ваш ответ, за исключением вашего общего балла. Предполагается, что вы не смотрите на ответы других людей, прежде чем отправлять свои.

Каждое представление должно отвечать на каждую проблему и давать соответствующий счетчик байтов, но вы можете свободно использовать эталонную реализацию, если вы не можете ее улучшить.

Подробности: если вопрос требует определенного значения или вывода, qравенство желательно, поэтому 1и !0эквивалентны. Если вопрос требует проверки, является ли условие истинным, выходные данные должны быть правдивыми, если условие истинно, и ложными, если условие ложно, но не ограничено этим. Вы не можете менять истину на ложь и ложь на истину. Если вопрос требует, чтобы что-то было напечатано, больше ничего не может быть напечатано, кроме завершающего перевода строки.

Все ответы должны быть действительными для самого последнего коммита Pyth на момент публикации этого вопроса.

Проблема 1: Учитывая набор в Q, выведите список, содержащий элементы Q в любом порядке.

; 3 bytes
f1Q

Проблема 2: Выведите список [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Проблема 3: Учитывая положительное целое число в Q, проверьте, являются ли все цифры Q положительными (не ноль).

; 7 bytes
!f!TjQT

Проблема 4: Для заданной строки в z проверьте, содержит ли z кавычки - "или '.

; 9 bytes
|}\'z}\"z

Проблема 5: сопоставьте Q = 1 с «победой», Q = 0 с «ничьей» и Q = -1 с «проигрышем».

; 20 bytes
@["Tie""Win""Lose")Q

Проблема 6: Печать 0123456789.

; 6 bytes
sm`dUT

Задача 7: Учитывая строку в z, подсчитайте количество инверсий.

(Индексирует iи jобразует инверсию, если i < jно z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Проблема 8: Учитывая список в z, подсчитайте количество повторяющихся смежных элементов.

; 9 bytes
lfqFT.:z2
isaacg
источник
@ user1737909 Этот ответ правильный. f1Qфильтрует Qфункцию, которая всегда имеет значение true, поэтому она всегда выводит каждый элемент набора. fвыводит список, который соответствует цели в этом вопросе.
Исаак
Я закрываю этот вопрос как не относящийся к теме, потому что не разрешены многочастные задачи без взаимодействия между частями. meta.codegolf.stackexchange.com/a/8464/45941
Мартин Эндер

Ответы:

9

52 байта

Задача 1: 2 байта

    SQ

Задача 2: 5 байт
    jC\f2

Задача 3: 4 байта
    -0`Q
Задача 4: 6 байт
    @z+N\'
Задача 5: 17 байт
    %3>"LTWoiisene"hQ
или
    @c3"LoseTieWin"hQ
Задача 6: 3 байта
    pMT
Задача 7: 9 байт
    s>R_d.cz2
Задача 8: 6 байт
    sqVztz
Объединение решения @ xnor для задачи 4 с моим (оба по 6 байт) дает хорошее 4-байтовое решение. Так что 48 байтов возможно.

Jakube
источник
Вы не можете комбинировать свое решение с xnor's, потому что xnor's недействителен (см. Мой комментарий к его ответу).
orlp
@orlp * объединяет все, кроме недействительных вещей ;-) Добавил решение в моем посте.
Якуб
Ах, теперь я вижу :) Думаю, я был на 6 байтов (и считал) хуже, чем оптимальный.
orlp
ааа! Спасибо! не понял :). Я удалю это.
Ven
7

54 байта

Задача 1, 2 байта : SQ
Задача 2, 6 байтов : j102 2
Задача 3, 5 байтов : *FjQT
Задача 4, 6 байтов : @z"'\"
Задача 5, 17 байтов : @c3"LoseTieWin"hQ
Задача 6, 4 байта : jkUT
Задача 7, 7 байтов : s>M.cz2
Задача 8, 7 байтов :sqM.:z2

orlp
источник
Приятно играть в гольф :-)
Ведаад Шакиб
ответ на задание 4 действителен, поскольку на фалси он просто печатает пустую строку?
Maltysen
@Maltysen Да, потому что истинное значение ""- Ложь, потому что not ""Истина.
orlp
3

58 байт

Задача 1, 2 байта : SQ
Задача 2, 5 байтов : jC\f2
Задача 3, 6 байтов : !}Z Q
Задача 4, 8 байтов : |}\'z}Nz
Задача 5, 18 байтов : @c"Tie\nWin\nLose"bQ
Задача 6, 4 байта : jkUT
Задача 7, 9 байтов : lf>FT.cz2
Задача 8, 6 байтов :sqVtzz

Maltysen
источник
Я не знал об этом V(хотя до сих пор не до конца понимаю, так как вы выполняете векторные операции над операндами неравной длины), так что я прошу прощения за это, но я действительно должен был подумать C\f= /
orlp
@orlp Vавтоматически усекает неравные входные данные
Maltysen
3

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

48 байтов

1. SQ- 2 байта, впервые опубликованные @orlp
2. jC\f2- 5 байтов, впервые опубликованные @Maltysen
3. -0`Q- 4 байта, впервые опубликованные @Jakube
4. @z`N- 4 байта, смесь @xnor и @Jakube, но не в никаких ответов пока нет.
(Я также не видел его при написании вопроса)
5. @c3"LoseTieWin"hQ- 17 байтов, впервые опубликованных @orlp
6. pMT- 3 байта, впервые опубликованных @Jakube
7. s>M.cz2- 7 байтов, впервые опубликованных @orlp
8. sqVtzz- 6 байт, впервые опубликовано @Maltysen

isaacg
источник
мы ограничиваемся версиями Pyth до вопроса?
Оптимизатор
1
«Все ответы должны быть действительными для самого последнего коммита Pyth на момент публикации этого вопроса». Положите мне было бы интересно услышать, о чем вы думаете. @Optimizer
isaacg
Pyth когда-либо развивается, верно? (в гораздо более быстром темпе, чем другие языки игры в гольф). Таким образом, очень вероятно, что это число (48) легко перейдет на 40 в ближайшем будущем. И поскольку это практический вызов, в идеале вы хотели бы попрактиковаться в использовании последней версии Pyth для новых задач.
Оптимизатор
2

57 байт

1. (2) SQСортировка.
2. (5) jC\f2 Преобразовать fв ASCII val, затем основание 2.
3. (5) /`Q`0Подсчитать '0'в числовой строке.
4. (5) @z`\'Принимает заданное пересечение строки с "'".
5. (18) @c"Tie Win Lose"dQСоставляет список с разделением. Я не получил нарезку на работу.
6. (4) jkUTПрисоединяйтесь range(10). Видимо конвертируется в строку автоматически.
7. (9) sm>d_d.:zПодсчитывает подстроки, которые больше, чем их обратные.
8. (9) l@C,zz.:zДлина пересечения подсписков списка и пар элементов в списке. Та же длина, что и у эталонного решения.

XNOR
источник
Ваше решение для # 4 неверно. Например, строка te\\stявляется ложным срабатыванием.
orlp
@orlp Заменил его другим, более коротким решением.
xnor