Hancurkan beberapa standar! [Tutup]


14

Semua orang tahu frasa "Peraturan dibuat untuk dilanggar!", Jadi inilah tugas Anda:

Tulis beberapa kode dalam bahasa apa pun yang melanggar standar. Ini bisa apa saja, mulai dari meletakkan 240 volt kabel USB, hingga ping router Anda ( BUKAN situs web orang lain!) Dengan paket 10MB! (Jangan mendapatkan ide, keduanya mungkin akan menyebabkan segala macam malapetaka!)

Jawaban yang paling banyak dipilih setelah 10 hari (yaitu pelanggaran paling serius) akan menang!

Aturan:

  1. Kode harus dijelaskan.
  2. Standar yang Anda langgar harus ditautkan, dan Anda harus menjelaskan apa yang Anda lakukan (menyiratkan 1) untuk melanggarnya. Kalau tidak, jawaban tidak akan diterima.
  3. Jawaban yang hanya menyebabkan crash pada penerjemah, atau membuatnya berhenti bekerja tidak akan diterima. Saya ingin beberapa jawaban kreatif, tidak hanya menempelkan sesuatu seperti 𐒢ke IDLE (yang membuatnya crash)
  4. Bug yang mengeksploitasi tidak diizinkan, kecuali mereka melanggar standar. Kalau tidak, jawaban tidak akan diterima

Mulailah, dan bersenang-senanglah!


18
Mayoritas jawaban di situs ini melanggar setidaknya satu standar pengkodean ...
Comintern

2
Ini tidak asli dengan saya, tapi ... JPEG animasi!
Kendall Frey

Hei, kau benar tentang 𐒢
TheDoctor

4
Siswa saya cenderung melanggar standar QA apa pun ketika menulis kode. Mereka layak menang!
Max Ried

1
Inspirasi dapat diperoleh di "Bagaimana menerapkan GOTO di Jawa": stackoverflow.com/questions/2430782/…
Abulafia

Jawaban:


68

Python

print 'Hello World'

Penjelasan:

The standar dari Pemrograman Puzzle & Kode Golf Stack Efek adalah untuk

Baca pertanyaan dengan seksama. Apa, khususnya, pertanyaan yang diajukan? Pastikan jawaban Anda menyediakannya


Kode ini tidak menjawab pertanyaan, sehingga melanggar standar.


1
Atau untuk melanggar standar dalam python 2,print("hello world")
TheDoctor

10
@TheDoctor tetapi jika saya melanggar standar python, saya tidak bisa memecahkan standar
codegolf.SE

18
Tetapi jika pertanyaan ini melanggar standar untuk pertanyaan ini, dan menjelaskannya, itu tidak melanggar standar. Tapi kemudian itu tidak valid dan harus melanggar standar Python, yang bukan! Paradoks - ia merusak standar realitas!
kojiro

2
Karena ini adalah kontes popularitas, saya harus memilih jawaban yang sangat kreatif yang memiliki suara terbanyak! Meskipun itu tidak menyebabkan apa-apa untuk break / restart :(. Namun jawaban yang bagus. Bagus sekali :)
George

5
Ini adalah jawaban yang valid, karena tidak menjadi jawaban yang valid.
Primo

24

C
Berikut adalah program faktorial yang mengkompilasi dan menjalankan dengan sukses (dengan gcc4.6.3 di Ubuntu 12.04), tetapi memanggil sebanyak mungkin perilaku yang tidak terdefinisi sesuai dengan standar C yang saya dapat menjejalkan. Kebanyakan terinspirasi dari sini . Banyak kode hukum yang tersisa hanya buruk.

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
Indeks negatif sepenuhnya legal jika pointer tidak menunjuk ke awal array. Heck, itu legal untuk mengindeks nomor dengan array bukan sebaliknya.
user2357112 mendukung Monica

17

XHTML

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

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

p - paragraf

Elemen p mewakili paragraf.

Konten yang diizinkan

Menyusun konten secara bertahap

Oh saya merasa kotor!

Sunting: @xfix menunjukkan bahwa kesalahan yang saya tampilkan sebenarnya XHTML. Kesalahan HTML ini menyebabkan lebih dingin dan kurang jelas sehingga:

<p><div></div><p>menjadi <p /><div></div></p>karena <div>sebab <p>untuk menutup diri. Sehingga mengakibatkan kesalahan karena kami berusaha untuk menutup paragraf yang tidak ada.


Ini bukan masalah di sini. Masalah sebenarnya adalah bahwa </p>tag ada tanpa menutupnya, karena <div>secara otomatis ditutup <p>.
Konrad Borowski

@xfix Apakah Anda memiliki referensi ke spesifikasi di mana perilaku ini didefinisikan? Validator W3 akan tersedak ini dengan kesalahan yang saya harapkan, saya pikir Anda menggambarkan implementasi browser dan bukan HTML itu sendiri.
George Reith

1
Anda mungkin berpikir tentang XHTML. Di HTML4 dan HTML5, <p>ditutup oleh tag tertentu. Untuk validator HTML4, saya mendapatkan "tag akhir untuk elemen" P "yang tidak terbuka".
Konrad Borowski

