Вы - пользователь: создайте требования


15

Мой начальник * не понимает, почему ее программисты негативно реагируют на то, что пользователи меняют требования к программе. Помоги ей понять! На каждый ответ создайте новое требование. Затем напишите программу / функцию, которая решает это и все предыдущие требования на новом языке программирования.

Примеры

Пользователь 1 публикует первый ответ. Он указывает, что программа должна вывести «Hello, World». Он создает программу на Java, которая выводит «Hello, World».

Пользователь 2 отправляет второй ответ. Она указывает, что программа должна принимать ввод n и выводить n- е простое число, вплоть до числа языка max. Она создает программу на C ++, которая принимает входные данные n, выводит n- е простое число и выдает «Hello, World». Она не могла бы создать программу на Java.

Пользователь 3 отправляет третий ответ. Он указывает, что исходный текст программы не может содержать текст «Hello». Он создает функцию в Python, которая принимает входные данные n и выводит n- е простое число и «Hello, World». при этом не используя текст «Hello» в своем источнике. Он не мог создать программу на 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(также может быть 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: Программа выводит новую строку , за которой следует простое число с индексом nth 0(может также 1индексироваться). Язык: JavaScript (ES6)
8: программа не использует встроенную функцию объединения с новыми строками , но может использовать любую другую встроенную функцию объединения. Язык: Jelly
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 программы должен быть ...»
Конор О'Брайен,

2
Даже если правила остаются в силе, чтобы предотвратить требование, которое заканчивает цепочку, я все же думаю, что «условие победы» побуждает людей создавать почти невозможные правила, а не забавные.
xnor

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

2
Это следует называть «Scope Creep»
NonlinearFruit

Ответы:


2

Ответ 10 - Пиф

Требование: принимает два входа, n(> = 0) и m. Выходы 0 без использования 0, *или ]нигде в исходном коде, и без встроенных команд для вступления на переводы строк. Затем выводит символ новой строки , за которой следует 1-indexed п - го числа Фибоначчи (могут быть 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

Онлайн переводчик


Да, это также игра в гольф :-)
Эрик Outgolfer

Кроме того, прежде чем комментировать, я не могу просто использовать jвместо этого jb, так как тогда я буду использовать встроенную функцию соединения с новыми строками.
Эрик Outgolfer

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 - DC

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

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

Попробуйте онлайн!


@ R.Kap Нет проблем :)
Стивен,

2
Когда я прочитал новое требование, я почему-то начал смеяться. +1.
Товарищ SparklePony

4

Ответ 5 - Питон 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 - Mathematica

Требование: выводит 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
Да, отсюда мое поспешное редактирование после того, как я увидел, что EricRoe избил меня на минуту :)
Грег Мартин,

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число байтов в исходном коде и, наконец, после символ новой строки и индексированный nth 0(также может быть 1индексированный) простое число.

Тестовый фрагмент


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

1

Ответ 8 - Желе

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

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

Попробуйте онлайн!


Да, это игра в гольф.
Эрик Outgolfer

1

Ответ 9 - Скала

Требования : принимает два входа, n(> = 0) и m. Выводы 0без использования 0или *где-либо в исходном коде, и без встроенных для присоединения на новых строках. Затем выводит символ новой строки , за которой следует 1-indexed п - го числа Фибоначчи (могут быть 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.