Usted es el usuario: cree los requisitos

15

Mi jefe * no entiende por qué sus programadores reaccionan negativamente a los usuarios que cambian los requisitos del programa. Ayúdala a entender! En cada respuesta, cree un nuevo requisito. Luego, escriba un programa / función que resuelva ese requisito y todos los requisitos anteriores, mientras está en un nuevo lenguaje de programación.

Ejemplos

El usuario 1 publica la primera respuesta. Especifica que el programa debe generar "Hola, mundo". Él crea un programa en Java que genera "Hola, mundo".

El usuario 2 publica la segunda respuesta. Se especifica que el programa debe aceptar la entrada N y la salida del n º de primera, hasta el número máximo de idiomas. Ella crea un programa en C ++ que acepte la entrada de n y da salida a la N º primer y salidas "Hola, mundo". Ella no podría haber creado un programa en Java.

El usuario 3 publica la tercera respuesta. Él especifica que la fuente del programa no puede contener el texto "Hola". Se crea una función en Python que acepta la entrada de n y da salida a la N º primer y "Hola, mundo". mientras no usa el texto "Hola" en su fuente. No pudo haber creado un programa en Java o C ++.

Formato de respuesta

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

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Reglas de respuesta

  • La respuesta debe seguir el formato anterior o similar.

  • La respuesta puede ser un programa o una función.

  • La respuesta debe cumplir con todos los requisitos hasta la respuesta actual incluida.

  • El mismo usuario no puede publicar dos respuestas seguidas.

  • Si se publican dos respuestas con el mismo número, la que se publique más tarde debe eliminarse.

  • No edite su requisito a menos que haya cometido un error grave y no se hayan publicado otras respuestas.

  • Si su respuesta no cumple con su regla y todas las demás reglas, no es válida. Intenta arreglar esto antes de que alguien publique la siguiente respuesta.

  • Las diferentes versiones del mismo idioma solo cuentan como idiomas diferentes si el programa o la función creada en cualquiera de las versiones se comportará de manera diferente en la otra versión.

  • Es posible que la respuesta no acepte ninguna entrada no requerida, y puede que no genere nada no requerido, excepto los espacios en blanco necesarios. Sin embargo, mientras que el programa debe cumplir con todos los requisitos "ocultos" (del usuario), puede hacer cualquier otra cosa que desee, especialmente si debe cumplir con un requisito de tiempo de ejecución.

Reglas de requisitos

  • El requisito solo debe especificar un requisito. Este requisito puede ser condicional, y si este requiere una entrada y / o salida, esto puede incluirse.

  • El requisito no puede eliminar o modificar requisitos anteriores, o entrar en conflicto con ellos, pero puede extender uno (especifique cuál).

  • Si el requisito restringe la fuente (fuente ), o requiere texto en la fuente, solo puede eliminar una sola cadena (por ejemplo 0, Hello), o requerir un solo carácter.

  • El requisito no puede exigir que la fuente sea inferior a 100 bytes, requerir una codificación específica o, por sí misma, descartar la mayoría de los idiomas comunes.

  • Es posible que el requisito no obligue a la fuente a ajustarse a un determinado patrón (por ejemplo, comenzar cada línea con un determinado carácter o (@Conor) hashing a un cierto valor) distinto del especificado en la fuente restringida.

Esto es , por lo que todas las respuestas se basan en respuestas anteriores. Tal vez yo y otros intentemos mantener una lista de todos los requisitos. Para ver las respuestas en orden, puede ordenar por más antiguas. Para ver la respuesta más nueva, ordene por la más antigua, luego navegue hasta el final de la lista.

Cómo ganar (modificado para votar en espera):

Cuando no se publica una respuesta durante dos semanas, el desafío termina y se calcularán los puntajes. Los puntajes se calcularán sumando el número total de respuestas de cada usuario, pero ponderando las publicaciones en función de qué tan lejos están en la cadena (dado que las publicaciones posteriores tienen más requisitos, son más difíciles).

Pseudocódigo:

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

Ejemplo:

Sally tiene tres respuestas. Publicó la respuesta 5, la respuesta 7 y la respuesta 20.

Su puntaje será 1.05 + 1.07 + 1.2 = 3.32. Si se tratara de una suma directa de respuestas, su puntaje sería 3, pero la ponderación de la profundidad de la cadena recompensa las respuestas más difíciles.

Para comenzar:

Aquí está el primer requisito, dado por mi jefe *:

Requisito 0: el programa debe generar 0 antes que cualquier otra cosa.

*ficticio

Lista de requisitos e idiomas

