Ispirato dall'ordinamento sfortunato -a-numeri-cifre-senza-usare-un-array , ma ho pensato che rendesse il golf un codice migliore della domanda SO.
Dato un numero intero positivo, ordina le cifre in quel numero intero.
Il punteggio più basso vince!
- Inizia con 0 punti.
- Aggiungi un punto per personaggio.
- Aggiungi 20 punti per ogni array che usi.
- Aggiungi 10 punti per ogni stringa di più caratteri nel tuo codice. (Tranne l'input iniziale fintanto che viene convertito in un numero intero senza altre operazioni eseguite su di esso.)
- Aggiungi 32 punti se il numero massimo di cifre che il tuo programma è in grado di gestire è limitato dal tuo programma (al contrario della macchina).
- Sottrai 10 punti se il tuo codice può cambiare la direzione dell'ordinamento dato un altro argomento (qualunque cosa tu voglia, ma per esempio 0 per l'ordinamento decrescente e 1 per l'ascendente).
Ogni lingua è diversa, ma l'idea è quella di evitare qualsiasi tipo di pirateria informatica digeribile.
Esempio:
Ingresso : 52146729
Uscita : 97654221 o 12245679
Appunti:
- Usa qualsiasi funzionalità di ordinamento integrata fornita dal tuo linguaggio di programmazione, ma se quella funzione di ordinamento comporta stringhe o array, prendi la penalità!
- È possibile scrivere la soluzione come una funzione che accetta direttamente un numero intero o come programma che accetta un argomento da argv, un file o flusso e lo converte in un numero intero. Fintanto che lo converti immediatamente in un numero intero e scarti l'input char * originale senza eseguire ulteriori operazioni su di esso, non viene applicata alcuna penalità.
- Le penalità si applicano non solo ai valori letterali delle stringhe nel testo del programma, ma a qualsiasi parte della funzione del programma che probabilmente inserisce o emette una stringa o iterabile. Ad esempio, JavaScript
String.prototype.split
ha almeno una stringa come input (this
) e una matrice come output, quindi +30 per usarla. - Ho cercato di fare in modo che queste regole guidino il principio della progettazione dell'algoritmo, non l'I / O iniziale / finale (da cui la nota n. 2). Non credo che la penalità debba essere applicata
int(input())
anche seinput
la firma dice che restituisce una stringa, purché quell'espressione sia il punto di ingresso iniziale del programma. Allo stesso modo, se l'output finale del programma èprint(x)
ex
deve essere una stringa, la penalità non si applica all'operazione di lancio della stringa dell'ultimo fossato. Detto questo, non ho mai detto esplicitamente che questo doveva essere un programma o da dove l'I / O doveva venire o andare. Una funzione che accettaint
e restituisce unaint
servirebbe e non soffrirebbe di queste ambiguità.
" "
conta come un Multi stringa di caratteri? Un singolo personaggio non verrebbe considerato "multi" ...