Sei l'utente: creare i requisiti


15

Il mio capo * non capisce perché i suoi programmatori reagiscono negativamente agli utenti che cambiano i requisiti del programma. Aiutala a capire! Ad ogni risposta, creare un nuovo requisito. Quindi, scrivere un programma / funzione che risolva tale requisito e tutti i requisiti precedenti, mentre in un nuovo linguaggio di programmazione.

Esempi

L'utente 1 pubblica la prima risposta. Specifica che il programma deve generare "Hello, World". Crea un programma in Java che genera "Hello, World".

L'utente 2 pubblica la seconda risposta. Si specifica che il programma deve accettare in ingresso n e l'uscita del n ° primo, fino a quello del linguaggio numero di max. Lei crea un programma in C ++ che accetta l'input n ed emette il n ° Prime e uscite "Ciao, mondo". Non avrebbe potuto creare un programma in Java.

L'utente 3 pubblica la terza risposta. Specifica che l'origine del programma non può contenere il testo "Hello". Egli crea una funzione in Python che accetta l'input n ed emette il n ° Prime e "Ciao, mondo". pur non usando il testo "Hello" nella sua fonte. Non avrebbe potuto creare un programma in Java o C ++.

Formato di risposta

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

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Regole di risposta

  • La risposta deve seguire il formato sopra o simile.

  • La risposta può essere un programma o una funzione.

  • La risposta deve soddisfare tutti i requisiti fino alla risposta corrente inclusa.

  • Lo stesso utente non può pubblicare due risposte di seguito.

  • Se vengono pubblicate due risposte con lo stesso numero, quella postata in seguito deve essere eliminata.

  • Non modificare il tuo requisito a meno che tu non abbia fatto un errore e non siano state pubblicate altre risposte.

  • Se la tua risposta non è conforme alla tua regola e a tutte le altre regole, non è valida. Prova a risolvere questo problema prima che qualcun altro pubblichi la risposta successiva.

  • Versioni diverse della stessa lingua contano solo come lingue diverse se il programma o la funzione creati in entrambe le versioni si comporteranno diversamente nell'altra versione.

  • La risposta potrebbe non accettare alcun input non richiesto e potrebbe non produrre nulla di non necessario ad eccezione degli spazi bianchi necessari. Tuttavia, mentre dietro le quinte il programma deve soddisfare tutti i requisiti "nascosti" (dall'utente), può fare qualsiasi altra cosa tu voglia, specialmente se devi soddisfare un requisito di tempo di esecuzione.

Regole dei requisiti

  • Il requisito deve specificare solo un requisito. Questo requisito può essere condizionato e se questo requisito richiede un input e / o un output, questo può essere incluso.

  • Il requisito non può rimuovere o modificare i requisiti precedenti o essere in conflitto con essi, ma può estenderne uno (specificare quale).

  • Se il requisito limita l'origine (origine ) o richiede testo nell'origine, può rimuovere solo una singola stringa (ad esempio 0, Hello) o richiedere un singolo carattere.

  • Il requisito non può richiedere che l'origine sia inferiore a 100 byte, richieda una codifica specifica o, di per sé, escluda la maggior parte delle lingue comuni.

  • Il requisito potrebbe non forzare la sorgente a conformarsi a un determinato modello (ad esempio, iniziare ogni riga con un determinato carattere o (hash @Conor) su un determinato valore) diverso da quello specificato nella fonte riservata.

Questo è risposte, quindi tutte le risposte si basano su risposte precedenti. Io e forse altri cercheremo di tenere un elenco di tutti i requisiti. Per vedere le risposte in ordine, puoi ordinare in base al più vecchio. Per vedere la risposta più recente, ordina per meno recente, quindi vai alla fine dell'elenco.

Come vincere (modificato per il voto di sospensione):

Se non viene inviata alcuna risposta per due settimane, la sfida è terminata e i punteggi verranno calcolati. I punteggi saranno calcolati sommando il numero totale di risposte per ciascun utente, ma ponderando i messaggi in base a quanto sono lontani dalla catena (poiché i post successivi hanno più requisiti, sono più difficili).

pseudocodice:

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

Esempio:

Sally ha tre risposte. Ha pubblicato la risposta 5, la risposta 7 e la risposta 20.

Il suo punteggio sarà 1.05 + 1.07 + 1.2 = 3.32. Se fosse una somma semplice di risposte, il suo punteggio sarebbe 3, ma la ponderazione della profondità della catena premia le risposte più difficili.

Iniziare:

Ecco il primo requisito, dato dal mio capo *:

Requisito 0: il programma deve emettere 0 prima di ogni altra cosa.

*immaginario

Elenco di requisiti e lingue

Tieni presente che questo potrebbe non essere aggiornato: controlla l'ultima risposta pubblicata immediatamente prima di pubblicare la risposta per assicurarti di soddisfare ogni requisito. Mi dispiace molto se crei un programma squisito, solo per qualcuno che lo snipe - se vuoi davvero pubblicarlo comunque, specifica che non è in competizione.

Requisito completo (ma forse non attuale): non può contenere 0, *o ]nel codice sorgente, e non è possibile utilizzare un built-in newline incorporato. Output 0, quindi accetta un input intero non negativo ne genera una nuova riga seguita dal nnumero th Fibonacci indicizzato 0 (può essere 1indicizzato), seguito da una nuova riga, seguita dallo stesso input n al quadrato, seguito da una nuova riga, seguito da nmoltiplicato da un nuovo input m, seguito da una nuova riga, seguito da 10^B, dove si Btrova il numero di byte nel codice sorgente, seguito da una nuova riga, seguito dal numero primo nth 0-indexed (può anche essere 1-indexed), seguito da una newline, seguito dal più grande divisore comune di n e m.

