Il nastro adesivo può riparare qualsiasi cosa [chiuso]


13

Panoramica

Questa sfida è stata ispirata da questo post Meta StackOverflow . In esso, @hakre dice:

Ho visto un progetto davvero scritto da Stackoverflow (un noob copia insieme da SO qui e SO lì), l'attribuzione normalmente non viene mai eseguita, il che comporta la risoluzione dei diritti in CC. (sic)

La tua missione è quella di creare il programma più interessante che puoi - senza mai scrivere una singola riga di codice. Puoi utilizzare solo il codice già scritto per te, sia nelle domande che nelle risposte di StackOverflow. Tutto quello che puoi fare è canalizzare il tutto insieme il meglio che puoi. E, naturalmente, è molto importante fornire un'attribuzione adeguata in modo da non far cessare i nostri diritti.


Regole

  1. È necessario includere collegamenti alle domande / risposte utilizzate nella risposta.
  2. Non puoi modificare il codice che trovi, con le seguenti eccezioni:

    un. È possibile rinominare variabili, funzioni e metodi. (Ciò non significa che è possibile modificare una chiamata al metodo , cambiando, diciamo scanner.nextInt()ascanner.nextLine() e sostenendo che si modifica un nome di metodo. Il cambiamento deve essere la definizione o il riferimento alla stessa entità.)

    b. È possibile regolare il rientro in modo appropriato.

    c. Puoi supporre che vengano caricati i moduli corretti affinché gli snippet di codice funzionino. (ad esempio importistruzioni per Java e Python, usingistruzioni per C # e C ++ e loro equivalenti in tutte le lingue) Se lo snippet di codice include le imports per te, puoi spostarle all'inizio del codice.

    d. Se la lingua richiede l'esecuzione del codice in una sorta di corpo del metodo (ad esempio, public static void main(String[] args)per Java, static int Main(string[] args)per C # e così via), è possibile racchiudere il codice nel metodo appropriato. Ma i contenuti di quel metodo principale devono rimanere non modificati.

  3. È necessario fornire un elenco esplicito di qualsiasi variabile / metodo / funzione / ridenominazione di classi eseguita.

  4. Non puoi prendere snippet di snippet (ovvero se prendi un blocco di codice da un post, prendi tutto)
  5. Fornisci una breve descrizione di ciò che fa il codice per le persone che non conoscono la lingua che stai utilizzando.
  6. Contest di popolarità, quindi vince il maggior numero di voti!

Esempio noioso di cinque minuti (Python 3)

Descrizione : legge un sacco di file di registro dalla directory corrente e randomizza le linee in essi contenute (eccitante, giusto? Questo vincerebbe totalmente un concorso di popolarità)

fonte

import glob
import random

for file in glob.glob('log-*-*.txt'):
    # Etc.
    with open(file) as f:
        content = f.readlines()
        # shuffle the list in place 
        random.shuffle(content)

        # print it
        print(content)

Modifiche legali

  • Rinominato fnameda filedal collegamento 1
  • Rinominato bda contentdal collegamento 2

Attribuzioni

  1. /programming//a/3277516/1435657
  2. /programming//a/16737991/1435657
  3. /programming//a/4918520/1435657

8
L'idea mi piace molto, ma penso che questa domanda trarrebbe enormi benefici dal limitare la portata a un compito specifico. Ciò a) ispirerebbe più creatività perché non si può semplicemente copiare insieme qualsiasi cosa eb) lascerebbe aperta la possibilità di riutilizzare questo (interessante) tipo di domanda in un secondo momento. Se lo lasci come "fai quello che vuoi", tutte le altre domande come questa saranno duplicate. Temo che sia così, devo chiudere il voto come "troppo ampio" perché siluro probabilmente future domande interessanti.
Martin Ender,

2
Dovrei aggiungere, no, non voglio che questo diventi il ​​prossimo troll del codice, in cui tutti pubblicano un "Aggiungi due numeri", "Dividi questa stringa", con un tag "codifica del nastro adesivo". Penso che possiamo gestirlo in modo più creativo di così. Vorrei solo lasciare un po 'di spazio per altre interpretazioni di questo tipo di competizione a fonte limitata.
Martin Ender,

1
@ m.buettner Non sono inoltre sicuro che CodeGolf.SE trarrebbe necessariamente beneficio da molte domande come questa, per gli stessi motivi che dici: perché "dividere una stringa usando il codice SO", "ottenere un numero casuale da 1 a 1 100 utilizzando il codice SO "e così via? Ma questa è solo la mia opinione. Sono tutt'altro che un professionista CodeGolf.SE. :)
asteri

3
Per ora rimuoverò il tag personalizzato casuale perché non è stato stabilito il bisogno (e molto probabilmente non sarà necessario e non aggiungerà alcun valore).
asteri,

1
Sono d'accordo che dobbiamo stare attenti a inondare PPCG con domande come questa, solo perché è divertente e nuovo. Ma penso che potrebbero sorgere alcune domande veramente diverse ... come una matematica, una grafica, che usa il punteggio del golf da codice e forse una sfida poliglotta. Quindi, preferirei che l'ambito fosse limitato. In termini di persone che copiano la sfida senza nulla di sostanziale, penso che sia dovere della comunità essere un po 'più rigoroso nel "chiudere come duplicato" quando si tratta di nuovi tipi di sfida.
Martin Ender,

Risposte:


8

C - un calcolatore di operazione

Facciamolo per cominciare.
In realtà è abbastanza difficile trovare pezzi di programmi C che non siano interi programmi. Ho avuto molti problemi con le dichiarazioni.

// http://stackoverflow.com/a/2911978 Block #1 (changed i to a)
static int a = 10;
// http://stackoverflow.com/a/2911978 Block #1 (changed i to b)
static int b = 10;
// http://stackoverflow.com/a/442647 Block #1 (changed c to op)
unsigned char op = (unsigned char)-1;
// http://stackoverflow.com/q/3711048 Inline block #1
int main()
// http://stackoverflow.com/a/14902422 Inline block #1
{
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to a)
scanf("%d", &a)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Block #2 (changed c to op)
scanf("%c", &op)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to b)
scanf("%d", &b)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/a/4173188 Block #2
int result = 0;
result = (op == '*') ? a * b : result;
result = (op == '/') ? a / b : result;
result = (op == '+') ? a + b : result;
result = (op == '-') ? a - b : result;
printf("%d",result);
// http://stackoverflow.com/a/3245525 Block #2
printf("\n");  /* prints newline */
// http://stackoverflow.com/q/4138649 Inline block #1
return 0;
// http://stackoverflow.com/a/14902422 Inline block #2
}

Prende una semplice operazione integrale come 3+151o 41/2su stdin e invia il risultato a stdout.


1
Interessante riutilizzo dello stesso blocco di codice e rinominazione della variabile due volte. Non ci avevo nemmeno pensato! +1
asteri
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.