Come posso segnare sfide con dimensioni variabili del problema?


21

Esiste un supporto abbastanza forte sulla meta per le domande sulla scrittura di sfide da affrontare in primo piano, a condizione che queste domande siano specifiche e rispondibili. Tuttavia, non abbiamo ancora domande del genere, quindi ho pensato di testare le acque. Questa domanda sta probabilmente entrando in un buon territorio soggettivo, un cattivo soggettivo , ma penso che sia probabilmente quali saranno le domande da scrivere sulla sfida. Per assicurarti che generino ancora contenuti di alta qualità, ti preghiamo di non pubblicare solo idee speculative selvagge nelle risposte. Spiega perché evitano i problemi di seguito indicati o indicano idealmente le sfide esistenti che hanno utilizzato con successo la tecnica suggerita in passato.

Per alcune sfide di ottimizzazione, un parametro gratuito nell'impostazione della sfida è la dimensione del problema da ottimizzare. Per "sfida dell'ottimizzazione" non intendo cose come il nostro genere di , in cui le risposte sono generalmente richieste per essere esatte / ottimali e la sfida viene assegnata su una dimensione del problema fissa o sulla dimensione del problema più grande che può essere gestita in un periodo di tempo fisso. Intendo specificamente le sfide in cui sono consentite e persino probabili soluzioni non ottimali al problema di fondo e l'obiettivo è fare il meglio possibile.

Per motivi di sicurezza, considera le sfide del castoro occupato , sebbene in linea di principio questo si applichi anche ad altri tipi di sfida senza soluzioni ottimali conosciute (sto solo usando i castori occupati qui perché esacerbano i problemi menzionati di seguito). Dire, volevo fare una sfida per trovare il castoro Brainfuck più affollato. Il parametro libero nei problemi di beaver occupato è la dimensione del codice. Non posso impostare la sfida senza fare riferimento in qualche modo alla dimensione del codice. In un certo senso, ogni valore del parametro dimensione problema rappresenta Nuna sfida separata (sempre più difficile). La mia domanda principale è come posso far funzionare una sfida del genere senza incorrere in problemi di bilanciamento.

La soluzione ovvia è risolvere N: "Trova un programma Brainfuck che termina con Nbyte di codice sorgente che stampa il maggior numero possibile di caratteri / esegue il maggior numero di tick possibile". Questo ha enormi problemi di bilanciamento: se prendo la dimensione troppo piccola, qualcuno potrebbe trovare rapidamente ilcastoro più indaffarato e la sfida è finita. Se scelgo le dimensioni troppo grandi, la soluzione ottimale stamperà una quantità astronomica di caratteri prima di terminare, il che significa che sarà probabilmente banale trovare tali programmi e la sfida diventa un lavoretto / esercizio di pazienza - questo lascia anche il territorio in cui i castori indaffarati possono essere trovati in modo programmatico, e invece le persone dovrebbero iniziare a dimostrare formalmente i loro risultati che molte persone potrebbero non considerare molto divertenti. Naturalmente, questo problema è più pronunciato nelle sfide del castoro indaffarato rispetto ad altri tipi, a causa della crescita delle soluzioni ottimali, ma si applica comunque ad altre sfide.

L'opzione successiva sarebbe quella di Nnon vincolare e renderlo parte del punteggio tramite una funzione. Anche per le sfide "normali" ottenere l'equilibrio dei punteggi combinati è incredibilmente difficile, ma nel caso di castori indaffarati è in realtà fondamentalmente impossibile, a causa del fatto che le soluzioni ottimali crescono più velocemente Nrispetto a qualsiasi funzione calcolabile. Ciò significa che posso sempre battere la migliore risposta esistente andando a un numero sufficientemente grande Ndove posso facilmente trovare un programma che funziona per così tanto tempo che posso ottenere un punteggio migliore senza troppi sforzi.

Ho anche considerato la possibilità di impostare un valore fisso Ne di consentire alle persone di inviare anche castori per più grandi Nche verranno utilizzati come interruttori di cravatta successivi. Questo ha un problema simile, nel senso che qualcuno può semplicemente "trovare un castoro occupato altrettanto bene" per un N, creando così un pareggio e quindi semplicemente presentando qualsiasi cosa per il prossimo in Ncui trovare un punteggio elevato è più facile (anche se trovare il il punteggio ottimale diventa più difficile). In questi casi, come gestiresti più persone utilizzando la stessa soluzione? Dimenticare sarebbe anche strano nel caso in cui fosse ottimale.

Forse uno potrebbe colpire una via di mezzo, facendo un'ipotesi istruita su un ragionevole Ne quindi chiedendo castori occupati per tutte le dimensioni entro (diciamo) 5 byte di N, in modo che ci sia un margine di manovra in entrambe le direzioni (e quindi si combinano i ~ 10 punteggi in una singola per una tecnica o per un'altra). Questo non sembra abbastanza soddisfacente neanche perché la mia ipotesi iniziale Npotrebbe essere ancora ampiamente al di fuori della gamma che rappresenta sfide interessanti.

TL; DR: nei casi in cui la sfida è (risolvere in modo ottimale e) ottimizzare un problema la cui dimensione è variabile, come posso incorporare la dimensione nella sfida? Idealmente, vorrei che le persone potessero lavorare con un valore Nche è vicino all'estremità superiore della gamma di dimensioni trattabili. Ma nel caso in cui Nrisultasse che sono possibili soluzioni ottimali , sarebbe bello se le soluzioni per leggermente più grandi Niniziassero a pesare, in modo che la sfida possa continuare con una dimensione del problema più interessante.


6
Mi piace questo come modello per le domande di stesura delle sfide perché non è specifico per PPCG. Non è "Come dovremmo farlo?" ma "Qual è un buon modo per farlo?". Potrei immaginare che tali sfide vengano lanciate su un sito di hobbisti di programmazione o in una competizione di persona.
xnor

Metti il ​​tldr in cima!
Majora320,

1
@ Majora320 ... ma poi cambia d in w :-)
Luis Mendo,

Risposte:


3

Trova il prossimo N

La sfida indicherebbe un punto a Ncui dovrebbero iniziare le domande.

Quindi, le persone invieranno le risposte al momento N. Se un dato invio si dimostra ottimale, Naumenta di 1 e il processo si ripete.

Esistono diversi modi per segnare questo:

  1. Ottieni il punteggio migliore alla corrente N
  2. Dai un punto alla migliore presentazione al momento N, più un punto per ogni soluzione ottimale
  3. Come il n. 2, ma indica anche la persona che ha dimostrato che un determinato invio era ottimale.

1

Dare punti per soluzioni all'interno di un N limitato

Consentire Ndi essere entro limiti fissi. Il limite inferiore dovrebbe escludere ovviamente risposte banali e che il limite superiore non dovrebbe essere troppo lontano dal limite inferiore.

Quindi, dai 1 punto per ogni persona che ha la migliore soluzione per ciascuno Nentro i limiti. Se più alto Nsignifica che la soluzione è più difficile, allora dai loro N punti. (o qualche formula basata su N).

Questo metodo è simile al modo in cui AZsPC lo fa, ma non vengono assegnati punti parziali.

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.