Tenga en cuenta que esto puede estar desactualizado; consulte la última respuesta publicada inmediatamente antes de publicar su respuesta para asegurarse de que cumple con todos los requisitos. Lamento mucho si crea un programa exquisito, solo para que alguien lo abrace; si realmente quiere publicarlo de todos modos, especifique que no compite.

Requisito completo (pero tal vez no actual): no puede contener 0, *o ]en el código fuente, y no puede utilizar un builtin de unión en línea nueva. Emite 0, luego toma una entrada entera no negativa ny genera una nueva línea seguida del nnúmero de Fibonacci indexado 0 (puede ser 1indexado), seguido de una nueva línea, seguida de la misma entrada n al cuadrado, seguida de una nueva línea, seguida de nmultiplicada por una nueva entrada m, seguida de una nueva línea, seguida de 10^B, donde Bes el número de bytes en el código fuente, seguido de una nueva línea, seguido del nnúmero 0primo th -indexed (también puede ser 1-indexed), seguido de una nueva línea, seguido del mayor divisor común de n y m.

0: el programa debe salir 0antes que nada. Idioma: N / A
1: La fuente del programa no puede contener 0. Idioma: 05AB1E
2: el programa toma una entrada entera no negativa ny emite una nueva línea seguida del 0enésimo número de Fibonacci 1indexado (puede indexarse). Idioma: dc
3: el programa genera una nueva línea, seguida de la misma entrada al ncuadrado. Idioma: J
4: el programa genera una nueva línea, seguida de nmultiplicada por una nueva entrada m. Idioma: Ohm
5: el programa no puede contener *(código ASCII 0x2A). Lenguaje: Python 3
6: El programa genera una nueva línea, seguida de 10^B, donde Bes el número de bytes en el código fuente. Idioma: Mathematica
7: El programa genera una nueva línea, seguida del nnúmero 0primo th -indexed (también puede ser 1-indexed). Lenguaje: JavaScript (ES6)
8: El programa no utiliza un builtin incorporado a las nuevas líneas, pero puede usar cualquier otro builtin incorporado. Idioma: Jelly
9: el programa genera una nueva línea seguida por el divisor común más grande de ny m. Idioma: Scala
10: el programa no puede contener ]. Lengua: Pyth

Puntuaciones actuales (ordenadas por primera publicación)

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 the Outgolfer : 2.18
math_junkie : 1.09

Stephen
fuente
3
¿Por qué aceptar la última respuesta? Eso hace que parezca que ganas por agregar un requisito que nadie puede cumplir.
xnor
55
Por ejemplo, "el hash md5 del programa debe ser ..."
Conor O'Brien
2
Incluso si las reglas se mantienen para evitar un requisito que ponga fin a la cadena, sigo pensando que tener una "condición ganadora" alienta a las personas a hacer reglas casi imposibles en lugar de divertidas.
xnor
2
@StephenS Bueno, parece que la gente no está jugando para ganar, así que parece que mi preocupación está fuera de lugar.
xnor
2
Esto debería llamarse 'Scope Creep'
NonlinearFruit

Respuestas:

2

Respuesta 10 - Pyth

Requisito: Toma dos entradas, n(> = 0) y m. Salidas 0 sin el uso de 0, *o ]en cualquier parte del código fuente, y sin incorporaciones para unirse en nuevas líneas. Luego genera una nueva línea seguida del 1enésimo número de Fibonacci 0indexado (puede indexarse), seguido de una nueva línea, seguido de un ncuadrado, seguido de una nueva línea, seguido de nmultiplicado por m, seguido de una nueva línea, seguido de 10^Bdónde Bes el número de bytes en el código fuente, seguido de una nueva línea y el nnúmero 1primo th -indexed (también puede ser 0-indexed), y finalmente seguido de una nueva línea y el divisor común más grande de ny m.

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

Intérprete en línea

Erik el Outgolfer
fuente
Sí, esto también es golf :-)
Erik the Outgolfer
Además, antes de comentar, no, no puedo usarlo en jlugar de hacerlo jb, ya que estaría usando un builtin de unirse a nuevas líneas.
Erik the Outgolfer
6

Respuesta 1 - 05AB1E

Requisito: Imprime 0... sin un 0en el código fuente

¾
Okx
fuente
4

Respuesta 3 - J

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

Requisito: Salidas 0sin 0en el código fuente, a continuación, se lleva a una entrada de número entero no negativo ny emite una nueva línea seguida por el 0-indexed n'th número de Fibonacci (puede ser 1indexado), seguido de una nueva línea, seguido por la misma entrada nal cuadrado.

Pruébalo en línea!

Conor O'Brien
fuente
4

Respuesta 4 - Ohm

