몇 가지 표준을 어기십시오! [닫은]


14

모든 사람들은 "규칙이 깨졌습니다!"라는 문구를 알고 있으므로 다음과 같이하십시오.

표준을 위반하는 언어로 코드를 작성하십시오. 이것은 (라우터 핑에 USB 케이블 아래 240 개 볼트 퍼팅에서 아무것도 할 수 없습니다 것부터 10mb 패킷으로 다른 사람의 웹 사이트는 )하는 것까지 가능합니다! (아이디어를 얻지 마십시오.이 두 가지 모두 아마도 모든 종류의 운명을 초래할 것입니다!)

10 일 후 가장 많이 답한 답변 (즉, 가장 심각한 위반)이 이길 것입니다!

규칙 :

  1. 코드를 설명해야합니다.
  2. 깨고있는 표준은 연결되어 있어야하며, 깨 뜨리려면 무엇을하고 있는지 설명해야합니다 (1을 의미). 그렇지 않으면 답변이 수락되지 않습니다.
  3. 인터프리터가 충돌하거나 작동을 멈추게하는 답변은 받아 들여지지 않습니다. 𐒢IDLE에 붙여 넣는 것뿐만 아니라 창의적인 답변을 원합니다 (충돌)
  4. 악용 버그는 표준을 위반하지 않는 한 허용되지 않습니다. 그렇지 않으면 답변이 수락되지 않습니다

시작하고 재미있게 보내십시오!


18
이 사이트에 대한 대부분의 답변 은 적어도 하나의 코딩 표준을 위반 합니다 ...
Comintern

2
이것은 나에게는 독창적이지 않지만 ... 애니메이션 JPEG!
Kendall Frey

이봐, 너 맞아 𐒢
TheDoctor

4
학생들은 코드를 작성할 때 QA 표준을 위반하는 경향이 있습니다. 그들은 이길 자격이있다!
Max Ried

1
"Java에서 GOTO를 구현하는 방법"에서 영감을 얻을 수 있습니다 : stackoverflow.com/questions/2430782/…
Abulafia

답변:


68

파이썬

print 'Hello World'

설명:

프로그래밍 퍼즐 및 코드 골프 스택 교환의 표준 이다

질문을주의 깊게 읽으십시오. 구체적으로, 질문이 무엇입니까? 귀하의 답변이 다음을 제공하는지 확인하십시오


이 코드는 질문에 대답하지 않으므로 표준을 위반합니다.


1
또는 파이썬 2의 표준을 깨기 위해print("hello world")
TheDoctor

10
@TheDoctor하지만 파이썬 표준을 어기면, 나는 codegolf.SE 표준 깰 수 없습니다
user12205

18
그러나이 질문이이 질문에 대한 표준을 어 기고 설명한다면 표준을 어기는 것은 아닙니다 . 그러나 그것은 유효하지 않으며 파이썬 표준을 깨뜨려야합니다. 역설 – 그것은 현실의 기준을 깨뜨립니다!
kojiro

2
이것은 인기 콘테스트이므로, 가장 많은 표를 얻은이 믿을 수 없을만큼 창의적인 답변을 찾아야합니다! 아무 것도 깨지거나 다시 시작하지는 않지만 :(. 그러나 좋은 대답. 잘 했음 :)
George

5
이것은 정답이 아니기 때문에 정답입니다.
primo

24

C
여기에 우분투 12.04에서 gcc4.6.3을 사용하여 컴파일하고 성공적으로 실행하는 팩토리얼 프로그램이 있지만 C 표준 에 따라 정의 할 수없는 많은 동작을 호출합니다 . 대부분 여기 에서 영감을 얻었습니다 . 나머지 법적 코드는 많이 나쁘다.

int read(char** src, int into){
  int _r;                             //leading underscores reserved, and
  if (!--into) sscanf(*src,"%d",&into); //_r uninitalized
  *(*(--src)+into)=_r>>360;            //shifting more bits than we have
  while (into-->0) (*src)[into]='.'; //modifying const char argv
  printf(*src); // no return statement
}

