Bazı standartları çiğneyin! [kapalı]


14

Herkes "Kurallar çiğneniyor!" İfadesini biliyor, işte burada:

Bir standardı ihlal eden herhangi bir dilde bir kod yazın. Bu, 240 voltluk bir USB kablosunu indirmekten yönlendiricinize 10mb'lik bir paketle ping işlemi yapmaya ( başka birinin web sitesi DEĞİL !) Kadar her şey olabilir! (Hiçbir fikir almayın, her ikisi de muhtemelen her türlü kıyamete neden olacaktır!)

10 gün sonra en çok oylanan cevap (yani en ciddi ihlal) kazanacak!

Kurallar:

  1. Kod açıklanmalıdır.
  2. Kırdığınız standart bağlantılı olmalı ve onu kırmak için ne yaptığınızı (ima 1) açıklamalısınız. Aksi takdirde cevaplar kabul edilmeyecektir.
  3. Sadece tercümanı çökerten veya çalışmayı durduran cevaplar kabul edilmeyecektir. Bazı yaratıcı cevaplar istiyorum, sadece IDLE'ye benzeyen bir şey değil 𐒢(çöküyor)
  4. Bir standardı ihlal etmedikçe, istismar eden hatalara izin verilmez. Aksi takdirde cevaplar kabul edilmeyecektir

Başlayın ve eğlenin!


18
Bu sitedeki cevapların çoğu en az bir kodlama standardını ihlal ediyor ...
Comintern

2
Bu benimle orijinal değil, ama ... animasyonlu JPEG!
Kendall Frey

Hey, sağ 𐒢 üzereyiz
TheDoctor

4
Öğrencilerim kod yazarken KG standartlarını ihlal etme eğilimindedir. Kazanmayı hak ediyorlar!
Max Ried

1
İlham "Nasıl Java GOTO uygulamak" bulunabilmektedir: stackoverflow.com/questions/2430782/...
Abulafia

Yanıtlar:


68

piton

print 'Hello World'

Açıklama:

Programlama Bulmaca ve Kod Golf Stack Exchange standart etmektir

Soruyu dikkatle okuyun. Soru, özellikle ne istiyor? Cevabınızın bunu sağladığından emin olun


Bu kod soruyu cevaplamıyor, bu yüzden standardı ihlal ediyor.


1
Veya python 2'de bir standardı kırmak için,print("hello world")
TheDoctor

10
@TheDoctor ama python standardını kırarsam, codegolf.SE standardını
kıramam

18
Bu soru onu bu soru için standart kırar ve açıklıyor Ama eğer bir değil standardını kesiliyor. Ama sonra geçersiz ve bir Python standardını çiğnemeli, ki bu değil! Bir paradoks - gerçekliğin standartlarını çiğniyor!
kojiro

2
Bu bir popülerlik yarışması olduğundan, en çok oy alan bu inanılmaz yaratıcı cevapla gitmek zorundayım! Hiçbir şeyin kırılmasına / yeniden başlamasına neden olmamasına rağmen :(. Ancak iyi cevap. Aferin :)
George

5
Bu, geçerli bir cevap olmaması nedeniyle geçerli bir cevaptır.
primo

24

C
İşte başarılı bir şekilde derleyen ve çalıştıran bir faktör programı (Ubuntu 12.04 üzerinde gcc4.6.3 ile), ancak C standardına göre tanımlayabildiğim kadar tanımsız davranışlar çağrıştırıyor . Çoğu buradan ilham alıyor . Kalan yasal kodların çoğu sadece kötüdür.

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
İşaretçi dizinin başlangıcını göstermiyorsa, negatif dizinler tamamen yasaldır. Heck, bir sayıyı başka bir yol yerine bir dizi ile dizine eklemek yasaldır.
user2357112 Monica

17

XHTML

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

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

p - paragraf

P öğesi bir paragrafı temsil eder.

İzin verilen içerik

İfade içeriği

Oh kendimi kirli hissediyorum!

Düzenleme: @xfix , görüntülediğim hatanın aslında XHTML olduğunu belirtti. Bunun neden olduğu HTML hatası daha serin ve daha az belirgin:

<p><div></div><p>olur <p /><div></div></p>çünkü <div>neden <p>kendini sona. Böylece bir hata ile sonuçlanır, çünkü var olmayan bir paragrafı kapatmaya çalışıyoruz.


Burada bir sorun yok. Asıl mesele, </p>etiketin <div>otomatik olarak kapanırken kapanmadan var olmasıdır <p>.
Konrad Borowski

@xfix Bu davranışın tanımlandığı özelliklere başvurunuz var mı? W3 doğrulayıcı beklediğim hata ile bu boğucu olacak, ben HTML kendisini değil bir tarayıcı uygulaması açıklamak düşünüyorum.
George Reith

1
XHTML'yi düşünüyor olabilirsiniz. HTML4 ve HTML5'te, <p>belirli etiketler tarafından kapatılır. HTML4 doğrulayıcı için "açık olmayan" P "öğesi için bitiş etiketi alıyorum".
Konrad Borowski

