A fita adesiva pode consertar qualquer coisa [fechada]


13

Visão geral

Esse desafio foi inspirado neste post do StackOverflow Meta . Nele, @hakre diz:

Eu vi um projeto realmente escrito por Stackoverflow (um noob copia juntos do SO aqui e do SO), a atribuição normalmente nunca é feita, o que resulta na rescisão de direitos no CC. (sic)

Sua missão é criar o programa mais interessante possível - sem nunca escrever uma única linha de código. Você pode usar apenas o código que já está escrito para você, tanto nas perguntas como nas respostas do StackOverflow. Tudo o que você pode fazer é unir tudo da melhor maneira possível. E, é claro, é muito importante que forneçamos a atribuição apropriada para não rescindir nossos direitos.


Regras

  1. Você deve incluir links para as perguntas / respostas usadas na sua resposta.
  2. Você não pode modificar o código encontrado, com as seguintes exceções:

    uma. Você pode renomear variáveis, funções e métodos. (Isso não significa que você pode mudar um método de invocação , mudando, diz scanner.nextInt()a scanner.nextLine()e afirmando que você está mudando um nome de método. A mudança deve ser na definição ou referência à mesma entidade.)

    b. Você pode ajustar o recuo adequadamente.

    c. Você pode assumir que os módulos apropriados foram carregados para que os trechos de código funcionem. (por exemplo, importinstruções para Java e Python, usinginstruções para C # e C ++ e seus equivalentes em todas as linguagens) Se o trecho de código incluir os imports para você, você poderá movê-los para o topo do código.

    d. Se a linguagem exigir que o código esteja em algum tipo de corpo de método a ser executado (por exemplo, public static void main(String[] args)para Java, static int Main(string[] args)C # e assim por diante), você poderá agrupar seu código no método apropriado. Mas o conteúdo desse método principal deve permanecer inalterado.

  3. Você deve fornecer uma lista explícita de qualquer renomeação de variável / método / função / classe executada.

  4. Você não pode pegar trechos de trechos (ou seja, se você pega um bloco de código de uma postagem, pega tudo)
  5. Forneça uma breve descrição do que o código faz para pessoas que não têm intimidade com o idioma que você está usando.
  6. Concurso de popularidade, para que os mais votados ganhem!

Exemplo chato de cinco minutos (Python 3)

Descrição : lê vários arquivos de log do diretório atual e seleciona aleatoriamente as linhas neles (empolgante, certo? Isso venceria totalmente um concurso de popularidade)

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)

Modificações legais

  • Renomeado fnamepara filedo link 1
  • Renomeado bpara contentdo link 2

Atribuições

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

8
Gosto muito da ideia, mas acho que essa pergunta se beneficiaria imensamente de limitar o escopo a uma tarefa específica. Isso a) inspiraria mais criatividade, porque você não pode simplesmente copiar nada juntos eb) deixaria aberta a possibilidade de reutilizar esse tipo (interessante) de pergunta posteriormente em um contexto diferente. Se você deixar como "faça o que quiser", todas as outras perguntas como essa serão duplicadas. Receio que exista, tenho que votar de perto como "muito amplo" porque torpede possivelmente questões futuras interessantes.
Martin Ender

2
Devo acrescentar que não, não quero que isso se torne o próximo trolling de código, onde todos publicam uma mensagem "Adicionar dois números", "Dividir esta sequência", com uma tag "codificação em fita adesiva". Acho que podemos lidar com isso de forma mais criativa do que isso. Gostaria apenas de deixar espaço para outras interpretações desse tipo de competição de fonte restrita.
Martin Ender

1
@ m.buettner Também não tenho certeza de que o CodeGolf.SE necessariamente se beneficie de muitas perguntas como esta, pelas mesmas razões que você menciona: por que "dividir uma string usando o código SO", "obter um número aleatório de 1 a 1" 100 usando o código SO "e assim por diante? Mas essa é apenas a minha opinião. Estou longe de ser um profissional do CodeGolf.SE. :)
Asteri

3
Por enquanto, removerei a tag personalizada aleatória porque a necessidade dela não foi estabelecida (e provavelmente será desnecessária e não agregará valor).
asteri

1
Concordo que precisamos ter cuidado ao inundar o PPCG com perguntas como essa, apenas porque é divertido e inovador. Mas acho que algumas questões genuinamente diferentes podem surgir disso ... como uma baseada em matemática, outra baseada em gráficos, que usa pontuação de código de golfe e talvez um desafio poliglota. Por isso, prefiro que o escopo seja limitado. Em termos de pessoas apenas copiando o desafio sem nada substancial, acho que é dever da comunidade ser um pouco mais rigoroso em "fechar como duplicado" quando se trata de novos tipos de desafio.
Martin Ender

Respostas:


8

C - uma calculadora de operação

Vamos ter isso para começar.
Na verdade, é bastante difícil encontrar programas C que não sejam programas inteiros. Eu tive mais problemas com declarações.

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

Executa uma operação integral simples como 3+151ou 41/2no stdin e gera o resultado no stdout.


1
Reutilização interessante do mesmo bloco de código e renomeação da variável duas vezes. Eu nem pensei nisso! +1
asteri
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.