La cinta adhesiva puede arreglar cualquier cosa [cerrada]

13

Visión general

Este desafío fue inspirado por esta publicación de StackOverflow Meta . En él, @hakre dice:

He visto un proyecto realmente escrito por Stackoverflow (una copia novata de SO aquí y SO allá), la atribución normalmente nunca se realiza, lo que resulta en la terminación de los derechos bajo CC. (sic)

Su misión es crear el programa más interesante que pueda, sin tener que escribir una sola línea de código. Solo puede usar el código que ya está escrito para usted, tanto en preguntas como en respuestas de StackOverflow. Todo lo que puede hacer es unir todo lo mejor que pueda. Y, por supuesto, es muy importante que proporcionemos la atribución adecuada para que no se rescindan nuestros derechos.


Reglas

  1. Debe incluir enlaces a las preguntas / respuestas que utilizó en su respuesta.
  2. No puede modificar el código que encuentre, con las siguientes excepciones:

    a. Puede cambiar el nombre de variables, funciones y métodos. (Esto no significa que se puede cambiar un método de invocación , cambiando, por ejemplo scanner.nextInt()a scanner.nextLine()y afirmando que se está cambiando un nombre de método. El cambio debe ser en la definición o referencia a la misma entidad.)

    si. Puede ajustar la sangría adecuadamente.

    C. Puede suponer que se cargan los módulos adecuados para que funcionen los fragmentos de código. (por ejemplo, importdeclaraciones para Java y Python, usingdeclaraciones para C # y C ++, y sus equivalentes en todos los idiomas) Si el fragmento de código incluye los imports para usted, puede moverlos a la parte superior del código.

    re. Si el lenguaje requiere que el código esté en algún tipo de cuerpo de método para ejecutarse (por ejemplo, public static void main(String[] args)para Java, static int Main(string[] args)para C #, etc.), puede ajustar su código en el método apropiado. Pero el contenido de ese método principal debe permanecer sin modificaciones.

  3. Debe proporcionar una lista explícita de cualquier variable / método / función / cambio de nombre de clase realizado.

  4. No puedes tomar fragmentos de fragmentos (es decir, si tomas un bloque de código de una publicación, lo tomas todo)
  5. Proporcione una breve descripción de lo que hace el código para las personas que no tienen intimidad con el idioma que está utilizando.
  6. ¡Concurso de popularidad, por lo que gana la mayoría de los votos!

Ejemplo aburrido de cinco minutos (Python 3)

Descripción : Lee un montón de archivos de registro del directorio actual y aleatoriza las líneas en ellos (emocionante, ¿verdad? Esto ganaría totalmente un concurso de popularidad)

Fuente

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)

Modificaciones Legales

  • Renombrado fnamea filedesde el enlace 1
  • Renombrado ba contentdesde el enlace 2

Atribuciones

  1. /programming//a/3277516/1435657
  2. /programming//a/16737991/1435657
  3. /programming//a/4918520/1435657
asteri
fuente
8
Realmente me gusta la idea, pero creo que esta pregunta se beneficiaría enormemente al limitar el alcance a una tarea en particular. Eso a) inspiraría más creatividad porque no puedes simplemente copiar cualquier cosa yb) dejaría abierta la posibilidad de reutilizar este tipo de pregunta (interesante) más adelante en un contexto diferente. Si lo dejas como "haz lo que quieras", todas las preguntas adicionales como esta serán duplicadas. Tal como está, me temo que tengo que votar a puerta cerrada como "demasiado amplio" porque torpedea posibles preguntas futuras interesantes.
Martin Ender
2
Debo agregar, no, no quiero que esto se convierta en el próximo código de trolling, donde todos publican un "Agregar dos números", "Dividir esta cadena", con una etiqueta de "codificación de cinta adhesiva". Creo que podemos manejar esto de manera más creativa que eso. Solo me gustaría dejar espacio para otras interpretaciones de este tipo de competencia de fuente restringida.
Martin Ender
1
@ m.buettner Tampoco estoy seguro de que CodeGolf.SE se beneficie necesariamente de muchas preguntas como esta, por las mismas razones que mencionas: ¿por qué "dividir una cadena usando el código SO", "obtener un número aleatorio de 1- 100 utilizando el código SO ", y así sucesivamente? Pero esa es solo mi opinión. Estoy lejos de ser un CodeGolf.SE pro. :)
asteri
3
Voy a eliminar la etiqueta personalizada aleatoria por ahora porque no se ha establecido su necesidad (y es muy probable que sea innecesaria y no agregue ningún valor).
asteri
1
Estoy de acuerdo en que debemos tener cuidado al inundar PPCG con preguntas como esta, solo porque es divertido y novedoso. Pero creo que podrían surgir algunas preguntas realmente diferentes ... como una basada en matemáticas, una basada en gráficos, una que utiliza la puntuación de código de golf y un desafío políglota tal vez. Por lo tanto, preferiría que el alcance sea limitado. En términos de personas que simplemente copian el desafío sin nada sustancial, creo que es el deber de la comunidad ser un poco más estricto en "cerrar como duplicado" cuando se trata de nuevos tipos de desafíos.
Martin Ender

Respuestas:

8

C - una calculadora de operación

Tengamos esto para empezar.
En realidad, es bastante difícil encontrar piezas de programas en C que no sean programas completos. Tuve más problemas con las declaraciones.

// 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
}

Toma una operación integral simple como 3+151o 41/2en stdin y genera el resultado en stdout.

mniip
fuente
1
Reutilización interesante del mismo bloque de código y cambio de nombre de la variable dos veces. ¡Ni siquiera pensé en eso! +1
asteri