main(int argc, const char** const argv){
  union  { int x; float y;} result;
  int f,minus1=0xFFFFFFFF,r,a[]={0};
  r=a[3]&2;                     //accessing past end of array
  result.x=read(&argv[r],--r);  //relying on order of arguments
  for(f=*(int*)&result.y;f;f+=minus1) //type punning/invalid union access,
    r*=f;                            //and unsigned overflow
  printf("%d\n",(&r+2)[-2]); //negative array indexes
}

1
포인터가 배열의 시작을 가리 키지 않으면 음수 인덱스는 완벽하게 유효합니다. 도대체 다른 방법 대신 배열로 숫자를 색인화하는 것이 합법적입니다.
user2357112는 Monica

17

XHTML

<p>
   <div></div>
</p>

W3C 사양 ( http://www.w3.org/TR/html-markup/p.html#p ) :

p – 단락

p 요소는 단락을 나타냅니다.

허용 된 내용

문구 구하기

오 더럽다!

편집 : @xfix 는 내가 표시하는 오류가 실제로 XHTML 임을 지적했습니다. 이로 인해 발생하는 HTML 오류는 더 시원하고 덜 명확합니다.

<p><div></div><p>원인 자체가 닫히기 <p /><div></div></p>때문에 됩니다 . 존재하지 않는 단락을 닫으려고하므로 오류가 발생합니다.<div><p>


여기서는 문제가되지 않습니다. 실제 문제는 </p>태그가 <div>자동으로 닫히 므로 닫지 않고 존재 한다는 것 <p>입니다.
Konrad Borowski

@xfix이 동작이 정의 된 사양에 대한 참조가 있습니까? W3 유효성 검사기는 예상되는 오류 로이 문제를 막을 것입니다 .HTML 자체가 아닌 브라우저 구현을 설명하고 있다고 생각합니다.
George Reith

1
XHTML을 생각하고있을 것입니다. HTML4 및 HTML5에서 <p>특정 태그로 닫힙니다. HTML4 유효성 검사기의 경우 "열리지 않은"P "요소의 끝 태그"가 표시됩니다.
콘라드 보로프스키

@xfix 맞아! 나중에 편집하겠습니다. 건배
조지 Reith

일반적인 Java 개발자 HTML을 본 적이 없거나 깨진 표준을 많이 나열하고 싶지 않습니까?
Erik Reppen

12

HTTP / 1.1 : 응답-상태 코드 및 이유 문구

Status-Code 요소는 3 자리 숫자입니다.

더 나아갈 필요가 있습니까? 이 상태 코드는 표준에 정의 된 코드 중 하나가 아닙니다. 필수 범주 숫자 중 하나로 시작하지도 않습니다. 길이는 3 자리가 아닙니다.

브라우저가 여전히 페이지를 잘로드합니다.

또한이 답변은이 사이트의 "표준"중 하나를 위반합니다. :)

출력 (상태 라인) :

HTTP/1.1 0 :)
var http = require("http");
var server = http.createServer(onHttpRequest);
server.listen(80);

function onHttpRequest(request, response)
{
    response.writeHead(0, ":)", { "Content-Type": "text/plain" });
    response.write("Hello, World!");
    response.end();
}

자바 스크립트 (노드)


1
호기심으로 4 자리 상태 코드를 사용해 보셨습니까? 다섯 자리?
MatrixFrog

@MatrixFrog 나는 4 자리 코드를 시도했다. 브라우저는 괜찮 았습니다. 더 많은 표준을 위반하기 때문에 0으로갔습니다.
Kendall Frey

12

방금 몇 가지 표준을 어겼습니까?

나는 정말로 끔찍한 프로그래밍을했다.

PHP

a: goto lol; begin();
b: 
c: echo j; goto h;
d: echo u;
e: echo s;
f: echo t;
g: 
h: echo k; goto o;
i: echo i; goto c;
j: echo l;
k: echo l;
l: echo e;
m: echo d;
n:
o: echo s;
p: echo t; goto u;
q: echo a; goto z;
r: echo n;
s: echo d;
t: echo a;
u: echo r; goto q;
v: echo D; goto i;
w: echo s;
x: 
y:
z: die("!");
lol: goto v;

