いくつかの標準を破る![閉まっている]


14

「ルールは破られるように作られている!」というフレーズを誰もが知っているので、ここにあなたのタスクがあります:

標準に違反する任意の言語でコードを記述します。これは、USBケーブルに240ボルトをかけることから、ルーター(他のWebサイトではありません!)に10 mbパケットでpingを送ることまで、何でも可能です!(アイデアを取得しないでください、これらの両方はおそらくあらゆる種類の運命を引き起こすでしょう!)

10日後に最も投票された回答(最も重大な違反)が勝ちます!

ルール:

  1. コードを説明する必要があります。
  2. 違反している標準はリンクされている必要があり、違反していることを説明する必要があります(1を意味します)。そうでない場合、回答は受け付けられません。
  3. インタプリタをクラッシュさせたり、動作を停止させたりする回答は受け入れられません。𐒢IDLE(クラッシュ)に何かを貼り付けるだけでなく、創造的な答えが欲しい
  4. 標準を破らない限り、バグの悪用は許可されません。そうでない場合、回答は受け入れられません。

始めて、楽しんでください!


18
このサイトの回答の大部分は、少なくとも 1つのコーディング標準に違反しています...
Comintern 14年

2
これはオリジナルではありませんが、... アニメーションJPEG!
ケンドールフレイ14年

ねえ、あなたは右𐒢うとしている
TheDoctor

4
私の生徒は、コードを書くときにQA基準に違反する傾向があります。彼らは勝つに値する!
マックスリード14

1
インスピレーションは、「どのようにJavaでGOTOを実装する」であったことができます:stackoverflow.com/questions/2430782/...
Abulafia

回答:


68

Python

print 'Hello World'

説明:

プログラミングパズル&コードゴルフスタック交換の標準がにあります

質問を注意深く読んでください。具体的には、質問は何を求めていますか?あなたの答えがそれを提供することを確認してください


このコードは質問に答えていないため、標準に違反しています。


1
または、Python 2で標準を破るprint("hello world")
TheDoctor

10
@TheDoctorが、Python標準を破ると、codegolf.SE標準を破ることができません
user12205 14年

18
しかし、この質問がこの質問の標準を破り、それを説明していれば、それは標準を破っていません。しかし、それは無効であり、Python標準に違反しているに違いありません。パラドックス–それはまさに現実の基準を破ります!
小次郎14年

2
これは人気コンテストなので、投票数が最も多いこの信じられないほど創造的な答えに行かなければなりません!。。それは/再起動:(破るためには何も起こらないにもかかわらず、しかし良い答えまあ:)行わ
ジョージ

5
有効な回答ではないため、これは有効な回答です。
primo 14

24

Cは、
ここで多くの未定義の動作としてコンパイルして実行succcessfully(Ubuntuの12.04でgcc4.6.3付き)が、呼び出すにはに従った階乗のプログラムだCの標準 Iはに詰め込むことができよう。ほとんどがからインスピレーションを得ているここ。残っている法的コードの多くは、単に悪いものです。

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は、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>
コンラッド

@xfixこの動作が定義されている仕様への参照はありますか?W3バリデーターは、私が予想するエラーでこれを抑制します。HTML自体ではなく、ブラウザーの実装を記述していると思います。
ジョージリース14

1
XHTMLを考えているかもしれません。HTML4およびHTML5では、<p>特定のタグによって閉じられます。HTML4バリデータの場合、「開いていない要素「P」の終了タグ」を取得します。
コンラッドボロウスキ14

@xfixそうです!これは後で編集します。乾杯
ジョージリース14

典型的なJava開発HTMLを見たことがないということですか、それとも多くの壊れた標準をリストアップする必要はないのでしょうか?
エリックReppen

12

HTTP / 1.1:応答-ステータスコードと理由フレーズ

Status-Code要素は3桁です...

さらに進む必要がありますか?このステータスコードは、標準で定義されているコードの1つではありません。必要なカテゴリの数字のいずれかで始まっていません。長さも3桁ではありません。

私のブラウザはまだページをうまく読み込むことができます。

さらに、この回答はこのサイトの「標準」の1つに違反します:)

出力(ステータス行):

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
好奇心から、4桁のステータスコードを試しましたか?5桁?
MatrixFrog 14年

