Мій начальник * не розуміє, чому її програмісти негативно реагують на зміни програмних вимог користувачів. Допоможіть їй зрозуміти! На кожну відповідь створіть нову вимогу. Потім напишіть програму / функцію, яка вирішує цю вимогу та всі попередні вимоги, перебуваючи на новій мові програмування.
Приклади
Користувач 1 публікує першу відповідь. Він вказує, що програма повинна вивести "Привіт, світ". Він створює програму на Java, яка виводить "Привіт, світ".
Користувач 2 розміщує другу відповідь. Вона вказує, що програма повинна приймати вхід n та виводити n- й простий, аж до числа максимуму мови. Вона створює програму на C ++, яка приймає n вхід і виводить n- е простим і виводить "Привіт, світ". Вона не могла створити програму на Java.
Користувач 3 розміщує третю відповідь. Він вказує, що джерело програми не може містити текст "Привіт". Він створює функцію в Python, яка приймає вхід n та виводить n- й простим і "Hello, World". при цьому не використовуючи текст "Привіт" у своєму джерелі. Він не міг створити програму на Java або C ++.
Формат відповідей
#Answer # - <language name> [version, if pertinent]
Requirement: <rule>.
<code>
[explanations, encoding, TIO link, etc.]
Правила відповіді
Відповідь повинна відповідати наведеному вище формату чи подібному.
Відповідь може бути програма або функція.
Відповідь повинна відповідати всім вимогам до і включаючи поточну відповідь.
Один і той же користувач може не публікувати дві відповіді поспіль.
Якщо дві відповіді розміщені з однаковим номером, то одну, яку опублікували пізніше, слід видалити.
Не редагуйте свою вимогу, якщо ви погано не зіпсували і не не було опубліковано інших відповідей.
Якщо ваша відповідь не відповідає вашим правилам та всім іншим правилам, вона недійсна. Спробуйте виправити це, перш ніж хтось опублікує наступну відповідь.
Різні версії однієї мови вважаються різними мовами лише якщо програма або функція, створена в будь-якій версії, буде поводитися по-різному в іншій версії.
Відповідь може не приймати жодного введення, не потрібного, і може не виводити нічого, що не потрібно, крім необхідного пробілу. Однак, поки за кадром програма повинна виконувати всі "приховані" (від користувача) вимоги, вона може робити все, що завгодно, особливо якщо ви повинні виконати вимогу часу виконання.
Правила вимоги
У вимозі повинна бути вказана лише одна вимога. Ця вимога може бути умовною, і якщо ця вимога вимагає введення та / або виводу, це може бути включено.
Вимога може не видаляти або змінювати попередні вимоги або конфліктувати з ними, але може поширити одну (вказати, яку).
Якщо вимога обмежує джерело (з обмеженим джерелом ) або вимагає текст у джерелі, він може видалити лише одну рядок (наприклад
0
,Hello
) або вимагати одного символу.Ця вимога не може вимагати, щоб джерело містило менше 100 байт, вимагало конкретного кодування або само по собі виключала більшість загальних мов.
Вимога може не змусити джерело відповідати певній схемі (наприклад, починаючи кожен рядок певним символом, або (@Conor) хешувати певне значення), відмінному від зазначеного в обмеженому джерелі.
Це ланцюжок відповідей , тому всі відповіді ґрунтуються на попередніх відповідях. Я і, можливо, інші спробую зберегти перелік усіх вимог. Щоб побачити відповіді по порядку, ви можете сортувати за найстарішими. Щоб побачити найновішу відповідь, відсортуйте за найстарішою, а потім перейдіть до кінця списку.
Як перемогти (змінити для проведення голосування):
Якщо за два тижні відповіді не буде розміщено, відповідь закінчена, і бали будуть підраховані. Оцінки будуть обчислюватися шляхом підсумовування загальної кількості відповідей кожного користувача, але зважування публікацій залежно від того, наскільки далеко вони в ланцюжку (оскільки пізніші публікації мають більше вимог, вони складніші).
Псевдокод:
for each answer in user.Answers {
score += 1 + (answer.number / 100)
}
Приклад:
Саллі має три відповіді. Вона розмістила відповідь 5, відповідь 7 та відповідь 20.
Її оцінка буде 1.05 + 1.07 + 1.2 = 3.32
. Якби це була пряма сума відповідей, її оцінка була б 3, але зважування глибини ланцюга нагороджує важчішими відповідями.
Починати:
Ось перша вимога, яку дає мій начальник *:
Вимога 0: Програма повинна вивести 0 раніше, ніж будь-що інше.
* вигадані
Перелік вимог та мов
Зауважте, що це може бути застарілим - перегляньте останню опубліковану відповідь безпосередньо перед публікацією відповіді, щоб переконатися, що ви виконуєте кожну вимогу. Мені дуже шкода, якщо ви створюєте вишукану програму, лише для того, щоб хтось її зняв - якщо ви дійсно хочете опублікувати її в будь-якому разі, вкажіть неконкуруючу конкуренцію.
Повні (але , можливо , не тока) Вимоги: Не можу утримувати
0
,*
або]
у вихідному коді, і не можемо використовувати намалюй на новому рядку вбудованої команди. Виводить0
, потім приймає невід'ємний цілий вхідn
і виводить новий рядок з наступним 0-індексованимn
числом Фібоначчі (може бути1
індексовано), за ним новий рядок, за ним той самий вхід n квадрат, за ним новий рядок, а потімn
помножений новим вводомm
, а потім новим рядком, за10^B
якимB
- кількість байтів у вихідному коді, а потім новий рядок, а потімn
th0
-indexed (також може бути1
-вкладене) просте число, а потім новий рядок, слідом за Найбільшим загальним дільником на n і m.0: Програма повинна виводитись
0
перед чим-небудь іншим. Мова: N / A
1: Джерело програми не може містити0
. Мова: 05AB1E
2: Програма приймає невід'ємне ціле числоn
і виводить новий рядок, а потім -0
вкладене n-е число Фібоначчі (може бути1
індексовано). Мова: dc
3: Програма виводить новий рядок з наступним введенням уn
квадрат. Мова: J
4: Програма виводить новий рядок з наступнимn
множенням на новий вхідm
. Мова: Ом
5: Програма не може містити*
(код ASCII0x2A
). Мова: Python 3
6: Програма виводить новий рядок з наступним10^B
, деB
- кількість байтів у вихідному коді. Мова: Mathematica
7: Програма виводить новий рядок, а потімn
th0
-вкладене (може також бути1
-вкладене) просте число. Мова: JavaScript (ES6)
8: Програма не використовує вбудований рядок вбудованого рядка, але може використовувати будь-який інший вбудований приєднання. Мова: Желе
9: Програма виводить новий рядок, за яким слідує Найбільший загальний Дільник на n та m. Мова: Scala
10: Програма не може містити]
. Мова: Pyth
Поточні результати (упорядковані першим повідомленням)
Оккс : 1,01
Р. Кап : 2,09
Конор О'Брайен : 1,03
Нік Кліффорд : 1,04
Ерік Роуз : 1,05
Грег Мартін : 1,06
Ерік Перевершитель : 2,18
математика : 1,09