Você é o usuário: crie os requisitos

15

Meu chefe * não entende por que seus programadores reagem negativamente aos usuários que mudam os requisitos do programa. Ajude-a a entender! Em cada resposta, crie um novo requisito. Em seguida, escreva um programa / função que resolva esse requisito e todos os requisitos anteriores, enquanto estiver em uma nova linguagem de programação.

Exemplos

O usuário 1 publica a primeira resposta. Ele especifica que o programa deve emitir "Olá, mundo". Ele cria um programa em Java que exibe "Olá, mundo".

O usuário 2 publica a segunda resposta. Ela especifica que o programa deve aceitar a entrada n ea saída do n º privilegiada, até o idioma número máximo. Ela cria um programa em C ++ que aceita entrada n e emite o n º prime e saídas "Olá, mundo". Ela não poderia ter criado um programa em Java.

O usuário 3 publica a terceira resposta. Ele especifica que a fonte do programa não pode conter o texto "Olá". Ele cria uma função em Python que aceitam a entrada n e emite o n º nobre e "Olá, mundo". enquanto não estiver usando o texto "Olá" em sua fonte. Ele não poderia ter criado um programa em Java ou C ++.

Formato da resposta

#Answer # - <language name> [version, if pertinent]

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Regras de resposta

  • A resposta deve seguir o formato acima, ou similar.

  • A resposta pode ser um programa ou uma função.

  • A resposta deve atender a todos os requisitos, inclusive a resposta atual.

  • O mesmo usuário não pode postar duas respostas seguidas.

  • Se duas respostas são postadas com o mesmo número, a que foi postada mais tarde deve ser excluída.

  • Não edite seus requisitos, a menos que você tenha estragado tudo e nenhuma outra resposta tenha sido publicada.

  • Se sua resposta não estiver de acordo com sua regra e com todas as outras regras, ela será inválida. Tente corrigir isso antes que outra pessoa poste a próxima resposta.

  • Versões diferentes do mesmo idioma contam apenas como idiomas diferentes se o programa ou a função criada em uma versão se comportar de maneira diferente na outra versão.

  • A resposta pode não aceitar qualquer entrada não necessária e pode não gerar nada que não seja necessário, exceto o espaço em branco necessário. No entanto, enquanto nos bastidores o programa deve atender a todos os requisitos "ocultos" (do usuário), ele pode fazer o que você quiser, especialmente se você precisa atender a um requisito de tempo de execução.

Regras de Requisitos

  • O requisito deve especificar apenas um requisito. Esse requisito pode ser condicional e, se esse requisito exigir uma entrada e / ou uma saída, isso poderá ser incluído.

  • O requisito não pode remover ou modificar requisitos anteriores ou entrar em conflito com eles, mas pode estender um (especifique qual).

  • Se o requisito restringir a fonte (fonte ) ou exigir texto na fonte, ele poderá remover apenas uma única sequência (por exemplo 0, Hello) ou exigir um único caractere.

  • O requisito não pode exigir que a fonte tenha menos de 100 bytes, exija uma codificação específica ou, por si só, descarte a maioria dos idiomas comuns.

  • O requisito pode não forçar a fonte a obedecer a um determinado padrão (por exemplo, iniciar cada linha com um determinado caractere ou (@Conor) com hash para um determinado valor) diferente do especificado na fonte restrita.

Isso é , portanto todas as respostas se baseiam nas respostas anteriores. Eu e talvez outros tentaremos manter uma lista de todos os requisitos. Para ver as respostas em ordem, você pode classificar por mais antigo. Para ver a resposta mais recente, classifique pela mais antiga e navegue até o final da lista.

Como ganhar (alterado para voto em espera):

Quando nenhuma resposta é publicada por duas semanas, o desafio termina e as pontuações serão calculadas. As pontuações serão calculadas somando o número total de respostas de cada usuário, mas ponderando as postagens com base em quão distantes estão da cadeia (uma vez que as postagens posteriores têm mais requisitos, são mais difíceis).

Pseudo-código:

for each answer in user.Answers {
   score += 1 + (answer.number / 100)
}

Exemplo:

Sally tem três respostas. Ela postou as respostas 5, 7 e 20.

A pontuação dela será 1.05 + 1.07 + 1.2 = 3.32. Se fosse uma soma direta de respostas, sua pontuação seria 3, mas o peso da profundidade da cadeia recompensa respostas mais difíceis.

Para iniciar:

Aqui está o primeiro requisito, fornecido pelo meu chefe *:

Requisito 0: O programa deve gerar 0 antes de qualquer outra coisa.

* fictício

Lista de requisitos e idiomas

Observe que isso pode estar desatualizado - observe a última resposta postada imediatamente antes de postar sua resposta para garantir que você esteja cumprindo todos os requisitos. Lamento muito que você crie um programa requintado, apenas para alguém o furtar - se você realmente deseja publicá-lo de qualquer maneira, especifique não concorrente.