부활절 달걀 :echo 세로로 읽으면 에드 문자는 읽을 것이다 just killed standarDs!.

참고 : 이 프로그램을 실행하면 gotos 를 정말 좋아하는 사람의 이름이 출력됩니다 .


1
당신이 즉시 그것을 말하면, 그것은 "
동부

9

C #-유니 코드 깨기

문자열을 뒤집는 간단한 알고리즘 :

public string Reverse(string s)
{
    StringBuilder builder = new StringBuilder();
    for (int i = s.Length - 1; i >= 0; i--)
    {
        builder.Append(s[i]);
    }
    return builder.ToString();
}

이는 서로 게이트 쌍을 올바르게 유지하지 않아 유효하지 않은 문자열을 생성하므로 유니 코드 표준을 깨뜨립니다. .NET 및 기타 여러 플랫폼 / 프로그래밍 언어에서 a char는 실제로 문자가 아니라 UTF-16 코드 단위입니다.

주의 : 그것은 또한 어떤 문자가 의도되거나 또는 의도되지 않을 수있는 후속 결합 마크 (예를 들어 분음 부호)와 결합되는지를 변경합니다.


8

자바 스크립트

이 페이지의 콘솔에서 실행하십시오.

var items = [], p = 1, finish = false, intr = setInterval(function() {
    if (p >= 10) finish = true
    $.get(unescape(escape('http://api.stackexchange.com/2.2/answers?page=' + (p++) + '&pagesize=100&order=desc&sort=votes&site=codegolf&filter=!*LVwAFZ.YnaK-KS*')), function(x) {
        items = items.concat(x.items)
        if (finish) {
            clearInterval(intr)
            onFinish()
        }
    })
}, 500)

function onFinish() {
    var item = items[Math.floor(Math.random() * items.length)]
    document.write(item.body)
}

에서 영감을 받다

이 사이트에 대한 대부분의 답변은 최소한 하나의 코딩 표준을 위반합니다 ... – Comintern 1 시간 전

그것이하는 일은 codegolf.SE에서 투표 한 상위 1000 가지 중에서 무작위 답변을 출력 하는 것입니다 (즉, 매우 메타적인 방식으로 문제를 해결하십시오!).


불행히도 출력 은 표준이 깨진 코드 이므로 기술적으로 규칙을 충족시키지 못 document.write하므로이 코드에서 표준을 위반했습니다-사용했습니다 (ewwww). 또한 링크를 제공해야합니다. 여기에서 document.write가 "나쁜 습관"으로 간주되는 이유는 무엇입니까?

만약 그것이 "표준을 어기는 것"으로 간주되지 않는다면 unescape(escape()), MDN에 따라 줄을 줄입니다. .

규칙을 피하기 위해이 모든 것을 실제로하고 있으며이 답변의 주요 요점은 출력입니다.


샘플 실행 (이미지를 클릭하면 확대) :

screenshot


또한 var표준에 더 부합하도록 진술을 제거해야합니다 .
Scimonster

6

XML

나의 "발명"이 아니라, 나는 우리가 매우 비밀스러운 곳에서 얻을 수있는 XML과 같이 실제로 작업해야한다 :

<?xml version="1.0"?>
<!DOCTYPE data [
  <!ELEMENT data (field2)>
  <!ELEMENT field2 (#PCDATA)>
]>
<data>
  <field1>Rock & Roll</field1>
</data>
<data>
  <field1>Something else</field1>
</data>

자체 내장 DTD에 대해 유효성을 검사하지 않으며 여러 개의 루트와 이스케이프 처리되지 않은 앰퍼샌드를 포함합니다. (여기에는 더 높은 수준의 오류, 모호한 콘텐츠 모델 등이 있지만 여기서는 설명하지 않습니다.) 매우 슬프다.


비밀 장소는 무엇입니까? 훌륭한 프로그래밍이 진행되는 것처럼 들립니다! ;)
George

일급 비밀 FBI 코드입니까?

헝가리어 물건 아마 :)
masterX244 1

6

