덕트 테이프는 무엇이든 고정 할 수 있습니다.


13

개요

이 과제는 이 StackOverflow 메타 게시물 에서 영감을 얻었 습니다 . @hakre는 다음과 같이 말합니다.

나는 실제로 Stackoverflow에 의해 작성된 프로젝트를 보았습니다 (여기서 SO와 SO에서 함께 멍청한 사본이 있습니다). 귀속은 일반적으로 수행되지 않으므로 CC에 따라 권리가 종료됩니다. (sic)

당신의 임무는 한 줄의 코드를 작성하지 않고도 가능한 가장 재미있는 프로그램을 만드는 것입니다. StackOverflow의 질문과 답변 모두에서 이미 작성된 코드 만 사용할 수 있습니다. 덕트 테이프 만 있으면 가능한 한 최선을 다할 수 있습니다. 물론 권리가 종료되지 않도록 적절한 속성을 제공하는 것이 매우 중요합니다.


규칙

  1. 답변에 사용한 질문 / 답변에 대한 링크를 포함해야합니다.
  2. 당신은 하지 않을 수 있습니다 다음과 같은 예외를 제외하고 찾을 코드를 수정 :

    ㅏ. 변수, 함수 및 메소드의 이름을 바꿀 수 있습니다. (이것은 당신이 메소드 변경할 수 있습니다 의미하지 않는다 호출을 말한다 변경하여, scanner.nextInt()scanner.nextLine()당신이 메서드 이름을 변경하고 있다는 주장. 변화는 동일한 개체에 대한 정의 또는 참조에 있어야합니다.)

    비. 들여 쓰기를 적절히 조정할 수 있습니다.

    씨. 코드 스 니펫이 작동하기 위해 적절한 모듈이로드되었다고 가정 할 수 있습니다. (예 : importJava 및 Python에 using대한 명령문, C # 및 C ++에 대한 명령문 및 모든 언어에서 동등한 것) 코드 스 니펫에 imports가 포함 된 경우 코드 상단으로 이동할 수 있습니다.

    디. 언어에서 코드가 어떤 종류의 메소드 본문에 있어야 실행되는 경우 (예 : 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에서 이름이 변경 fname되었습니다.file
  • 링크 2에서 이름이 변경 b되었습니다.content

기여

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

8
아이디어가 정말 마음에 들지만이 질문이 범위를 특정 작업으로 제한하면 큰 도움이 될 것입니다. 그것은 a) 당신이 무엇이든 함께 복사 할 수 없기 때문에 더 많은 창의성을 고무시킬 것입니다. "원하는대로 수행"으로 남겨두면 이와 같은 추가 질문은 모두 중복됩니다. 나는 그것이 의미하는 것처럼 두렵다. 나는 그것이 흥미로운 미래의 질문을 어뢰 할 수 있기 때문에 "너무 넓다"는 투표를해야한다.
마틴 엔더

2
나는 이것이 다음 코드 트롤링이되기를 원하지 않는다. 모든 사람들이 "덕 테이프 코딩"태그를 사용하여 "두 문자열 추가", "이 문자열 분리"를 게시한다. 우리는 이보다 더 창의적으로 처리 할 수 ​​있다고 생각합니다. 나는 이런 종류의 제한적인 소스 경쟁에 대한 다른 해석의 여지를 남겨두고 싶다.
마틴 엔더

1
@ m.buettner 또한 CodeGolf.SE가 반드시 이와 같은 많은 질문에서 이점을 얻을 것이라고 확신하지 못합니다. 동일한 이유에서 언급 한 것과 같은 이유입니다. "SO 코드를 사용하여 100 등"? 하지만 그건 내 의견 일뿐입니다. CodeGolf.SE 전문가와는 거리가 멀습니다. :)
asteri

3
나는 임의의 사용자 정의 태그를 제거 할 필요가 있기 때문에 지금은 필요하지 않습니다 (그리고 아마도 불필요하고 가치를 추가하지 않을 것입니다).
asteri

1
PPCG가 재미 있고 참신하기 때문에 이와 같은 질문으로 PPCG를 범람시키는 데주의를 기울여야한다는 데 동의합니다. 그러나 저는 수학-골프, 그래픽-골프, 코드-골프 스코어링 및 폴리 글 로트 챌린지를 사용하는 것과 같은 몇 가지 진정으로 다른 질문이 나올 수 있다고 생각합니다. 따라서 범위를 제한하는 것이 좋습니다. 실질적인 것없이 도전을 복사하는 사람들의 관점에서 볼 때, 새로운 도전 유형에 대해서는 "중복으로 폐쇄"하는 것이 커뮤니티의 의무라고 생각합니다.
Martin Ender

답변:


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+151하거나 41/2결과를 표준 출력에 출력이 stdin.


1
동일한 코드 블록을 재사용하고 변수 이름을 두 번 바꾸는 데 흥미가 있습니다. 나는 그것을 생각하지 않았다! +1
asteri
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.