Requisito completo (mas talvez não atual): Não pode conter 0, *ou ]no código-fonte, e não pode usar um ingresso incorporado à nova linha. Saídas 0, em seguida, recebe uma entrada inteira não negativa ne gera uma nova linha seguida pelo nnúmero de Fibonacci indexado a 0 (pode ser 1indexado), seguida por uma nova linha, seguida pela mesma entrada n ao quadrado, seguida por uma nova linha, seguida por uma nova linha, seguida pela nmultiplicação por uma nova entrada m, seguida por uma nova linha, seguida por 10^B, onde Bé o número de bytes no código-fonte, seguido por uma nova linha, seguida pelo número principal nth 0indexado (também pode ser 1indexado), seguido por uma nova linha, seguido pelo maior divisor comum de n e m.

0: O programa deve produzir 0antes de qualquer outra coisa. Idioma: N / A
1: A fonte do programa não pode conter 0. Idioma: 05AB1E
2: O programa obtém uma entrada inteira não negativa ne gera uma nova linha seguida do 0n-ésimo número de Fibonacci não 1indexado (pode ser indexado). Idioma: dc
3: O programa gera uma nova linha, seguida pela mesma entrada nao quadrado. Idioma: J
4: O programa gera uma nova linha, seguida pela nmultiplicada por uma nova entrada m. Idioma: Ohm
5: O programa não pode conter *(código ASCII 0x2A). Idioma: Python 3
6: O programa gera uma nova linha, seguida de 10^B, onde Bé o número de bytes no código-fonte. Idioma: Mathematica
7: O programa gera uma nova linha, seguida pelo número principal nth 0indexado (também pode ser 1indexado). Idioma: JavaScript (ES6)
8: O programa não usa um ingresso incorporado em novas linhas, mas pode usar qualquer outro ingresso incorporado. Idioma: Geléia
9: O programa gera uma nova linha seguida pelo Maior Divisor Comum de n e m. Idioma: Scala
10: O programa não pode conter ]. Idioma: Pyth

Pontuações atuais (ordenadas pela primeira postagem)

Okx : 1,01
R. Kap : 2,09
Conor O'Brien : 1,03
Nick Clifford : 1,04
Eric Rose : 1,05
Greg Martin : 1,06
Erik, o exaltador : 2,18
math_junkie : 1,09

Stephen
fonte
3
Por que aceitar a última resposta? Isso faz com que pareça que você ganhou por adicionar um requisito que ninguém pode atender.
Xnor
5
Por exemplo, "o hash md5 do programa deve ser ..."
Conor O'Brien
2
Mesmo que as regras sejam mantidas para impedir um requisito que encerre a cadeia, ainda acho que ter uma "condição de vitória" incentiva as pessoas a fazerem regras quase impossíveis, em vez de regras divertidas.
Xnor
2
@StephenS Bem, as pessoas parecem não estar jogando para vencer, então parece que minha preocupação é equivocada.
Xnor
2
Isso deve ser chamado 'Scope Creep'
NonlinearFruit

Respostas:

2

Resposta 10 - Pyth

Requisito: Aceita duas entradas, n(> = 0) e m. Saídas 0 sem o uso de 0, *ou ]em qualquer lugar do código-fonte, e sem recursos internos para ingressar em novas linhas. Em seguida, gera uma nova linha seguida pelo 1n-ésimo número de Fibonacci (pode ser 0indexado), seguida por uma nova linha, seguida por nquadrado, seguida por uma nova linha, seguida por nmultiplicada por m, seguida por uma nova linha, seguida por 10^Bonde Bé o número de bytes no código-fonte, seguido por uma nova linha e o número primo nth- 1indexado (também pode ser 0-indexed) e, finalmente, seguido por uma nova linha e pelo Maior Divisor Comum de n e m.

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

Intérprete online

Erik, o Outgolfer
fonte
Sim, este também é um jogo de golfe :-)
Erik the Outgolfer
Além disso, antes de comentar, não, não posso simplesmente usar em jvez de jb, pois então eu usaria uma junção em novas linhas incorporada.
Erik the Outgolfer
6

Resposta 1 - 05AB1E

Requisito: Imprime 0... sem um 0no código-fonte

¾
Okx
fonte
4

Resposta 3 - J

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

Requisito: Saídas 0sem 0no código-fonte, em seguida, recebem numa entrada inteira não negativa e 0emitem uma nova linha seguida do nnúmero de Fibonacci 1indexado (pode ser indexado), seguido por uma nova linha seguida pela mesma entrada nao quadrado.

Experimente online!

Conor O'Brien
fonte
4

Resposta 4 - Ohm