네트 마스크를 비 연속적인 비트 마스크로 설정하는 것은 허용되었지만 RFC 950에서는 권장하지 않았지만 이제는 RFC 1219에서 금지되어 있습니다. 그럼에도 불구하고 BSD와 같은 방식으로이를 수행 할 수 있습니다.

IPv4 넷 마스크는 IP 주소와 마찬가지로 4 바이트의 조합입니다. 알려진 IP 주소와 넷 마스크를 가진 두 개의 호스트가 동일한 네트워크에있는 경우 계산하는 데 사용됩니다. 일반적으로 IP 주소는 네트워크와 호스트 부분의 두 부분으로 구성됩니다. 집에있는 네트워크가 192.168.1.1- 라고 가정 해보십시오 192.168.1.254. 호스트 부분은 IP의 처음 3 바이트입니다.192.168.1.x 입니다. 이는 넷 마스크가 255.255.255.0임을 의미하며, 처음 24 비트는 네트워크 부분입니다. 바이너리에서 마스크는 다음과 같습니다 11111111.11111111.11111111.00000000. 1 비트는 연속적입니다. 이 예에서 넷 마스크는입니다 00010111.00000000.00000000.00101010. 넷 마스크가 비 연속적이라면 어떻게 될까요? 호스트 부분은 오른쪽 끝에있는 대신 전체 IP 주소에 흩어져 있으므로 여기에서 설명하는 것처럼 실제로 읽기가 어렵습니다.

이 후에는 아무것도 작동하지 않을 것입니다!

root@Gotthold /v/root# ifconfig en0 inet 47.11.23.42 netmask 23.0.0.42
root@Gotthold /v/root# ifconfig en0 inet
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 8192
    options=b<RXCSUM,TXCSUM,VLAN_HWTAGGING>
    inet 47.11.23.42 netmask 0x1700002a broadcast 239.255.255.255

근사하지만 비 연속적인 비트 마스크는 무엇입니까? Google은 나에게 의미있는 것을 반환하지 않습니다. (죄송합니다!)
George

일부 explantions를 추가했을 수도 있습니다. 어쩌면 도움이 될 수도 있습니다. 네트워킹에 대해 잘 설명하지 못했습니다.
Max Ried

1
사용자가 오타 (252 대신 225)를 만들었 기 때문에 실제로 Windows에서 비 연속 넷 마스크를 허용하지 않도록 프로그램을 수정해야했습니다.
dan04

6

찾을 수있는 오류 수는 대부분의 회사에서 코드 (특히 좋은 코드)를 거부 할 수 있습니다. 이것들 대부분은 아마도 스타일 실수 일 것입니다 (아무도 원하지 않기를 바랍니다). 그러나 이들 중 일부는 정의되지 않은 행동입니다.

    #define BEGIN {
    #define END }
    #define print printf
    void main(int argv, char* argc, char **args) BEGIN
print("hELLO,"); printf("WORLD");
    END

1. C를 다른 언어처럼 느끼게하는 매크로를 정의합니다 (대부분의 코드 스타일 지침).
2. main반환 void해야 할 경우이 함수는 을 반환합니다 int(구현 정의 된 동작).
3. main표준이 아닌 경우 (정의되지 않은 동작) 세 개의 인수가있는 양식을 사용합니다.
4. 이러한 인수의 이름이 잘못되었습니다 (대부분의 코드 스타일 지침).
5. argc(해야한다 argv) 잘못된 유형이 있습니다. 이어야 char **하지만 char *(정의되지 않은 동작)입니다.
6. *위치 가 다른 C 및 C ++ 선언 스타일 혼합 (대부분의 코드 라인 지침은 일관된 코드를 원함).
7. 더 깊은 코드가 정의 된 이상한 코딩 스타일 (대부분의 코드 스타일 지침).
8. printf올바른 헤더를 가져 오지 않고 함수 ( ) 사용 ( 변형 함수이므로 정의되지 않은 동작).
9. Caps Lock을 사용하여 메시지 작성 (대부분의 언어 지침).
10. 쉼표 뒤에 공백이 없습니다 (대부분의 언어 지침).
11. 한 줄에 여러 문장 (대부분의 코드 스타일 지침).
12. 끝에 새 줄이 인쇄되지 않아 프로그램 끝에 프롬프트가 표시됩니다 (구현 정의 동작).
14. 반환 값이 정의되지 않았습니다 (구현 정의 동작).


