Дуже багато користувачів PPCG допомогли у створенні цього виклику, як у чаті, так і в пісочниці, зокрема, Martin Ender , AdmBorkBork , Emigna та user202729
Наша громада визнала за необхідне створити набір мов, розроблених спеціально для гольфу, "гольф-мов", як ми їх називаємо. Такі мови еволюціонували від колись блискучого, тепер незграбного GolfScript до гладких стислих мов, таких як Jelly та Husk . Як ми бачимо, ці мови постійно скорочуються і скорочуються для набору завдань. Отже, як очевидні фахівці, що стосуються мов для гольфу, ми повинні створити мову разом, щоб перемогти будь-яку іншу мову, яка наважиться змагатися. Представляємо Bugle!
Bugle: Від абревіатури BuGoL: Bu ilt Go lfing L anguage.
Як буде працювати цей виклик
Якщо ви не отримали те, на що я натякаю у вступі, цей виклик є викликом, який відповідає на відповіді, коли кожен з них вносить свій внесок у перекладача нової мови для гольфу, покращуючи його здатність конкурувати на PPCG з кожною відповіддю.
Я опублікую першу відповідь, що складається з основи мовної специфікації / перекладача, і всі інші відповіді продовжуватимуться з цього. Нові матеріали містять такі речі:
- Зміна специфікації мови
- Сучасний перекладач, який відповідає саме тому , що закладено в змінах
- Мовна оновлена оцінка (детальніше трохи)
Ви можете змінити специфікацію одним із трьох способів:
- Ви можете додати одну команду
- Ви можете додати дві нові команди
- Ви можете редагувати поведінку однієї існуючої команди
Щодо нового перекладача, ви повинні використовувати останню версію, написану на Python. Це не обов'язково для гольфу. Кожна раніше додана команда повинна бути перевірена за допомогою останнього перекладача, а також новітньої команди (тієї, яку ви додали). Ви також не повинні використовувати образливу мову ні в якому разі під час оновлення інтерпретатора, наприклад, у коментарях чи рядкових літералах тощо.
Додані команди (и) можуть робити все, що завгодно . Єдині вимоги:
- Це не дає образливих результатів
- Це не те саме, що інша команда
- Це не заважає виконати один із вибіркових викликів
Крім цього, він може бути настільки ж конкретним або загальним, наскільки ви хочете. Це також може бути будь-який бажаний вам персонаж . Якщо ви не впевнені, чи є ваше додаток «новою командою», не соромтесь запитати в коментарях.
Мовна оцінка
Можливо, ви помітили, що вам потрібно включити оцінку мови у всіх нових публікаціях. Його оцінка полягає в тому, що заважає цьому виклику тривати назавжди, і визначається таким чином:
Поточний бал - це кількість підрахунків байтів, необхідних мові для виконання нижче 20 завдань
Для кожного із завдань застосовуються стандартні правила вводу / виводу , як і стандартні лазівки .
20 завдань:
- "Привіт Світ!" - Виведіть рядок
Hello, World!
- 1, 2, Fizz, 4, Buzz - Виведіть кожне ціле число від 1 до 100 (включно) на окремий рядок, причому кратні з 3 замінені на
Fizz
, кратні з 5 замінені,Buzz
а кратні з обох наFizzBuzz
- Створіть число 2014 без жодних чисел у вихідному коді. Виведіть число 2014, не використовуючи жодного з символів
0123456789
вихідного коду, без доступу до зовнішніх змінних чи випадкових насінин - Обфусцірованний Hello World - Висновок рядок
Hello, World!
, без використання будь - якого з символів , по меншій мірі , два з наступних множин:hlwd
,eor01
і27
(без урахування регістру) Співайте з днем народження улюбленій мові програмування - мовою на ваш вибір, виведіть наступне:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Нам не дивно кодувати гольф, ви знаєте правила, і так я - Виведіть повну лірику "Never Gonna Give You Up"
- Виведіть знак - Враховуючи число, надрукуйте -1, якщо воно негативне, 0, якщо це 0, або 1, якщо воно є позитивним
- Концепція Колатца (OEIS A006577) - Починаючи з цілого числа, розділіть його на 2, якщо це парне, або помножте на 3 і додайте 1, якщо це непарно, і повторіть процес, поки не досягнете 1. Вихід повинен бути кількістю ітерацій досягає 1.
- Масив викликів №1: Чергування масивів - Дано масив цілих чисел, перевірте, чи всі парні індексировані елементи рівні, і чи всі непарноіндексовані елементи рівні, і виведіть відповідно корічне або хибне значення
- Я незначний масив? - Враховуючи масив цілих чисел, перевірте, чи всі абсолютні різниці між послідовними елементами менші або рівні 1, і виведіть відповідно коефіцієнт правдивої чи хибної помилки
- Чи є це число простим? - Враховуючи додатне ціле число, напишіть повну програму, щоб перевірити, чи є вона простим, і відповідно виведіть правдиве або хибне значення
- Я паліндром. Ти? - Давши рядок, перевірте, чи це паліндром, тоді як ваша програма / функція є і паліндром, і відповідно виведіть два чіткі та послідовні значення
- Підсумовуйте числа за стандартними знаками - Візьміть ряд чисел у STDIN та виведіть їх суму.
- Знайти коефіцієнт - З огляду на ціле число
n
, виведіть добуток усіх цілих чисел між1
іn
включно. - Найкоротший код для отримання нескінченного випуску - Без будь-якого введення виробляти нескінченний вихід, який теоретично ніколи не припинить виводити.
- Випікайте шматочок Pi - Виведіть саме цей текст:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Знайдіть найменше число, яке не ділить N - Враховуючи додатне ціле число N, виведіть найменше додатне ціле число, яке не ділить N.
- Це парне чи дивне? - З огляду на ціле число N, виведіть його паритет як значення truthy / falesy.
- Вихід з тією ж довжиною, що і код - Напишіть найкоротший код, вихід якого має ту саму довжину, що і код, де вихід не такий, як код.
- Гольф вам королева за велике благо! - Напишіть найкоротшу квітку своєю мовою.
Для того, щоб бути дійсним, нове представлення повинно мати подання на гольф для принаймні 2 проблем, принаймні 1 байт для кожної. Ви можете збільшити тривалість інших подань, але загальний бал повинен зменшитись щонайменше на 2 за кожну відповідь. Крім того, просимо врахувати включення посилання на оновлені програми. Оновлені рішення не повинні працювати при запуску з попередньою версією перекладача.
Як отримати печиво
У мене є список з 5 викликів, які не є обов'язковими для спроб і не мають ніякого відношення до вашої оцінки, але є просто додатковими проблемами, щоб перевірити, чи Bugle здатний достатньо. Не соромтеся включати рішення до будь-якої з них у свою відповідь:
- Створіть самоперекладач
- Створіть квоту, здатну до корисного навантаження
- Covfefify рядок
- Гіперпрограмування: N + N, N × N, N ^ N все в одному
- "КНОТ" чи "НЕ"?
Описи не включаються, оскільки вони не потрібні всім, щоб мати можливість змагатися у виклику.
Як перемогти
Після того, як мінімальний бал ( ми вважаємо, що це 16, хоча будь-які спроби пограти в гольф вниз привітані) був досягнутий, очевидно, ланцюг закінчився, оскільки рішення не можуть отримати кращу оцінку. Як тільки 16 років буде досягнуто, завдання залишається живим протягом 1 місяця після того, щоб дати можливість комусь більше пограти в гольф. Після того, як минув цей місяць, виклик закінчився.
Як тільки виклик закінчиться, я перенесу інтерпретатора на сховище GitHub і пройду звичайні способи випуску стабільної мови. Ви також можете почати розміщувати рішення для викликів на PPCG в цей час, використовуючи цю мову, але будь ласка, намагайтеся не заливати головну сторінку відповідями. Натомість розподіліть їх на певний проміжок часу.
Форматування
Щоб інформацію було легше знайти у своїй відповіді, відформатуйте її наступним чином:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Де [N]
ваш номер відповіді (1 для першого, 2 для другого тощо)
Правила
- Потрібно почекати 3 години між публікаціями відповідей
- Ви не можете публікувати повідомлення двічі поспіль, якщо протягом 10 днів не було розміщено жодної відповіді (рівно 240 годин)
- Ви не можете видалити попередні команди.
- Ваш перекладач не повинен займатися гольфом, і його кількість байтів тут абсолютно не має значення.
- Якщо хтось пропонує програми для гольфу в програмах, поки ваша відповідь є останньою, ви повинні відредагувати гольфи та оновити свій рахунок.
- Ви також можете це зробити, коли ваша відповідь знаходиться посередині ланцюга, доки ваш бал не стане нижчим за будь-які пізніші відповіді.
- Будь ласка, утримуйтеся від відповідей на будь-які існуючі проблеми PPCG, використовуючи цю мову, принаймні, поки проблема не буде закінчена
- Інтерпретатор написаний на Python 3, і повинен продовжувати цей шлях по всьому ланцюгу. Змінювати мову заборонено.
- Знову ж таки, щоб бути дійсним, нове представлення повинно мати подання про гольф для принаймні 2 проблем, принаймні 1 байт для кожної.
Давайте розпочнемо!
Hello, World!
, то це 19 байт. Але якщо поведінка порожньої програми зміниться, залежно від
for
петлі) дозволено та рекомендується додавати