@ Perbaiki Benar Anda! Saya akan mengedit ini nanti. Cheers
George Reith

Apakah Anda belum pernah melihat Java dev HTML biasa atau Anda tidak ingin harus membuat daftar standar yang banyak rusak?
Erik Reppen

12

HTTP / 1.1: Respons - Kode Status dan Frasa Alasan

Elemen Status-Code adalah 3 digit ...

Perlu saya melangkah lebih jauh? Kode status ini bukan salah satu kode yang ditentukan dalam standar. Itu bahkan tidak dimulai dengan salah satu digit kategori yang diperlukan. Panjangnya bahkan tidak 3 digit.

Browser saya masih berhasil memuat halaman dengan baik.

Selain itu, jawaban ini mematahkan salah satu "standar" situs ini :)

Output (baris status):

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 (Node)


1
Karena penasaran, apakah Anda mencoba kode status empat digit? Lima digit?
MatrixFrog

@ MatrixFrog Saya memang mencoba kode 4 digit. Browser baik-baik saja dengan itu. Saya menggunakan angka 0 karena lebih merusak standar.
Kendall Frey

12

Berapa banyak standar yang baru saja saya langgar?

Saya melakukan beberapa pemrograman yang mengerikan di sini.

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;

Telur Paskah: Surat echoed, jika dibaca secara vertikal, akan membaca just killed standarDs!.

Sidenote: Menjalankan program ini akan menampilkan nama pria yang benar-benar dicintai goto.


1
Jika Anda segera mengatakannya, itu bukan "telur paskah" ...
Denys Séguret

9

C # - melanggar Unicode

Algoritma sederhana untuk membalikkan string:

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

Ini melanggar standar Unicode , karena itu tidak menjaga pasangan penggantinya bersama-sama, menciptakan string yang tidak valid. Dalam .NET dan banyak platform / bahasa pemrograman lainnya, a charbukanlah karakter, tetapi a unit kode UTF-16 .

NB: Ini juga mengubah huruf mana yang dikombinasikan dengan tanda penggabungan berikutnya (misalnya diakritik), yang mungkin atau mungkin tidak dimaksudkan.


8

JavaScript

Jalankan di konsol di halaman ini.

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

Terinspirasi oleh

Mayoritas jawaban di situs ini melanggar setidaknya satu standar pengkodean ... - Comintern 1 jam yang lalu

Apa yang dilakukannya adalah mengeluarkan jawaban acak dari 1.000 teratas yang dipilih dari codegolf.SE (yaitu, menyelesaikan masalah dengan cara yang sangat meta!), Lengkap dengan pemformatan dan semuanya, di halaman Anda!


Sayangnya, ini secara teknis tidak memenuhi aturan, karena output adalah kode dengan standar yang rusak, jadi saya benar-benar melanggar standar dalam kode ini - saya menggunakan document.write(ewwww). Saya juga harus memberikan tautan, jadi di sini: Mengapa dokumen. Menulis dianggap sebagai "praktik buruk"?

Jika itu tidak dianggap sebagai "melanggar standar," untuk berjaga-jaga, saya membungkus tali saya unescape(escape()), yang sudah usang, sesuai MDN .

Perhatikan bahwa saya benar-benar hanya melakukan semua ini untuk menyiasati aturan, dan poin utama dari jawaban ini adalah hasilnya.


Contoh dijalankan (klik gambar untuk memperbesar):

tangkapan layar


Anda juga harus menghapus varpernyataan agar lebih bertentangan dengan standar.
Scimonster

6

XML

Bukan "penemuan" saya, saya sebenarnya harus bekerja dengan XML seperti ini yang kami dapatkan dari tempat yang sangat rahasia:

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

Tidak memvalidasi terhadap DTD tertanamnya sendiri, berisi beberapa root dan ampersand yang tidak terhapuskan. (Ada juga kesalahan tingkat lebih tinggi lainnya, model konten yang ambigu, dll., Tidak diperlihatkan di sini.) Sangat menyedihkan.


Apa tempat yang sangat rahasia? Kedengarannya seperti beberapa pemrograman hebat terjadi di sana! ;)
George

Apakah ini kode FBI rahasia?

hal-hal hungaria mungkin :)
masterX244

6

Mengatur netmask ke bitmask non-contigous diizinkan tetapi sangat tidak disarankan oleh RFC 950, tetapi sekarang dilarang pada RFC 1219. Namun demikian, BSD-like memungkinkan Anda untuk melakukan ini.

Netmask IPv4 adalah kombinasi empat byte, sama seperti alamat IP. Ini digunakan untuk menghitung, jika dua host dengan alamat IP dan netmasks diketahui berada di jaringan yang sama. Secara umum alamat IP terdiri dari dua bagian: Jaringan dan bagian host. Katakanlah jaringan Anda di rumah adalah 192.168.1.1- 192.168.1.254. Bagian host adalah tiga byte pertama dari IP, yaitu 192.168.1.x. Ini berarti netmask adalah 255.255.255.0, artinya 24 bit pertama adalah bagian jaringan. Dalam biner topengnya seperti 11111111.11111111.11111111.00000000. 1-bit bersifat kontinu. Dalam contoh saya, netmask akan menjadi 00010111.00000000.00000000.00101010. Jadi apa yang akan terjadi, jika netmask tidak berkelanjutan? Alih-alih berada di ujung kanan, bagian host tersebar di seluruh alamat IP, membuatnya sangat sulit untuk dibaca, seperti penjelasan saya di sini.

