Практика з гольфу: Pyth [закрито]


10

Це виклик щодо хитрощів та оптимізацій, які можна використати при гольфі в Pyth. Піфі-гольфісти можуть розпізнати багато прийомів. Однак можуть бути задіяні незнайомі підходи та конструкції, тому погляньте на підказки Pyth , а також на Pyth Character Reference, якщо ви застрягли. Рішення можуть бути перевірені тут .

Мета: Є 8 проблем, у кожній із фрагментів Pyth для оптимізації. Ваша мета - створити щось рівнозначне, але коротше. Референтні рішення містять 80 байт. Ваша мета - перемогти це якомога більше.

Переможець перейде до подання, яке вирішує всі 8 задач з найменшою загальною кількістю байтів. Tierereaker - це раніше повідомлення.

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

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

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

Усі відповіді повинні бути дійсними для останнього пійт-комітету на час розміщення цього питання.

Проблема 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

@ user1737909 Ця відповідь правильна. f1Qфільтрує Qфункцію, яка завжди відповідає дійсності, тому вона завжди виводить кожен елемент набору. fвиводить список, який відповідає цілі цього питання.
isaacg

Я закриваю це питання поза темою, оскільки багатоскладові виклики без взаємодії між частинами заборонені. 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 байт.


Ви не можете комбінувати своє рішення з xnor's, оскільки xnor's недійсний (див. Мій коментар до його відповіді).
orlp

@orlp * поєднуючи все, окрім недійсних речей ;-) Додав рішення у своєму дописі.
Якубе

Ах, я зараз бачу :) Зрозуміло, я був на 6 байт гіршим за оптимальне.
orlp

ааа! Дякую! не зрозумів :). Я зніму це.
Вен

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


Приємно гольфували :-)
Ведаад Шакіб

Ви відповідаєте за завдання 4, дійсне, оскільки на Falsey він просто друкує порожній рядок?
Мальтісен

@Maltysen Так, тому що тривалість значення " ""False", оскільки " not ""True".
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


Я не знав про це 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


ми обмежуємось версіями Pyth до цього питання?
Оптимізатор

1
"Усі відповіді повинні бути дійсними для останнього піт-комітету на час розміщення цього питання." Поставте мені було б цікаво почути, що ви думаєте. @Optimizer
isaacg

Піт постійно розвивається, правда? (набагато швидшими темпами, ніж інші мови для гольфу). Тож велика ймовірність, що ця кількість (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Довжина перетину підсписів списку та пар елементів у списку. Така ж довжина, як і еталонне рішення.


Ваше рішення для №4 недійсне. Наприклад, рядок te\\st- помилковий позитив.
orlp

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