Скотч может починить что угодно [закрыто]

13

обзор

Эта проблема была вдохновлена этим постом StackOverflow Meta . В нем @hakre говорит:

Я видел проект, действительно написанный Stackoverflow (нуб копирует вместе с SO здесь и SO там), атрибуция обычно никогда не выполняется, что приводит к прекращению прав в рамках CC. (так в оригинале)

Ваша миссия состоит в том, чтобы сделать самую интересную программу, которую вы можете - без написания ни одной строки кода. Вы можете использовать только тот код, который уже написан для вас, как в вопросах, так и в ответах от StackOverflow. Все, что вы можете сделать, это приклеить все это вместе как можно лучше. И, конечно же, очень важно, чтобы мы предоставили соответствующую атрибуцию, чтобы мы не потеряли свои права.


правила

  1. Вы должны включить ссылки на вопросы / ответы, которые вы использовали в своем ответе.
  2. Вы не можете изменять найденный код, за исключением следующих случаев:

    а. Вы можете переименовывать переменные, функции и методы. (Это не означает, что вы можете изменить вызов метода , изменив, скажем, scanner.nextInt()наscanner.nextLine() и утверждая , что вы изменяете имя метода. Изменение должно быть в определении или ссылки на тот же объект.)

    б. Вы можете отрегулировать отступ соответствующим образом.

    с. Вы можете предположить, что для работы фрагментов кода загружены соответствующие модули. (например, importоператоры для Java и Python, usingоператоры для C # и C ++ и их эквиваленты на всех языках). Если во фрагменте кода содержатся imports для вас, вы можете переместить их в начало кода.

    д. Если язык требует, чтобы код был в каком-либо теле метода для выполнения (например, public static void main(String[] args)для Java, static int Main(string[] args)для C # и т. Д.), Вы можете заключить код в соответствующий метод. Но содержание этого основного метода должно оставаться неизменным.

  3. Вы должны предоставить явный список всех выполненных переименований переменных / методов / функций / классов.

  4. Вы не можете брать фрагменты фрагментов (то есть, если вы берете блок кода из сообщения, вы берете все это)
  5. Предоставьте краткое описание того, что код делает для людей, которые не знакомы с языком, который вы используете.
  6. Конкурс популярности, поэтому большинство голосов победителей!

Скучный пятиминутный пример (Python 3)

Описание : читает несколько файлов журнала из текущего каталога и рандомизирует строки в них (интересно, правда? Это полностью выиграет конкурс популярности)

Источник

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)

Правовые изменения

  • Переименован fnameпо fileссылке 1
  • Переименован bпо contentссылке 2

Атрибуции

  1. /programming//a/3277516/1435657
  2. /programming//a/16737991/1435657
  3. /programming//a/4918520/1435657
Asteri
источник
8
Мне действительно нравится эта идея, но я думаю, что этот вопрос был бы чрезвычайно полезен, если ограничить рамки конкретной задачей. Это а) вдохновит на творческий подход, потому что вы не сможете просто скопировать что-либо вместе, и б) оставит открытой возможность повторного использования этого (интересного) вопроса в другом контексте. Если вы просто оставите это как «делай, что хочешь», все последующие вопросы, подобные этому, будут дубликатами. Я боюсь, что сейчас, я должен закрыть голосование как «слишком широкое», потому что это торпедирует, возможно, интересные будущие вопросы.
Мартин Эндер
2
Я должен добавить, нет, я не хочу, чтобы это стало следующим кодовым троллингом, где все публикуют «Добавить две цифры», «Разделить эту строку», с тегом «duct-tape-coding». Я думаю, что мы можем справиться с этим более творчески, чем это. Я просто хотел бы оставить место для других интерпретаций такого рода соревнований с ограниченными исходными текстами.
Мартин Эндер
1
@ m.buettner Я также не уверен, что CodeGolf.SE обязательно выиграет от множества подобных вопросов по тем же причинам, которые вы упомянули: почему «разбили строку с помощью SO-кода», «получим случайное число от 1 до 100 с использованием SO кода "и так далее? Но это только мое мнение. Я далеко не профессионал CodeGolf.SE. :)
Астери
3
Я собираюсь удалить случайный пользовательский тег на данный момент, потому что необходимость в нем не была установлена ​​(и он, скорее всего, будет ненужным и не будет иметь никакого значения).
Астери
1
Я согласен, что мы должны быть осторожны с наводнением PPCG такими вопросами, просто потому что это весело и ново. Но я думаю, что некоторые действительно разные вопросы могут возникнуть из-за этого ... например, математика, графика, вопрос, который использует скоринг кода и, возможно, вызов полиглота. Следовательно, я бы предпочел, чтобы область была ограничена. С точки зрения людей, просто копирующих вызов без каких-либо существенных вещей, я считаю, что долг сообщества - быть немного строже в том, чтобы «закрывать как дубликаты», когда речь идет о новых типах вызовов.
Мартин Эндер

Ответы:

8

C - калькулятор одной операции

Давайте начнем с этого.
На самом деле довольно сложно найти части программ на С, которые не являются целыми программами. У меня были большие проблемы с декларациями.

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

Принимает простую интегральную операцию, такую ​​как 3+151или 41/2на стандартном вводе, и выводит результат на стандартный вывод.

МНИИП
источник
1
Интересное повторное использование одного и того же блока кода и переименование переменной дважды. Я даже не думал об этом! +1
астери