@xfix Haklısın! Bunu daha sonra düzenleyeceğim. Şerefe
George Reith

Daha önce hiç tipik Java geliştirici HTML görmediniz mi, yoksa bu çok sayıda bozuk standardı listelemek istemiyor musunuz?
Erik Reppen

12

HTTP / 1.1: Yanıt - Durum Kodu ve Neden İfadesi

Durum Kodu öğesi 3 basamaklı ...

Daha ileri gitmem gerekiyor mu? Bu durum kodu, standartta tanımlanan kodlardan biri değildir. Gerekli kategori basamaklarından biriyle bile başlamıyor. 3 basamak uzunluğunda bile değil.

Tarayıcım hala sayfanın düzgün yüklenmesini yönetiyor.

Buna ek olarak, bu cevap bu sitenin "standartlarından" birini ihlal ediyor :)

Çıktı (durum satırı):

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 (Düğüm)


1
Meraktan dört basamaklı bir durum kodu denediniz mi? Beş basamaklı?
MatrixFrog

@MatrixFrog 4 haneli bir kod denedim. Tarayıcı onunla iyiydi. Ben 0 ile gitti çünkü standart daha fazla kırar.
Kendall Frey

12

Sadece kaç standardı kırdım?

Gerçekten burada çok kötü programlar yaptım.

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;

Paskalya Yumurtası:echo dikey okursanız ed harfler, okuyacak just killed standarDs!.

Sidenote: Bu programı çalıştırmak gerçekten seven bir adamın adını verecektir goto.


1
Hemen söylerseniz, bu bir "paskalya yumurtası" değildir ...
Denys Séguret

9

Unicode kırma

Bir dizeyi tersine çevirmek için basit algoritma:

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

Bu, Unicode standardını ihlal eder , çünkü vekil çiftleri doğru bir şekilde bir arada tutmaz ve geçersiz bir dize oluşturur. .NET ve diğer birçok platformda / programlama dilinde a chargerçekten bir karakter değil, UTF-16 kod birimidir.

Not: Aynı zamanda, hangi harfin amaçlanan ya da amaçlanmayan sonraki birleştirme işaretleri (örn. Aksan işaretleri) ile birleştirildiğini de değiştirir.


8

JavaScript

Bu sayfadaki konsolda çalıştırın.

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

İlham alan

Bu sitedeki cevapların çoğu en az bir kodlama standardını ihlal ediyor ... - Comintern 1 saat önce

Ne yapar çıkışı üst 1000 üzerinden rastgele cevap codegolf.SE dan olarak sayfanızda, biçimlendirme ile tamamlandı (yani çok meta moda problem çözme!) Ve tüm!


Ne yazık ki, bu teknik kurallara uymuyor, çünkü çıkış kırık standartlara sahip kod olduğundan, bu kodda bir standart document.writekırdım - kullandım (ewwww). Ben de bir bağlantı sağlamak zorunda, bu yüzden burada: document.write neden "kötü uygulama" olarak kabul edilir?

Bu, "standartları kırmak" olarak sayılmazsa, her ihtimale karşı, MDN'ye göreunescape(escape()) kullanımdan kaldırılan dizemi tamamladım .

Gerçekten sadece kuralları aşmak için tüm bunları yaptığımı ve bu cevabın ana noktası çıktı olduğunu unutmayın.


Örnek çalışma (büyütmek için resme tıklayın):

ekran görüntüsü


Ayrıca var, standartlara aykırı davranabilmek için ifadeleri kaldırmalısınız .
Scimonster

6

XML

Benim "icadım" değil, aslında çok gizli bir yerden aldığımız XML'lerle çalışmak zorundayım:

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

Kendi gömülü DTD'sine karşı doğrulama yapmaz, birden fazla kök ve kaçmayan ve işareti içerir. (Burada gösterilmeyen başka üst düzey hatalar, belirsiz içerik modeli vb. De vardır.) Çok üzücü.


Çok gizli yer neresi? Bazı harika programlama devam ediyor gibi görünüyor! ;)
George

Çok gizli FBI kodu mu?

macarca şeyler muhtemelen :)
masterX244

6

Netmaskın bitişik olmayan bitmaçlara ayarlanmasına izin verildi, ancak RFC 950 tarafından cesaretini kırıldı, ancak şimdi RFC 1219'dan beri yasaklandı. Bununla birlikte, BSD beğenileri bunu yapmanıza izin veriyor.

IPv4 ağ maskeleri, tıpkı bir IP adresi gibi dört baytlık bir kombinasyondur. IP adresleri ve ağ maskeleri bilinen iki ana bilgisayarın aynı ağ üzerinde olup olmadığını hesaplamak için kullanılır. Genel olarak bir IP adresi iki bölümden oluşur: Ağ ve ana bilgisayar bölümü. Evde ağınızın 192.168.1.1- olduğunu varsayalım 192.168.1.254. Ana bilgisayar kısmı IP'nin ilk üç baytıdır 192.168.1.x. Bu, ağ maskesinin 255.255.255.0, yani ilk 24 bitin ağ kısmı olduğu anlamına gelir . İkili olarak maske benziyor 11111111.11111111.11111111.00000000. 1-bitler süreklidir. Örneğimde, ağ maskesi olurdu 00010111.00000000.00000000.00101010. Netmask sürekli değilse ne olur? Sağ uçta olmak yerine, ana bilgisayar kısmı tüm IP adresine dağılmış, buradaki açıklamam gibi okumayı gerçekten zorlaştırıyor.

