打破一些标准![关闭]


14

每个人都知道“规则被打破!”这句话,这是您的任务:

用任何违反标准的语言编写一些代码。这可以是任何东西,从将240伏特的USB电缆接下来,再用10mb的数据包ping路由器(不是别人的网站!)!(没有任何想法,这两种想法都可能会导致各种厄运!)

10天后获得最高支持的答案(即最严重的违规)将获胜!

规则:

  1. 该代码必须说明。
  2. 您要违反的标准必须链接到该标准,并且必须说明您正在做什么(暗示1)以破坏它。否则答案将不被接受。
  3. 只会使解释程序崩溃或使其停止工作的答案将不被接受。我想要一些创造性的答案,而不仅仅是将类似的内容粘贴𐒢到IDLE中(这会使它崩溃)
  4. 除非利用漏洞破坏标准,否则不允许利用漏洞。否则答案将不被接受

开始,玩得开心!


18
该网站上的大多数答案都至少违反一种编码标准...
Comintern 2014年

2
这不是我的原创作品,而是JPEG动画!
肯德尔·弗雷

嘿,您对right是正确的
TheDoctor 2014年

4
我的学生在编写代码时倾向于违反任何质量检查标准。他们应该赢!
Max Ried 2014年

1
:灵感可以在“如何实现GOTO在Java中”可以了stackoverflow.com/questions/2430782/...
Abulafia

Answers:


68

蟒蛇

print 'Hello World'

说明:

编程拼图及代码高尔夫堆栈交易所的标准

仔细阅读问题。具体来说,这个问题要问什么?确保您的答案提供了


该代码无法回答问题,因此违反了标准。


1
还是要破坏python 2中的标准,print("hello world")
TheDoctor

10
@TheDoctor,但如果我违反python标准,就无法破坏codegolf.SE标准
user12205 2014年

18
但是,如果此问题违反了该问题的标准并进行了解释,则并没有违反标准。但是,它无效并且必须违反Python标准,但事实并非如此!悖论–打破了现实的标准!
kojiro

2
由于这是一次人气竞赛,因此我必须选择投票率最高的极富创意的答案!即使它不会导致任何损坏/重启:(。但是很好的答案。做得好:)
乔治

5
由于不是有效答案,因此这是有效答案。
primo 2014年

24

Ç
这里有一个阶乘程序,编译和运行succcessfully(在Ubuntu 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 2014年

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 Borowski14年

@xfix您是否引用了定义此行为的规范?W3验证程序会因我期望的错误而对此感到窒息,我认为您是在描述浏览器实现,而不是HTML本身。
乔治·赖斯2014年

1
您可能正在考虑XHTML。在HTML4和HTML5中,<p>由某些标签关闭。对于HTML4验证程序,我得到“元素“ P”的结束标记,该标记未打开“。
Konrad Borowski14年

@xfix你是对的!稍后我将对其进行编辑。干杯
George Reith 2014年

是您从未见过典型的Java开发人员HTML还是只是不想列出那么多坏的标准?
埃里克·雷彭

12

HTTP / 1.1:响应-状态代码和原因短语

状态码元素是一个三位数的...

我需要进一步吗?此状态代码不是标准中定义的代码之一。它甚至不是以所需的类别数字之一开头的。甚至不到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();
}

JavaScript(节点)


1
出于好奇,您是否尝试输入四位数的状态码?五位数?
MatrixFrog 2014年

@MatrixFrog我确实尝试了4位代码。浏览器很好用。我选择了0,因为它破坏了更多标准。
肯德尔·弗雷

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
如果您立即告诉我们,它不是“复活节彩蛋” ...
DenysSéguret2014年

9

C#-打破Unicode

反转字符串的简单算法:

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();
}

这违反了Unicode标准,因为它不能正确地将代理对保持在一起,从而创建了无效的字符串。在.NET和许多其他平台/编程语言中,a char并不是字符,而是 UTF-16代码单元。

注意:这还会更改将哪个字母与随后的合并标记(例如变音符号)合并,这可能是也可能不是预期的。


8

的JavaScript

在此页面上的控制台中运行它。

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进行验证,包含多个根和未转义的&符。(还有其他更高级别的错误,模棱两可的内容模型等,此处未演示。)非常可悲。


最秘密的地方是什么?听起来好像正在进行一些出色的编程!;)
乔治

它是FBI的最高机密代码吗?

匈牙利的东西:)
masterX244 2014年

6

允许将网络掩码设置为不连续的位掩码,但RFC 950强烈建议将其设置为不推荐使用,但是从RFC 1219开始现在禁止使用。但是,类似BSD的工具允许您执行此操作。

IPv4网络掩码是四个字节的组合,就像IP地址一样。它用于计算两个具有已知IP地址和网络掩码的主机是否在同一网络上。通常,IP地址由两部分组成:网络和主机部分。假设您在家的网络是192.168.1.1- 192.168.1.254。主机部分是IP的前三个字节,即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不会返回对我有意义的任何内容。(对不起!)
乔治

补充了一些说明,也许这有所帮助,我不太擅长解释网络事物。
Max Ried 2014年

1
由于用户输入错误(225而不是252),我实际上在Windows上遇到了(并且不得不修复程序以禁止使用)非连续网络掩码。
2014年

6

C

您会发现多少错误,这可能会导致大多数公司拒绝您的代码(尤其是好的代码)。其中大多数可能是样式错误(我希望没有人犯),但是其中一些是未定义的行为。

    #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

解释在这里。规格中没有出现“ whereas”和“ despiteallobjections”规则,但词法分析器只是跳过了它们,就像复活节彩蛋一样。我认为linter更符合标准,因为如果单击该Go Playground链接上的“格式”,则会收到解析错误。


4

的JavaScript

standards:
while(1)
   break standards

说明:

标有“标准”的while循环退出。

违反标准:

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


2

GML违反了很多标准。其中之一就是不允许使用三元运算符。在GML中,我不使用三进制运算符,而是这样做:

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

三元等效项是:

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将获取一个字符串列表,并使用随机换行符标准将它们连接起来。另外,这还是我第一次真正在IO上使用应用风格。


1

重击

以您的示例为例:

ping 192.168.0.1 -c 1 -s 10000

假设您的路由器位于 192.168.0.1

注意:最大ping大小为65kb,所以我做了10kb而不是10mb


好答案!是否有Windows版本(Cygwin除外)?
乔治

@GeorgeH-我所不知道的
TheDoctor

好-生病了,必须再次启动Virtualbox(已经很长时间了!)
乔治

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因为这就是正在使用的全部)。

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.