5

가다

package main

func main() {
    println(whereas "Standards are important")
    println("But sometimes it's fun to break them" despiteallobjections)
}

http://play.golang.org/p/DrDHF9EMgu

설명은 여기에 있습니다 . "wherewhere"및 "despiteallobjections"규칙은 스펙에 표시되지 않지만, 어휘 분석기는 부활절 달걀의 일종으로 그냥 건너 뜁니다. Go Goground 링크에서 "포맷"을 클릭하면 구문 분석 오류가 발생하기 때문에 linter가 더 표준을 준수한다고 생각합니다.


4

자바 스크립트

standards:
while(1)
   break standards

설명:

"표준"으로 레이블 된 while 루프가 종료됩니다.

깨진 표준 :

standards: <-- that one
while(1)
   break standards


2

GML은 수많은 표준을 위반합니다. 하나는 Ternary 연산자를 사용할 수 없다는 아름다움입니다. GML에서는 삼항 연산자를 사용하는 대신 다음을 수행합니다.

z = ( y * ( z > 0 ) ) + ( x * ( z <= 0 ) );

3 급에 해당하는 곳 :

z = ( z > 0 ) ? y : x;

첫 번째는 특히 다른 작업을 추가하기 시작할 때 매우 불쾌합니다.


1

하스켈

내 프로그램은 실제로 표준을 위반하지는 않지만 임의로 사용할 표준을 임의로 선택합니다. 그것은 다른 표준에 걸쳐 공평하게 노력합니다. 여기 내 코드가 있습니다.

import System.Random
import Control.Applicative
newlines=["\n", "\r\n", "\r"]
pick::[a]->IO a
pick lst=fmap (lst !!) $ randomRIO (0, length lst - 1)

fairUnlines::[String]->IO String
fairUnlines []         = pure ""
fairUnlines [str]      = pure str
fairUnlines (str:strs) = (\x y z->x++y++z) <$>
    pure str <*> pick newlines <*> fairUnlines strs

fairUnlines문자열 목록을 가져 와서 임의의 줄 바꿈 문자 표준을 사용하여 결합합니다. 또한 실제로 적용 스타일을 사용한 것은 이번이 처음입니다.


1

세게 때리다

당신의 모범을 보자 :

ping 192.168.0.1 -c 1 -s 10000

라우터가 있다고 가정 192.168.0.1

참고 : 최대 핑 크기는 65kb이므로 10MB 대신 10kb를 수행했습니다.


좋은 대답입니다! 이것의 Windows 버전이 있습니까 (Cygwin 제외)?
George

@GeorgeH-내가 아는
TheDoctor

Ok-Virtualbox를 다시 시작해야합니다 (오랜 시간이
George

0

자바

어머나, 누군가 게터를 다시 잊어 버렸어 ...

import java.lang.reflect.*;

class Main {
    public static void main(String[] args) throws Exception {

        // Brian forgot to implement the getter again.
        // He's on vacation, so this will have to do.

        // TODO: figure out what he named the fields
        Field field = UsefulObject.class.getDeclaredFields()[1];
        Field objField = UsefulObject.class.getDeclaredFields()[0];

        field.setAccessible(true);
        objField.setAccessible(true);

        Object obj = objField.get(null);
        String s = (String) field.get(obj);

        System.out.println(s);
    }
}
class UsefulObject {

    private static UsefulObject Useful;
    private String usefulField;

    static {
        Useful = new UsefulObject("useful field");
    }
    private UsefulObject(String s) {
        this.usefulField = s;
    }

    public String getUsefulField() { return usefulField; }

    public static UsefulObject getUsefulObject() {
        throw new UnsupportedOperationException("TODO");
    }
}

Useful필드는해야 소문자 :useful

이것이 표준인지 확실하지 않습니다. 쓸모없는 와일드 카드 가져 오기 ( java.lang.reflect.Field사용 된 모든 것이기 때문입니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.