Requisito: Emite 0sin 0el código fuente, luego toma una entrada entera no negativa ny emite una nueva línea seguida del nnúmero de Fibonacci indexado en 0 (puede ser 1 indexado), seguido de una nueva línea, seguida de la misma entrada n al cuadrado, seguido de una nueva línea, seguido de nmultiplicado por una nueva entrada m.

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

Respuesta 2 - dc

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

Requisito: Emite 0sin 0el código fuente, luego toma una entrada entera no negativa ny emite una nueva línea seguida del 'número de Fibonacci 0indexado n' (puede 1indexarse).

Pruébalo en línea!

R. Kap
fuente
@ R.Kap No hay problema :)
Stephen
2
Cuando leí el nuevo requisito, por alguna razón, me eché a reír. +1.
Camarada SparklePony
4

Respuesta 5 - Python 3

Requisitos: emite 0 sin 0 en el código fuente, luego toma una entrada entera no negativa n y emite una nueva línea seguida del enésimo número de Fibonacci indexado en 0 (puede ser 1 indexado), seguido de una nueva línea, seguida de la misma entrada n al cuadrado, seguido de una nueva línea, seguido de n multiplicado por una nueva entrada m. No utilice el carácter *, 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
fuente
3

Respuesta 6 - Mathematica

Requisito: emite 0 sin 0 o * en el código fuente, luego toma una entrada entera no negativa n y emite una nueva línea seguida del enésimo número de Fibonacci indexado en 0 (puede ser 1 indexado), seguido de una nueva línea, seguido de misma entrada n al cuadrado, seguida de una nueva línea, seguida de n multiplicada por una nueva entrada m, seguida de una nueva línea, seguida de 10 ^ B donde B es el número de bytes en el código fuente.

((e=Echo)[1-1];e@Fibonacci@#;e[#^2];e[1##];2^# 5^#&@59)&
Greg Martin
fuente
1
Sí, de ahí mi edición apresurada después de ver que EricRoe me venció por un minuto :)
Greg Martin
2

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

: Requisito función A que toma dos entradas, un número entero no negativo ny cualquier número my vuelve una cadena que contiene 0sin el uso de 0cualquier lugar en el código fuente, a continuación, una nueva línea seguida por el 0-indexed nésimo número de Fibonacci (puede ser 1indexado), seguido por una nueva línea, seguida de un ncuadrado, seguida de una nueva línea, seguida de nmultiplicada por msin el uso de *ninguna parte del código fuente, seguida de una nueva línea, seguida de 10^Bdónde Bestá el número de bytes en el código fuente, y finalmente seguido de un nueva línea y eln número 0primo indexado th (también puede ser 1indexado).

Fragmento de prueba

R. Kap
fuente
Puede guardar una cantidad considerable de bytes cambiando String.fromCharCode(48)a 1-1. No es que realmente importe ;-) (Además, hay dos ceros más adelante en el código fuente, que puede solucionar de la misma manera)
ETHproductions
1

Respuesta 8 - Gelatina

Función A que toma dos entradas, un número entero no negativo: Requisito ny cualquier número my vuelve una cadena que contiene 0sin el uso de 0cualquier lugar en el código fuente, a continuación, una nueva línea seguida por el 0-indexed nésimo número de Fibonacci (puede ser 1indexado), seguido por una nueva línea, seguida de un ncuadrado, seguida de una nueva línea, seguida de nmultiplicada por msin el uso de *ninguna parte del código fuente, seguida de una nueva línea, seguida de 10^Bdónde Bestá el número de bytes en el código fuente, y finalmente seguido de un nueva línea y el índice nth 0(también puede ser1-indexado) número primo. No se permiten incorporaciones para unirse en nuevas líneas, pero aun así se permite unir incorporadas.

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

Pruébalo en línea!

Erik el Outgolfer
fuente
Sí, esto es golf.
Erik the Outgolfer
1

Respuesta 9 - Scala

Requisitos : Toma dos entradas, n(> = 0) y m. Salidas 0sin el uso 0o *en cualquier lugar del código fuente, y sin incorporaciones para unirse en líneas nuevas. Luego genera una nueva línea seguida del 1enésimo número de Fibonacci 0indexado (puede indexarse), seguido de una nueva línea, seguido de un ncuadrado, seguido de una nueva línea, seguido de nmultiplicado por m, seguido de una nueva línea, seguido de 10^Bdónde Bes el número de bytes en el código fuente, seguido de una nueva línea y el nnúmero 1primo th -indexed (también puede ser 0-indexed), y finalmente seguido de una nueva línea y el divisor común más grande de ny 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)
}

Pruébalo aquí

adicto a las matemáticas
fuente