Ви Користувач: Створіть вимоги


15

Мій начальник * не розуміє, чому її програмісти негативно реагують на зміни програмних вимог користувачів. Допоможіть їй зрозуміти! На кожну відповідь створіть нову вимогу. Потім напишіть програму / функцію, яка вирішує цю вимогу та всі попередні вимоги, перебуваючи на новій мові програмування.

Приклади

Користувач 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- кількість байтів у вихідному коді, а потім новий рядок, а потім nth 0-indexed (також може бути1 -вкладене) просте число, а потім новий рядок, слідом за Найбільшим загальним дільником на n і m.

0: Програма повинна виводитись 0перед чим-небудь іншим. Мова: N / A
1: Джерело програми не може містити 0. Мова: 05AB1E
2: Програма приймає невід'ємне ціле число nі виводить новий рядок, а потім - 0вкладене n-е число Фібоначчі (може бути 1індексовано). Мова: dc
3: Програма виводить новий рядок з наступним введенням у nквадрат. Мова: J
4: Програма виводить новий рядок з наступним nмноженням на новий вхід m. Мова: Ом
5: Програма не може містити *(код ASCII 0x2A). Мова: Python 3
6: Програма виводить новий рядок з наступним 10^B, деB - кількість байтів у вихідному коді. Мова: Mathematica
7: Програма виводить новий рядок, а потім nth0 -вкладене (може також бути 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


3
Навіщо приймати останню відповідь? Це робить здається, що ви виграєте за додавання вимоги, яку ніхто не може задовольнити.
xnor

5
Наприклад, "md5 хеш програми повинен бути ..."
Conor O'Brien

2
Навіть якщо правила дотримуються, щоб запобігти вимозі, яка закінчує ланцюг, я все ж думаю, що "умова виграшу" спонукає людей до створення майже неможливих правил, а не до прикольних.
xnor

2
@StephenS Ну, схоже, люди не грають, щоб виграти, тому схоже, що моя стурбованість втрачена.
xnor

2
Це має бути названо "Повзучість" ("Scope Creep")
нелінійний

Відповіді:


2

Відповідь 10 - Pyth

Вимога: Бере два входи, n(> = 0) і m. Виходи 0 без використання 0, *або ]ніде в вихідному коді, і без вбудованих команд для вступу на переведення рядків. Тоді виводиться новий рядок з наступним 1-вкладеним n-м числом Фібоначчі (може бути 0індексовано), за ним новий рядок, за ним nквадрат, за ним новий рядок, після чого nпомножений m, за ним новий рядок, а далі 10^Bде Bкількість байтів у вихідному коді, а потім новий рядок та nth 1-вкладене (може також бути 0вкладене) просте число, і, нарешті, слідує новий рядок та Найбільший загальний дільник n та m.

JU2KE=H2VQ=+Js>2J=+YK=hHW!P_H=hH;jb[ZeJ^Q2sY^T51HiK

Онлайн-перекладач


Так, це також поле для гольфу :-)
Ерік Переможник

Крім того, перш ніж коментувати, ні, я не можу просто використовувати jзамість цього jb, оскільки тоді я буду використовувати вбудований новий рядок.
Ерік Аутгольфер

6

Відповідь 1 - 05AB1E

Вимога: Друкується 0... без 0вихідного коду

¾

4

Відповідь 3 - J

echo"+(1-1),(*:,~[:+/@:!&i.-)@".1!:1(3)

Вимога: Виводиться 0без 0вихідного коду, потім приймає невід'ємне ціле введення nі виводить новий рядок з наступним 0вкладеним n'числом Фібоначчі (може бути 1індексовано), а потім новий рядок з наступним вводомn квадрат.

Спробуйте в Інтернеті!


4

Відповідь 4 - Ом

Вимога: Виводиться 0без 0вихідного коду, потім приймає невід'ємний цілий вхід nі виводить новий рядок з наступним 0-індексованим nчислом Фібоначчі (може бути 1 індексований), а потім новий рядок з наступним входом n квадратом, Далі йде новий рядок, а потім nпомножений на новий вхід m.

¼,≡ƒ,²,*,

4

Відповідь 2 - дк

12298P?sa1 1-sb1sc[lblcdsb+scla1-dsa1 1-<y]dsyxlcp

Вимога: Виводиться 0без 0вихідного коду, потім приймає невід'ємне ціле число nі виводить новий рядок, за яким слід0 додається n' -не додане ' число Фібоначчі (може бути1 індексовано).

Спробуйте в Інтернеті!


@ R.Kap Без проблем :)
Стівен

2
Коли я прочитав нову вимогу, я чомусь почав сміятися. +1.
Товариш SparklePony

4

Відповідь 5 - Python 3

