胶带可以固定任何东西


13

总览

此挑战的灵感源于此StackOverflow Meta帖子。在其中,@ hakre说:

我看过一个真正由Stackoverflow编写的项目(一个菜鸟从这里SO和那里SO一起复制),通常不会完成归因,这会导致CC下的权利终止。(原文如此)

您的任务是制作最有趣的程序,而无需编写任何代码。在StackOverflow的问题和答案中,您只能使用已经为您编写的代码。您所能做的就是用胶带尽力而为。当然,我们必须提供适当的归属,以免权利被终止,这一点非常重要。


规则

  1. 您必须包含指向您在答案中使用的问题/答案的链接。
  2. 不能修改找到的代码,但以下情况除外:

    一种。您可以重命名变量,函数和方法。(这并不意味着你可以改变一个方法调用,通过改变,说scanner.nextInt()scanner.nextLine()和声称您更改的方法名。改变必须在定义或引用同一实体。)

    b。您可以适当地调整缩进。

    C。您可以假定已加载适当的模块以使代码段正常工作。(例如,import用于Java和Python的using语句,用于C#和C ++的语句以及所有语言的等效项)如果代码段中包含imports,则可以将其移至代码顶部。

    d。如果语言要求代码在某种方法体内执行(例如,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)

法律修改

  • 从链接1 重命名fnamefile
  • 从链接2 重命名bcontent

归因

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

8
我真的很喜欢这个主意,但是我认为,将问题限制在特定任务范围内将极大地受益于此问题。这将a)激发更多的创造力,因为您不能将任何东西都复制在一起; b)以后可能会在不同的上下文中重用这种(有趣的)类型的问题。如果您只是将其保留为“做任何您想做的事”,那么所有类似的其他问题将重复出现。就目前的情况而言,我恐怕不得不投票“太宽泛”,因为它鱼雷打乱了未来可能有趣的问题。
马丁·恩德

2
我应该添加,不,我不想让它成为下一个代码拖曳,每个人都在其中发布带有“ duct-tape-coding”标签的“添加两个数字”,“拆分此字符串”。我认为我们可以比此方法更具创造性。我只想为这种限制来源竞争的其他解释留出一些空间。
马丁·恩德

1
@ m.buettner我也不确定CodeGolf.SE是否一定会从诸如此类的许多问题中受益,原因与您提到的原因相同:为什么要“使用SO代码分割字符串”,“从1-获取随机数” 100使用SO代码”,依此类推?但那只是我的个人意见。我离CodeGolf.SE专业人士还很远。:)
asteri 2014年

3
我现在要删除随机自定义标签,因为尚未建立对它的需要(而且很有可能是不必要的,并且不添加任何值)。
asteri 2014年

1
我同意我们需要谨慎地向PPCG注入诸如此类的问题,因为它既有趣又新颖。但是我认为可能会有一些真正不同的问题……例如基于数学的,基于图形的问题,可能使用代码高尔夫评分和多语言挑战的问题。因此,我希望范围受到限制。对于只复制挑战而又没有实质性要求的人们而言,我认为社区的责任是在涉及新挑战类型时“更严格地封闭”。
马丁·恩德2014年

Answers:


8

C-一个运算计算器

让我们开始吧。
实际上,很难找到不是整个程序的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+15141/2在stdin和输出的结果到stdout。


1
有趣的是重复使用同一代码块并将变量重命名两次。我什至没有想到这一点!+1
asteri
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.