0: il programma deve essere emesso 0prima di ogni altra cosa. Lingua: N / A
1: la sorgente del programma non può contenere 0. Lingua: 05AB1E
2: Il programma accetta un input intero non negativo ne genera una nuova riga seguita dal 0n-esimo numero di Fibonacci (che può essere 1indicizzato). Lingua: dc
3: il programma emette una nuova riga, seguita dallo stesso input al nquadrato. Lingua: J
4: il programma genera una nuova riga, seguita da nmoltiplicata per un nuovo input m. Lingua: Ohm
5: il programma non può contenere *(codice ASCII 0x2A). Lingua: Python 3
6: il programma genera una nuova riga, seguita da 10^B, dove si Btrova il numero di byte nel codice sorgente. Lingua: Mathematica
7: il programma emette una nuova riga, seguita dal numero primo nth 0-exexed (può anche essere 1-indexed). Lingua: JavaScript (ES6)
8: il programma non utilizza un built-in-newline incorporato, ma può utilizzare qualsiasi altro join incorporato. Lingua: Jelly
9: Il programma genera una nuova riga seguita dal più grande divisore comune di n e m. Lingua: Scala
10: il programma non può contenere ]. Lingua: Pyth

Punteggi attuali (ordinati per primo post)

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


3
Perché accettare l'ultima risposta? Ciò fa sembrare che tu vinca per aver aggiunto un requisito che nessuno può soddisfare.
xnor

5
Ad esempio, "l'hash md5 del programma deve essere ..."
Conor O'Brien

2
Anche se le regole reggono per evitare un requisito che pone fine alla catena, penso comunque che avere una "condizione di vittoria" incoraggi le persone a fare regole quasi impossibili piuttosto che divertenti.
xnor

2
@StephenS Beh, la gente sembra non giocare per vincere, quindi sembra che la mia preoccupazione sia fuori luogo.
xnor

2
Questo dovrebbe essere chiamato 'Scope Creep'
NonlinearFruit

Risposte:


2

Risposta 10 - Pyth

Requisito: accetta due input, n(> = 0) e m. Output 0 senza l'uso di 0, *o in ]qualsiasi parte del codice sorgente, e senza builtin per l'adesione a newline. Quindi genera una nuova riga seguita 1dall'ennesimo numero di Fibonacci (può essere 0indicizzato), seguito da una nuova riga, seguito da un nquadrato, seguito da una nuova riga, seguito da un nmoltiplicato m, seguito da una nuova riga, seguito da 10^Bdove Bè il numero di byte nel codice sorgente, seguito da una nuova riga e dal numero primo nth 1-exexed (può anche essere 0-indexed), e infine seguito da una newline e dal più grande divisore comune di n e m.

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

Interprete online


Sì, anche questo è golf :-)
Erik the Outgolfer

Inoltre, prima di commentare, no, non posso semplicemente usare jinvece di jb, da allora userei un built-in-newline incorporato.
Erik the Outgolfer,

6

Risposta 1 - 05AB1E

Requisito: stampa 0... senza un 0nel codice sorgente

¾

4

Risposta 3 - J

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

Requisito: output 0senza 0nel codice sorgente, quindi accetta un input intero non negativo ned emette una nuova riga seguita dal 'numero di Fibonacci 0-indexed n(può essere 1indicizzato), seguito da una nuova riga, seguita dallo stesso input al nquadrato.

Provalo online!


4

