Quebre alguns padrões! [fechadas]


14

Todo mundo conhece a frase "As regras são feitas para serem quebradas!", Então aqui está sua tarefa:

Escreva algum código em qualquer idioma que quebre um padrão. Isso pode ser qualquer coisa, desde colocar 240 volts em um cabo USB até executar ping no seu roteador ( NÃO no site de outra pessoa!) Com um pacote de 10mb! (Não tenha idéias, provavelmente essas duas coisas causarão todo tipo de desgraça!)

A resposta mais votada após 10 dias (ou seja, a violação mais séria) vencerá!

Regras:

  1. O código deve ser explicado.
  2. O padrão que você está quebrando deve estar vinculado e você deve explicar o que está fazendo (implica 1) para quebrá-lo. Caso contrário, as respostas não serão aceitas.
  3. Não serão aceitas respostas que travem o intérprete ou o deixem de funcionar. Gostaria de algumas respostas criativas, não apenas colando algo como 𐒢no IDLE (que trava)
  4. Explorar bugs não é permitido, a menos que eles quebrem um padrão. Caso contrário, as respostas não serão aceitas

Comece e divirta-se!


18
A maioria das respostas neste site violar pelo menos um padrão de codificação ...
Comintern

2
Isso não é original para mim, mas ... JPEG animado!
Kendall Frey #

Ei, você está certo sobre 𐒢
TheDoctor

4
Meus alunos tendem a violar qualquer padrão de controle de qualidade ao escrever código. Eles merecem ganhar!
Max Ried

1
A inspiração pode ser obtida em "Como implementar o GOTO em Java": stackoverflow.com/questions/2430782/…
Abulafia

Respostas:


68

Pitão

print 'Hello World'

Explicação:

O padrão da troca de quebra-cabeças de programação e pilha de golfe com código é

Leia a pergunta com atenção. O que, especificamente, a pergunta está pedindo? Verifique se a sua resposta fornece que


Este código não está respondendo à pergunta e, portanto, quebra o padrão.


1
Ou para quebrar um padrão em python 2,print("hello world")
TheDoctor

10
@TheDoctor mas se eu quebrar o padrão python, eu não posso quebrar o codegolf.SE padrão
user12205

18
Mas se essa pergunta quebra o padrão dessa pergunta e a explica, ela não está quebrando o padrão. Mas então é inválido e deve estar quebrando um padrão Python, o que não é! Um paradoxo - quebra os próprios padrões da realidade!
Kojiro # 04/14

2
Como este é um concurso de popularidade, tenho que concordar com esta resposta incrivelmente criativa que tem mais votos! Mesmo que ele não causa qualquer coisa para quebrar / restart :( No entanto boa resposta Bem feito :)..
George

5
Esta é uma resposta válida, em virtude de não ser uma resposta válida.
primo

24

C
Aqui está um programa fatorial que compila e executa com êxito (com gcc4.6.3 no Ubuntu 12.04), mas invoca o máximo de comportamento indefinido de acordo com o padrão C que eu poderia usar. A maioria é inspirada aqui . Muito do código legal restante é ruim.

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
Os índices negativos são perfeitamente legais se o ponteiro não apontar para o início da matriz. Caramba, é legal indexar um número com uma matriz, e não o contrário.
User2357112 suporta Monica

17

XHTML

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

A especificação do W3C ( http://www.w3.org/TR/html-markup/p.html#p ):

p - parágrafo

O elemento p representa um parágrafo.

Conteúdo permitido

Conteúdo de frases

Oh, eu me sinto sujo!

Editar: @xfix apontou que o erro que eu estava exibindo era realmente XHTML. O erro HTML que isso causa é mais frio e menos óbvio, de modo que:

<p><div></div><p>torna-se <p /><div></div></p>porque <div>causa o <p>fechamento automático. Assim, resultando em um erro, porque estamos tentando fechar um parágrafo que não existe.


Este não é um problema aqui. O problema real é que a </p>tag existe sem fechá-la, pois <div>é fechada automaticamente <p>.
precisa

@xfix Você tem uma referência à especificação em que esse comportamento é definido? O validador W3 se engasgará com o erro que eu esperaria, acho que você está descrevendo uma implementação de navegador e não o próprio HTML.
George Reith

1
Você pode estar pensando em XHTML. No HTML4 e HTML5, <p>é fechado por determinadas tags. Para o validador HTML4, recebo "tag final do elemento" P "que não está aberto".
Konrad Borowski

@xfix Você está certo! Vou editar isso mais tarde. Cheers
George Reith

Você nunca viu um típico Java dev HTML ou simplesmente não deseja listar tantos padrões quebrados?
Erik Reppen

12

HTTP / 1.1: resposta - código de status e frase de razão

O elemento Status-Code é um código de 3 dígitos ...

Preciso ir mais longe? Esse código de status não é um dos códigos definidos no padrão. Nem começa com um dos dígitos de categoria necessários. Não tem nem três dígitos.

Meu navegador ainda consegue carregar a página corretamente.

Além disso, esta resposta quebra um dos "padrões" deste site :)