@MatrixFrog 4桁のコードを試しました。ブラウザはそれで問題ありませんでした。それは標準の多くを破るので、私は0で行きました。
ケンドールフレイ14

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
あなたはすぐにそれを言えば、それは「イースターエッグ」...ではありません
デニス・Séguret

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および他の多くのプラットフォーム/プログラミング言語でcharは、a は実際には文字ではなく、UTF-16コード単位です。

NB:また、どの文字が後続の結合マーク(発音区別符号など)と結合されるかを変更します。


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

に触発

このサイトの回答の大半は、少なくとも1つのコーディング標準に違反しています... – Comintern 1時間前

これは、codegolf.SEから投票された上位1000件からランダムな回答を出力(つまり、非常にメタな方法で問題を解決します!)、書式設定とすべてをページ上で完了します!


残念ながら、出力は壊れた標準のコードであるため、これは技術的にはルールを満たしていませんdocument.write。リンクも提供する必要があるので、ここで:document.writeが「悪い習慣」と見なされるのはなぜですか?

それが「標準を破る」としてカウントされない場合、念のunescape(escape())ため、MDNに従って非推奨の文字列をラップしました。

ルールを回避するために実際にこれをすべて実行しているだけであり、この答えの主なポイントはその出力であることに注意してください。


サンプルの実行(画像をクリックして拡大):

スクリーンショット


また、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 14

6

ネットマスクを非連続ビットマスクに設定することは許可されていましたが、RFC 950では非常に推奨されていませんでしたが、RFC 1219の時点では禁止されています。

IPv4ネットマスクは、IPアドレスと同様に4バイトの組み合わせです。既知のIPアドレスとネットマスクを持つ2つのホストが同じネットワーク上にある場合、計算に使用されます。一般に、IPアドレスは2つの部分で構成されます。ネットワークとホストの部分です。自宅のネットワークが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は私にとって意味のあるものを返しません。(申し訳ありません!)
ジョージ14

いくつかの説明を追加しました。これが役立つかもしれません。私はネットワーキングのことを説明するのが苦手です。
マックスリード

1
ユーザーがタイプミス(252ではなく225)を行ったため、Windowsで非連続ネットマスクに実際に遭遇しました(そして、プログラムを修正して許可しませんでした)。
dan04

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標準でない場合(未定義の動作)、3つの引数を持つフォームを使用します。
4.これらの引数の名前は正しくありません(ほとんどのコードスタイルのガイドライン)。
5. argc(のはずですargv)タイプが正しくありません。であるべきですがchar **、それはchar *(未定義の動作)です。
6. *位置が異なるCとC ++の宣言スタイルを混在させます(ほとんどのコードラインガイドラインには一貫したコードが必要です)。
7.より深いコードが意図されている奇妙なコーディングスタイル(ほとんどのコードスタイルガイドライン)。
8. printf正しいヘッダーをインポートせずに関数()を使用する(可変引数関数であるため、未定義の動作)。
9. Caps Lockを使用してメッセージを書き込みます(ほとんどの言語ガイドライン)。
10.コンマの後にスペースがない(ほとんどの言語ガイドライン)。
11. 1行に複数のステートメント(ほとんどのコードスタイルのガイドライン)。
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」ルールと「douslyallobjections」ルールは仕様に表示されませんが、レクサーはイースターエッグのようなものとしてそれらをスキップします。Go Playgroundリンクの[フォーマット]をクリックすると、解析エラーが発生するため、リンターはより標準に準拠していると思います。


4

JavaScript

standards:
while(1)
   break standards

説明:

「standards」というラベルのwhileループが終了します。

破られた標準:

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


2

GMLは多くの標準を破ります。1つは、3項演算子の使用を許可しないことの美しさです。三項演算子を使用する代わりに、GMLでこれを行います。

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

Ternaryの同等物は次のとおりです。

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なので、10 mbの代わりに10 kbを実行しました


素晴らしい答えです!WindowsバージョンのCygwinはありますか?
ジョージ14年

@GeorgeH -私は知っているのではないこと
TheDoctor

わかりました-Virtualboxを再度起動する必要があります(久しぶりです!)
ジョージ14年

0

Java

親愛なる、誰かが再びゲッターを忘れた...

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.