Risposta 4 - Ohm

Requisito: output 0senza 0nel codice sorgente, quindi accetta un input intero non negativo ned emette una nuova riga seguita dal nnumero th Fibonacci indicizzato 0 (può essere 1 indicizzato), seguito da una nuova riga, seguita dallo stesso input n al quadrato, seguito da una nuova riga, seguito da nmoltiplicato per un nuovo input m.

¼,≡ƒ,²,*,

4

Risposta 2 - dc

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

Requisito: output 0senza 0nel codice sorgente, quindi accetta un input intero non negativo ne restituisce una nuova riga seguita dal numero di Fibonacci 0-indexed n(può essere 1indicizzato).

Provalo online!


@ R.Kap Nessun problema :)
Stephen

2
Quando ho letto il nuovo requisito, per qualche motivo ho iniziato a ridere. +1.
Compagno SparklePony

4

Risposta 5 - Python 3

Requisiti: Output 0 senza 0 nel codice sorgente, quindi accetta un input intero non negativo n ed emette una nuova riga seguita dall'ennesimo numero di Fibonacci indicizzato 0 (può essere 1 indicizzato), seguito da una nuova riga, seguita dallo stesso input n al quadrato, seguito da una nuova riga, seguito da n moltiplicato per un nuovo input m. Non utilizzare il carattere *, codice 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

Risposta 6 - Mathematica

Requisito: output 0 senza 0 o * nel codice sorgente, quindi accetta un input intero non negativo n e genera una nuova riga seguita dall'ennesimo numero di Fibonacci indicizzato 0 (può essere 1 indicizzato), seguito da una nuova riga, seguita dal stesso input n al quadrato, seguito da una nuova riga, seguito da n moltiplicato per un nuovo input m, seguito da una nuova riga, seguito da 10 ^ B dove B è il numero di byte nel codice sorgente.

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

1
Sì, quindi la mia modifica frettolosa dopo aver visto che EricRoe mi ha battuto un minuto :)
Greg Martin

2

Risposta 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 funzione A che prende due ingressi, un intero non negativo ne qualsiasi numero me restituisce una stringa contenente 0senza l'uso di 0qualsiasi parte del codice sorgente, quindi una nuova riga seguita dal 0-indexed nesimo numero di Fibonacci (può essere 1indicizzato), seguita da una nuova riga, seguita da una linea nquadrata, seguita da una nuova riga, seguita da nmoltiplicata per msenza l'uso di un *punto qualsiasi nel codice sorgente, seguita da una nuova riga, seguita da 10^Bdove si Btrova il numero di byte nel codice sorgente e infine seguito da un newline e il numero primo nth 0-indexed (può anche essere 1-indexed).

Test snippet


È possibile salvare una notevole quantità di byte cambiando String.fromCharCode(48)in 1-1. Non che sia veramente importante ;-) (Inoltre, ci sono due zero più avanti nel codice sorgente, che puoi correggere allo stesso modo)
ETHproductions

1

Risposta 8 - Gelatina

Requisito: una funzione che accetta due input, un numero intero non negativo ne qualsiasi numero me restituisce una stringa contenente 0senza l'uso di 0qualsiasi parte del codice sorgente, quindi una nuova riga seguita dal 0-indexed nesimo numero di Fibonacci (può essere 1indicizzato), seguita da una nuova riga, seguita da una linea nquadrata, seguita da una nuova riga, seguita da nmoltiplicata per msenza l'uso di un *punto qualsiasi nel codice sorgente, seguita da una nuova riga, seguita da 10^Bdove si Btrova il numero di byte nel codice sorgente e infine seguito da un newline e nth 0-indexed (potrebbe anche essere1-indexed) numero primo. Non sono consentiti incorporati per l'adesione a newline, ma l'adesione agli incorporati è ancora consentita.

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

Provalo online!


Sì, questo è golf.
Erik the Outgolfer

1

Risposta 9 - Scala

Requisiti : accetta due input, n(> = 0) e m. Output 0senza l'uso 0o in *qualsiasi parte del codice sorgente e senza builtin per unirsi a newline. Quindi genera una nuova riga seguita 1dall'ennesimo numero di Fibonacci (può essere 0indicizzato), seguito da una nuova riga, seguito da un nquadrato, seguito da una nuova riga, seguito da un nmoltiplicato m, seguito da una nuova riga, seguito da 10^Bdove Bè il numero di byte nel codice sorgente, seguito da una nuova riga e dal numero primo nth 1-exexed (può anche essere 0-indexed), e infine seguito da una newline e dal più grande divisore comune di 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)
}

Provalo qui

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.