Saída (linha de 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 (Nó)


1
Por curiosidade, você tentou um código de status de quatro dígitos? Cinco dígitos?
precisa saber é o seguinte

@MatrixFrog Tentei um código de 4 dígitos. O navegador estava bem com isso. Fui com um 0 porque quebra mais do padrão.
Kendall Frey #

12

Quantos padrões eu acabei de quebrar?

Eu fiz alguma programação horrível de fato aqui.

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;

Ovos de pascoa: Oecho letras ed, se lidas na vertical, serão lidas just killed standarDs!.

Nota: A execução deste programa produzirá o nome de um cara que realmente amava gotos.


1
Se você diga a ele imediatamente, não é um "easter egg" ...
Denys Séguret

9

Quebrando Unicode

Algoritmo simples para reverter uma 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();
}

Isso quebra o padrão Unicode , porque ele não mantém corretamente os pares substitutos juntos, criando uma sequência inválida. No .NET e em muitas outras plataformas / linguagens de programação, a charnão é realmente um personagem, mas um UTF-16 unidade de código .

Nota: também altera qual letra é combinada com as marcas combinadas subsequentes (por exemplo, diacríticos), que podem ou não ser destinadas.


8

Javascript

Execute-o no console nesta página.

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

Inspirado por

A maioria das respostas neste site viola pelo menos um padrão de codificação ... - Comintern 1 hour ago

O que ele faz é gerar uma resposta aleatória dentre as 1000 melhores votadas no codegolf.SE (isto é, resolver o problema de uma maneira muito meta!), Completa com formatação e tudo, na sua página!


Infelizmente, isso tecnicamente não satisfaz as regras, já que a saída é o código com os padrões quebrados, então eu quebrei um padrão nesse código - usei document.write(ewwww). Eu também tenho que fornecer um link, então aqui: Por que document.write é considerado uma "má prática"?

Se isso não conta como "quebrar os padrões", por precaução, envolvi minha string unescape(escape()), que está obsoleta, conforme MDN .

Note que estou realmente fazendo tudo isso para contornar as regras, e o ponto principal desta resposta é sua saída.


Exemplo de execução (clique na imagem para ampliar):

captura de tela


Você também deve remover as varinstruções para fazê-la ir mais além dos padrões.
Scimonster

6

XML

Não é minha "invenção", na verdade eu tenho que trabalhar com XMLs como este que obtemos de um lugar muito secreto:

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

Não valida contra seu próprio DTD incorporado, contém várias raízes ee comercial sem escape. (Também existem outros erros de nível superior, modelo de conteúdo ambíguo etc.) não demonstrados aqui.) Muito triste.


Qual é o lugar muito secreto? Parece que uma grande programação acontece lá! ;) #
George George

É um código secreto do FBI?

coisas húngara provavelmente :)
masterX244

6

Definir a máscara de rede para máscaras de bits não contíguas foi permitido, mas altamente desencorajado pelo RFC 950, mas agora é proibido a partir do RFC 1219. No entanto, os gostos de BSD permitem que você faça isso.

As máscaras de rede IPv4 são uma combinação de quatro bytes, como um endereço IP. É usado para calcular se dois hosts com endereços IP e máscaras de rede conhecidos estão na mesma rede. Em geral, um endereço IP consiste em duas partes: a rede e a parte do host. Digamos que sua rede em casa seja 192.168.1.1- 192.168.1.254. A parte do host são os três primeiros bytes do IP, a saber 192.168.1.x. Isso significa que a máscara de rede é 255.255.255.0, ou seja , os primeiros 24 bits são a parte da rede. Em binário, a máscara parece 11111111.11111111.11111111.00000000. Os 1 bits são contínuos. No meu exemplo, a máscara de rede seria 00010111.00000000.00000000.00101010. Então, o que aconteceria se a máscara de rede não fosse contínua? Em vez de estar do lado certo, a parte do host está espalhada por todo o endereço IP, dificultando a leitura, assim como minha explicação aqui.

