ダクトテープは何でも修正できます[非公開]


13

概要

この挑戦は、このStackOverflow Meta投稿に触発されました。その中で、@ hakreは言います:

Stackoverflowによって実際に書かれたプロジェクトを見たことがあります(noobはSOからSOにコピーします)。(原文)

あなたの使命は、できる限り興味深いプログラムを作成することです。コードを1行も書くことはありません。StackOverflowからの質問と回答の両方で、既に作成されたコードのみを使用できます。できることは、ダクトテープでテープを貼ることだけです。そしてもちろん、権利が停止されないように適切な帰属を提供することは非常に重要です。


ルール

  1. 回答で使用した質問/回答へのリンクを含める必要があります。
  2. 次の例外を除き、見つけたコードを変更することはできません

    a。変数、関数、およびメソッドの名前を変更できます。(これは、メソッド名を変更している、と言って主張することにより、メソッド呼び出しを変更できるという意味ではありません。変更は、同じエンティティーの定義または参照にある必要があります。)scanner.nextInt()scanner.nextLine()

    b。インデントを適切に調整できます。

    c。コードスニペットが機能するために適切なモジュールがロードされていると想定できます。(たとえば、importJavaとPythonのusingステートメント、C#とC ++のステートメント、およびすべての言語の同等のもの)コードスニペットにimportsが含まれている場合、それらをコードの先頭に移動できます。

    d。言語が実行するために何らかの種類のメソッド本体にあるコードを必要とする場合(たとえば、public static void main(String[] args)Java、static int Main(string[] args)C#など)、適切なメソッドでコードをラップできます。ただし、そのメインメソッドの内容は変更しないでください。

  3. 実行された変数/メソッド/関数/クラスの名前変更の明示的なリストを提供する必要があります。

  4. スニペットのスニペットを取得することはできません(つまり、投稿からコードブロックを取得する場合は、すべてを取得します)
  5. 使用している言語に馴染みのない人のためにコードが何をするかについて簡単に説明してください。
  6. 人気コンテストなので、最も多くの賛成が勝ちます!

退屈な5分間の例(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れました
  • 改名bcontentリンクから2

帰属

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

8
私はこのアイデアは本当に好きですが、この質問は特定のタスクに範囲を制限することで非常に有益になると思います。それは、a)何かを一緒にコピーすることはできないため、より創造性を刺激し、b)この(興味深い)タイプの質問を後で別のコンテキストで再利用する可能性を残します。「やりたいことを何でもする」とそのままにしておくと、このような質問はすべて重複します。私はそれが現状のままであるのではないかと心配しています。将来の興味深い質問を魚雷で攻撃する可能性があるため、「広すぎる」と投票する必要があります。
マーティンエンダー

2
私はこれを次のコードトローリングにしたくないと付け加えます。誰もが「duct-tape-coding」タグで「2つの数字を追加」、「この文字列を分割」を投稿します。これよりもクリエイティブに対処できると思います。この種のソースが制限された競合についての他の解釈の余地を残したいと思います。
マーティンエンダー

1
@ m.buettnerまた、あなたが言及する同じ理由で、CodeGolf.SEがこのような多くの質問から必ず恩恵を受けるかどうかもわかりません。なぜ「SOコードを使用して文字列を分割する」、「 SOコードを使用して100」など。しかし、それは私の意見です。CodeGolf.SEのプロとは程遠い。:)
アステリー

3
ランダムカスタムタグの必要性が確立されていないので、ランダムなカスタムタグを削除します(そして、それはおそらく不要であり、値を追加しません)。
アステリー

1
私は、楽しくて斬新だからといって、このような質問でPPCGをあふれさせることに注意する必要があることに同意します。しかし、数学ベース、グラフィックベース、コードゴルフスコアリングと多言語チャレンジを使用するような、数学に関するまったく異なる質問がいくつかあると思います。したがって、範囲を制限することを希望します。実質的に何もせずにチャレンジをコピーするだけの人々の観点では、新しいチャレンジタイプに関しては、「複製として閉じる」ことを少し厳しくすることがコミュニティの義務だと思います。
マーティンエンダー

回答:


8

C-1つの操作計算機

これを始めましょう。
実際には、プログラム全体ではない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/2stdinのような単純な積分演算を行い、結果をstdoutに出力します。


1
同じコードブロックの興味深い再利用と変数の名前の変更を2回。私もそれを考えていませんでした!+1
アステリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.