Requisito: Saídas 0sem 0no código-fonte, em seguida, recebem uma entrada inteira não negativa ne emitem uma nova linha seguida pelo nnúmero de Fibonacci indexado a 0 (pode ser 1 indexado), seguido por uma nova linha, seguida pela mesma entrada n ao quadrado, seguido por uma nova linha, seguido por nmultiplicado por uma nova entrada m.

¼,≡ƒ,²,*,
Nick Clifford
fonte
4

Resposta 2 - dc

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

Requisito: Saídas 0sem 0no código-fonte, em seguida, recebem numa entrada inteira não negativa e 0emitem uma nova linha seguida do nnúmero de Fibonacci não 1indexado (pode ser indexado).

Experimente online!

R. Kap
fonte
@ R.Kap Não há problema :)
Stephen
2
Quando li o novo requisito, por algum motivo, comecei a rir. +1.
Camarada SparklePony
4

Resposta 5 - Python 3

Requisitos: Saídas 0 sem 0 no código-fonte, em seguida, recebem uma entrada inteira não negativa n e emite uma nova linha seguida pelo n-ésimo número de Fibonacci (pode ser 1 indexado), seguido por uma nova linha, seguida pela mesma entrada n ao quadrado, seguido por uma nova linha, seguido por n multiplicado por uma nova entrada m. Não use o caractere *, código 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))
EricRoe
fonte
3

Resposta 6 - Mathematica

Requisito: As saídas 0 sem 0 ou * no código-fonte, em seguida, recebem uma entrada inteira não negativa n e emite uma nova linha seguida pelo n-ésimo número de Fibonacci (pode ser 1 indexado), seguido por uma nova linha, seguida pelo mesma entrada n ao quadrado, seguida por uma nova linha, seguida por n multiplicada por uma nova entrada m, seguida por uma nova linha, seguida por 10 ^ B em que B é o número de bytes no código-fonte.

((e=Echo)[1-1];e@Fibonacci@#;e[#^2];e[1##];2^# 5^#&@59)&
Greg Martin
fonte
1
Yep, daí a minha apressada editar depois que eu vi que EricRoe bater-me por um minuto :)
Greg Martin
2

Resposta 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)

: Exigência de função A, que tem duas entradas, um número inteiro não negativo ne qualquer número me retorna uma cadeia de caracteres contendo 0sem a utilização de 0qualquer parte do código de fonte, então uma nova linha seguido do 0indexada ao dólar nth número de Fibonacci (pode ser 1indexado), seguido por uma nova linha, seguida por nquadrado, seguida por uma nova linha, seguida por nmultiplicada por msem o uso de *qualquer lugar no código-fonte, seguida por uma nova linha, seguida por 10^Bonde Bestá o número de bytes no código-fonte e, finalmente, seguida por um nova linha e o número principal nth 0indexado (também pode ser 1indexado).

Snippet de teste

R. Kap
fonte
Você pode economizar uma quantidade considerável de bytes alterando String.fromCharCode(48)para 1-1. Não que isso realmente importa ;-) (Além disso, existem dois zeros mais tarde no código fonte, que você pode corrigir, da mesma forma)
ETHproductions
1

Resposta 8 - Geléia

Uma função que tem duas entradas, um número inteiro não negativo: requisito ne qualquer número me retorna uma cadeia de caracteres contendo 0sem a utilização de 0qualquer parte do código de fonte, então uma nova linha seguido do 0indexada ao dólar nth número de Fibonacci (pode ser 1indexado), seguido por uma nova linha, seguida por nquadrado, seguida por uma nova linha, seguida por nmultiplicada por msem o uso de *qualquer lugar no código-fonte, seguida por uma nova linha, seguida por 10^Bonde Bestá o número de bytes no código-fonte e, finalmente, seguida por um nova linha e o nth- 0index (também pode ser1(primo) (indexado). Não são permitidos embutidos para ingressar em novas linhas, mas ainda é permitido ingressar em embutidos.

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

Experimente online!

Erik, o Outgolfer
fonte
Sim, isso é golfe.
Erik the Outgolfer
1

Resposta 9 - Scala

Requisitos : Aceita duas entradas, n(> = 0) e m. Saídas 0sem o uso de 0ou *em qualquer lugar no código-fonte e sem recursos internos para ingressar em novas linhas. Em seguida, gera uma nova linha seguida pelo 1n-ésimo número de Fibonacci (pode ser 0indexado), seguida por uma nova linha, seguida pelo nquadrado, seguida por uma nova linha, seguida por nmultiplicada por m, seguida por uma nova linha, seguida por 10^Bonde Bé o número de bytes no código-fonte, seguido por uma nova linha e o número primo nth- 1indexado (também pode ser 0-indexed) e, finalmente, seguido por uma nova linha e pelo Maior Divisor Comum de n e 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)
}

Experimente aqui

viciado em matemática
fonte