NÃO espere que nada funcione depois disso!

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

Bom, mas o que é uma máscara de bits não contígua? O Google não retorna nada que seja significativo para mim. (Desculpe!)
George

Adicionadas algumas explicações, talvez isso ajude, não sou bom em explicar coisas sobre redes.
Max Ried

1
Na verdade, eu encontrei (e tive que corrigir um programa para proibir) máscaras de rede não contínuas no Windows, devido a um usuário digitando um erro de digitação (225 em vez de 252).
Dan04 30/05

6

C

Quantos erros você pode encontrar, o que provavelmente levaria a maioria das empresas a rejeitar seu código (especialmente os bons). A maioria destes são provavelmente erros de estilo (que espero que ninguém faça), mas alguns deles são comportamentos indefinidos.

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

1. Ele define macros que fazem C parecer outro idioma (a maioria das diretrizes de estilo de código).
2. A mainfunção retorna void, quando deve retornar int(comportamento definido pela implementação).
3. mainusa um formulário com três argumentos, quando não é padrão (comportamento indefinido).
4. Esses argumentos têm nomes incorretos (a maioria das diretrizes de estilo de código).
5. argc(deveria ser argv) tem um tipo incorreto. Deveria ser char **, mas é char *(comportamento indefinido).
6. Misturando os estilos de declaração C e C ++, que diferem em 8. Usando uma função ( 9. Usando Caps Lock para escrever mensagens (a maioria das diretrizes de idioma) 10.) Não há espaço após vírgula (a maioria das diretrizes de idioma).* posição (a maioria das diretrizes de linhas de código deseja código consistente). ) sem importar o cabeçalho correto (comportamento indefinido, pois é uma função variável).
7. Estilo de codificação estranho, onde o código mais profundo é desintendido (a maioria das diretrizes de estilo de código).
printf


11. Várias declarações em uma linha (a maioria das diretrizes de estilo de código).
12. Nenhuma nova linha é impressa no final, fazendo com que o prompt seja desenhado no final do programa (comportamento definido pela implementação).
14. O valor de retorno não está definido (comportamento definido pela implementação).


5

Ir

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 explicação está aqui . As regras "while" e "despiteallobjections" não aparecem nas especificações, mas o lexer apenas as pula, como uma espécie de ovo de páscoa. Acho que o linter é mais compatível com os padrões, porque se você clicar em "Formatar" no link Go Playground, receberá um erro de análise.


4

Javascript

standards:
while(1)
   break standards

Explicação:

Um loop while rotulado como "standards" é encerrado.

Padrões quebrados:

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


2

O GML quebra uma tonelada de padrões. Uma delas é a beleza de não permitir o uso de operadores ternários. Em vez de usar operadores ternários, no GML, eu faria o seguinte:

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

Onde o equivalente ternário é:

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

O primeiro é bastante desagradável, especialmente quando você começa a adicionar outras operações.


1

Haskell

Meu programa realmente não quebra nenhum padrão, mas apenas seleciona aleatoriamente um para usar. Ele tenta ser justo com os diferentes padrões. Aqui está o meu código.

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

fairUnlinesterá uma lista de Strings e se juntará a elas usando padrões aleatórios de caracteres de nova linha. Além disso, é a primeira vez que realmente utilizo o estilo de aplicativo, no IO, no entanto.


1

Bater

Tomando como exemplo:

ping 192.168.0.1 -c 1 -s 10000

Supondo que seu roteador esteja em 192.168.0.1

Nota: o tamanho máximo do ping é 65kb, então eu fiz 10 kb em vez de 10 mb


Ótima resposta! Existe uma versão para Windows disso (além do Cygwin)?
George George

@GeorgeH - não que eu saiba
TheDoctor

Ok - Vou ter que acionar o Virtualbox novamente (faz muito tempo!) #
George

0

Java

Oh querida, alguém esqueceu o getter novamente ...

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

O Usefulcampo deve estar em minúsculas :useful

Não tenho certeza se esse é um padrão: importação de curinga inútil (deve ser apenas java.lang.reflect.Fieldporque é tudo o que está sendo usado).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.