Bundan sonra çalışacak bir şey beklemeyin!

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

Güzel, ama bitişik olmayan bir bitmask nedir? Google benim için anlamlı bir şey döndürmüyor. (Üzgünüm!)
George

Bazı açıklamalar eklendi, belki de bu yardımcı olur, ağ oluşturma şeylerini açıklamakta iyi değilim.
Max Ried

1
Aslında bir kullanıcı yazım hatası (252 yerine 225) nedeniyle, Windows üzerinde sürekli olmayan netmasks ile karşılaştım (ve izin vermemek için bir programı düzeltmek zorunda kaldı).
dan04

6

C

Muhtemelen çoğu şirketin kodunuzu (özellikle iyi olanları) reddetmesine neden olacak kaç hata bulabilirsiniz. Bunların çoğu muhtemelen stil hatalarıdır (umarım kimse yapmaz), ancak bunların bazıları tanımlanmamış davranışlardır.

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

1. C'yi başka bir dil gibi hissettiren makroları tanımlar (çoğu kod stili yönergeleri).
2. mainİşlev void, ne zaman dönmesi gerektiğini döndürür int(uygulama tanımlı davranış).
3. mainstandart olmadığında üç tanımlı form kullanır (tanımlanmamış davranış).
4. Bu argümanların isimleri yanlıştır (çoğu kod stili kılavuzu).
5. argc(olması gerekir argv) yanlış türde. Olmalı char **, ama öyle char *(tanımsız davranış).
6. *Konum olarak farklılık gösteren C ve C ++ bildirim stillerini karıştırma (çoğu kod dizisi kılavuzu tutarlı kod gerektirir).
7. Daha derin kodun kaldırıldığı garip kodlama stili (çoğu kod stili yönergeleri).
8. printfDoğru üstbilgiyi içe aktarmadan bir function ( ) kullanmak (varyasyonlu bir işlev olduğu için tanımlanmamış davranış).
9. Mesaj yazmak için Caps Lock tuşunu kullanma (çoğu dil kılavuzu).
10. Virgül sonrasında boşluk yok (çoğu dil kılavuzu).
11. Bir satırda birden fazla ifade (çoğu kod stili kılavuzu).
12. Sonunda yeni satır yazdırılmaz ve programın sonunda istemin çizilmesine neden olur (uygulama tanımlı davranış).
14. Dönüş değeri tanımlanmadı (uygulama tanımlı davranış).


5

Git

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

Açıklama burada . "Oysa" ve "despiteallobjections" kuralları spesifikasyonda görünmüyor, ancak lexer bir çeşit paskalya yumurtası gibi onları atlıyor. Linter daha standart uyumlu sanırım çünkü o Go Playground bağlantısında "Biçim" tıklarsanız ayrıştırma hatası alırsınız.


4

JavaScript

standards:
while(1)
   break standards

Açıklama:

"Standartlar" etiketli bir while döngüsünden çıkılır.

Standartlar kırıldı:

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


2

GML bir ton standardı çiğner. Biri, Üçlü operatörlerin kullanılmasına izin vermemenin güzelliğidir. Üçlü Operatörler kullanmak yerine, GML'de şunu yaparım:

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

Üçlü eşdeğeri:

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

Birincisi, özellikle diğer işlemlere eklemeye başladığınızda oldukça kötü.


1

Haskell

Programım gerçekten herhangi bir standardı ihlal etmiyor, ancak kullanılacak rastgele birini seçiyor. Farklı standartlarda adil olmaya çalışır. İşte kodum.

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

fairUnlinesDizelerin bir listesini alır ve rastgele yeni satır karakter standartlarını kullanarak bunlara katılır. Ayrıca, ilk kez pratik stili kullandım, IO'da daha az değil.


1

darbe

Örneğinizden alarak:

ping 192.168.0.1 -c 1 -s 10000

Yönlendiricinizin açık olduğu varsayılarak 192.168.0.1

Not: maksimum ping boyutu 65kb'dir, bu yüzden 10 mb yerine 10 kb yaptım


Mükemmel cevap! Bunun Windows sürümü var mı (Cygwin dışında)?
George

@GeorgeH - ı bildiğim kadarıyla
TheDoctor

Tamam - Virtualbox'ı tekrar ateşlemem gerekecek (Uzun zaman oldu!)
George

0

Java

Ah canım, birisi tekrar alıcıyı unuttu ...

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

UsefulAlan edilmelidir küçük harfli :useful

Bunun bir standart olduğundan emin değilim: işe yaramaz joker karakter içe aktarma (sadece kullanılan tek şey java.lang.reflect.Fieldolduğundan bu olmalıdır ).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.