JANGAN mengharapkan apa pun untuk bekerja setelah ini!

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

Bagus, tapi apa itu bitmask yang tidak bersebelahan? Google tidak mengembalikan apa pun yang berarti bagi saya. (Maaf!)
George

Menambahkan beberapa penjelasan, mungkin ini membantu, saya tidak pandai menjelaskan hal-hal jaringan.
Max Ried

1
Saya benar-benar menemukan (dan harus memperbaiki program untuk melarang) netmask non-kontinu pada Windows, karena pengguna membuat kesalahan ketik (225 bukan 252).
dan04

6

C

Berapa banyak kesalahan yang dapat Anda temukan, yang mungkin akan menyebabkan sebagian besar perusahaan menolak kode Anda (terutama yang baik). Sebagian besar ini mungkin kesalahan gaya (yang saya harap tidak ada yang melakukan), tetapi beberapa di antaranya adalah perilaku yang tidak terdefinisi.

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

1. Ini mendefinisikan makro yang membuat C terasa seperti bahasa lain (kebanyakan pedoman gaya kode).
2. mainFungsi kembali void, kapan harus kembali int(perilaku yang ditentukan implementasi).
3. mainmenggunakan formulir dengan tiga argumen, ketika itu tidak standar (perilaku tidak terdefinisi).
4. Argumen tersebut memiliki nama yang salah (sebagian besar pedoman gaya kode).
5. argc(harus argv) memiliki tipe yang salah. Seharusnya char **, tapi itu char *(perilaku tidak terdefinisi).
6. Mencampur gaya deklarasi C dan C ++, yang berbeda dalam 8. Menggunakan fungsi ( ) tanpa mengimpor header yang benar (perilaku tidak terdefinisi, karena itu adalah fungsi variadik).* posisinya (sebagian besar pedoman codelines menginginkan kode konsisten).
7. Gaya pengkodean yang aneh di mana kode yang lebih dalam didefinisikan (sebagian besar pedoman gaya kode).
printf
9. Menggunakan Caps Lock untuk menulis pesan (sebagian besar pedoman bahasa).
10. Tidak ada ruang setelah koma (sebagian besar pedoman bahasa).
11. Beberapa pernyataan dalam satu baris (kebanyakan pedoman gaya kode).
12. Tidak ada baris baru yang dicetak di akhir, menyebabkan prompt ditarik pada akhir program (perilaku yang ditentukan implementasi).
14. Nilai kembali tidak didefinisikan (perilaku implementasi-didefinisikan).


5

Pergilah

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

Penjelasan di sini . Aturan "sedangkan" dan "meskipun semua sasaran" tidak muncul dalam spesifikasi, tetapi lexer hanya melompati mereka, sebagai jenis telur paskah. Saya kira linter lebih sesuai standar karena jika Anda mengklik "Format" pada tautan Go Playground itu, Anda mendapatkan kesalahan parse.


4

JavaScript

standards:
while(1)
   break standards

Penjelasan:

Loop sementara berlabel "standar" keluar.

Standar rusak:

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


2

GML memecah satu ton standar. Satu menjadi keindahan karena tidak memungkinkan untuk menggunakan operator ternary. Alih-alih menggunakan Operator Ternary, di GML saya akan melakukan ini:

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

Di mana setara Ternary adalah:

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

Yang pertama cukup jahat terutama ketika Anda mulai menambahkan di operasi lain.


1

Haskell

Program saya tidak benar-benar melanggar standar apa pun, tetapi hanya secara acak memilih satu untuk digunakan. Ia berusaha adil di berbagai standar yang berbeda. Ini kode saya.

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

fairUnlinesakan mengambil daftar Strings, dan bergabung dengan mereka menggunakan standar karakter baris baru acak. Juga, ini adalah pertama kalinya saya benar-benar menggunakan gaya aplikatif, pada IO tidak kurang.


1

Pesta

Mengambil dari contoh Anda:

ping 192.168.0.1 -c 1 -s 10000

Dengan asumsi router Anda di 192.168.0.1

Catatan: ukuran ping maksimum adalah 65kb, jadi saya melakukan 10 kb sebagai pengganti 10 mb


Jawaban bagus! Apakah ada versi Windows ini (Terlepas dari Cygwin)?
George

@ GeorgeH - bukan yang saya tahu
TheDoctor

Oke - Saya harus menjalankan Virtualbox lagi (Sudah lama!)
George

0

Jawa

Oh sayang, seseorang lupa rajin dan giat ...

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

The Usefullapangan harus huruf kecil :useful

Tidak yakin ini adalah standar: impor wildcard tidak berguna (seharusnya hanya java.lang.reflect.Fieldkarena hanya itu yang digunakan).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.