Вимоги: Вихідні дані 0 без 0 у вихідному коді, потім приймає невід'ємний цілий вхід n та виводить новий рядок з наступним 0-індексованим n-м числом Фібоначчі (може бути 1 індексованим), а потім новий рядок з наступним введенням n квадрата, за яким слід новий рядок, а потім n помножене на новий вхідний m. Не використовуйте символ *, ASCII код 0x2A.

    def f(n, m):
        print(1-1)
        a = 1-1
        b = 1
        for i in range(n):
            c = a+b
            a = b
            b = c
        print(b)
        print(n.__mul__(n))
        print(n.__mul__(m))

3

Відповідь 6 - Математика

Вимога: Виводить 0 без 0 або * у вихідний код, потім приймає невід'ємне ціле число введення n та виводить новий рядок з наступним 0-індексованим n-м числом Фібоначчі (може бути 1 індексованим), а потім новий рядок, за яким той же вхід n квадрата, за ним новий рядок, а потім n помножене на новий вхідний m, а потім новий рядок, а потім 10 ^ B, де B - кількість байтів у вихідному коді.

((e=Echo)[1-1];e@Fibonacci@#;e[#^2];e[1##];2^# 5^#&@59)&

1
Так, отже, моя поспішна редакція після того, як я побачив, що ЕрікРо хвилиною побив мене :)
Грег Мартін

2

Відповідь 7 - JavaScript (ES6)

(a,b)=>String.fromCharCode(48)+'\n'+(m=(a)=>a>1?m(a-1)+m(a-2):1)(a)+'\n'+Math.pow(a,2)+'\n'+Math.exp(Math.log(a)+Math.log(b))+'\n'+1E257+'\n'+(T=(u,i=2,l=1-1,m=2)=>l<=u?(p=(o,z=2,s=1-1)=>z<o?p(o,z+1,s+(o%z<1&&z!=o)):s)(i)<1?T(u,i+1,l+1,i):T(u,i+1,l,m):m)(a)

Вимога: Функція, яка приймає два входи, невід'ємне ціле число nта будь-яке число mі повертає рядок, що містить 0без використання 0ніде вихідного коду, потім новий рядок, після якого 0додається nчисло-число, яке 1індексується Фібоначчи (може бути індексовано), новим рядком, за яким йде nквадрат, за ним новий рядок, після чого nмножиться mбез використання *ніде у вихідному коді, за ним новий рядок, після 10^Bчого B- кількість байт у вихідному коді, і, нарешті, newline та nth 0-indexed (може також бути 1-indexed) простим числом.

Тест-фрагмент


Ви можете зберегти значну кількість байтів, змінивши String.fromCharCode(48)на 1-1. Не те, що насправді має значення ;-) (Також у вихідному коді є два нулі, які ви можете виправити таким же чином)
ETHproductions

1

Відповідь 8 - желе

Вимога: Функція, яка приймає два входи, невід'ємне ціле число nта будь-яке число mі повертає рядок, що містить 0без використання 0ніде в вихідному коді, а потім новий рядок, після якого 0додається nчисло-число, яке 1індексується Фібоначчи (може бути індексовано), новим рядком, за яким йде nквадрат, за ним новий рядок, з наступним nмноженням mбез використання *ніде у вихідному коді, після чого новий рядок, після 10^Bчого B- кількість байтів у вихідному коді, і, нарешті, новий рядок і nго0 -indexed (також можуть бути1-індексований) простим числом. Ніяких вбудованих для приєднання нових ліній не дозволяється, але приєднання вбудованих дозволено.

ÆḞṭØDW⁺¤;⁸²¤;×;ȷ25;⁸ÆN¤j⁷

Спробуйте в Інтернеті!


Так, це гольф.
Ерік Аутгольфер

1

Відповідь 9 - Скала

Вимоги : Бере два входи n(> = 0) та m. Виводи 0без використання вихідного коду 0чи *будь-де та без вбудованих для приєднання до нових рядків. Тоді виводиться новий рядок з наступним 1-вкладеним n-м числом Фібоначчі (може бути 0індексовано), за ним новий рядок, за ним nквадрат, за ним новий рядок, після чого nпомножений m, за ним новий рядок, а далі 10^Bде Bкількість байтів у вихідному коді, а потім новий рядок та nth 1-вкладене (може також бути 0вкладене) просте число, і, нарешті, слідує новий рядок та Найбільший загальний дільник n та m.

(n:Int,m:Int)=>{
 val z=1-1;val o=println _;var i=1;var j=z
 o(z)
 o((1 to n).foldLeft(z,1)((a,b)=>(a._2,a._1+a._2))._1)
 o(math.pow(n,2))
 o(List.fill(n)(m).sum)
 o(math.pow(9+1,299))
 while(j!=n){i+=1;if((2 to i-1)forall(i%_!=z))j+=1};o(i)
 o((1 to math.min(n,m)).filter(c=>n%c==z&&m%c==z).last)
}

Спробуйте це тут

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