Escreva um programa que aparentemente adicione os números 2 e 2 e produz 5. Este é um concurso secreto.
Seu programa não pode gerar erros. Cuidado com os buracos da memória! A entrada é opcional.
Redefinir 2 + 2 como 5 não é muito criativo! Não pense duas vezes, tente outra coisa.
echo "2+2=5";
Respostas:
Java
A reflexão é realmente o caminho certo para abusar do Java ... mas você precisa ir mais fundo do que apenas ajustar alguns valores.
Resultado:
Explicação:
Aviso: fazer isso em código real deixará as pessoas muito infelizes.
Demonstração de código em ideone .
fonte
Integer[] array = (Integer[]) c.get(cache); fisherYatesShuffle(array);
Imaginem quantas coisas iria quebrar ...Haskell
Eu simplesmente amo como você pode jogar qualquer coisa no ghci e ele rola totalmente com ele.
fonte
let 2+2=5 in 5+5
faz? #Non-exhaustive patterns in function +
- Estou definindo uma nova função (+) aqui, e se eu conectar algo que não2+2
seja, ocorrerá um erro porque nunca defini o que deve acontecer nesse caso.C
Truque bem barato, mas tenho certeza de que vou prender a maioria de vocês.
Experimente aqui
fonte
GolfScript
Imprime
5
.fonte
Java
Sempre tem que arredondar suas duplas, pessoal
Resultado:
Explicação:
fonte
Math.ceil(two + two); // round just in case
Eu vejo o que você fez lá #two
. O nível de produção java éTwo two = Two.two.two();
com Two.two sendo do tipo TwoFactory.BBC BASIC
EDIT: Para Andrea Faulds e Squeamish Ossifrage, uma versão mais convincente usando um intérprete diferente: http://sourceforge.net/projects/napoleonbrandy/
A imagem original usando o emulador em http://bbcbasic.co.uk/bbcwin/bbcwin.html . (com código ligeiramente diferente) pode ser visto no histórico de edições.
fonte
2+3=5
e2+2=5'
VDU 23,52,126,96,124,6,6,102,60,0
Brainfuck
Resultado:
Experimente aqui .
Sei que isso pode parecer um pouco simples, mas tentei ser criativo, conforme sugerido na postagem original.
fonte
+++++.
pode pintar qualquer coisa.Bater
Uma vez que este é um concurso de popularidade , acho que devo usar um método muito complicado ...
Para pessoas que não conhecem o Bash:
$((...expr...))
é uma sintaxe para avaliar expressões aritméticas.$(bc<<<...expr...)
faz o mesmo usando abc
calculadora da linha de comandos.Resultado
Explicação
fonte
15
em vez de16
na linha 4. Felizmente, ele ainda trabalhou por causa debc
's arredondamento((v = v * 5))
ou((v *= 5))
+=
coisa imediatamente.v=2
ev+=2
): para alguém não familiarizado com o tratamento de variáveis do Bash, isso seria equivalente a2+2
, mas é de fato"2"+"2"
, ie"22"
. os outros comentários no código estão errados apenas por causa disso. Eu sei que nem todo mundo acha isso engraçado #Pitão
Inspirado pela resposta Java:
Uma versão mais ofuscada
Além de 2 + 2
Como o OP mencionou, 2 + 2 pode ser meio chato; então aqui está um código mais limpo, multiplataforma e com várias larguras para abuso arbitrário.
Correndo com o Python 2.7 ... ignore essa linha no final. Funciona no Windows de 64 bits e no Ubuntu de 32 bits, os dois sistemas aos quais tenho acesso fácil.
Sem surpresa, podemos quebrar a propriedade associativa de adição, onde ( a + b ) + c = a + ( b + c ), como visto nas
1+2+3
linhas 1 e 2 , mas inexplicavelmente também quebramos a propriedade comutativa (onde a + b = b + a ; 2ª e 3ª linhas). Gostaria de saber se o interpretador Python simplesmente ignora parênteses supérfluos em torno de expressões de adição.fonte
exec('\x66\x72\x6f\x6d\x20\x63\x74\x79\ \x70\x65\x73\x20\x69\x6d\x70\x6f\ \x72\x74\x20\x63\x5f\x69\x6e\x74\ \x38\x3b\x20\x69\x6d\x70\x6f\x72\ \x74\x20\x73\x74\x72\x75\x63\x74\ \x3b\x20\x63\x5f\x69\x6e\x74\x38\ \x2e\x66\x72\x6f\x6d\x5f\x61\x64\ \x64\x72\x65\x73\x73\x28\x69\x64\ \x28\x34\x29\x20\x2b\x20\x73\x74\ \x72\x75\x63\x74\x2e\x63\x61\x6c\ \x63\x73\x69\x7a\x65\x28\x27\x50\ \x50\x27\x29\x29\x2e\x76\x61\x6c\ \x75\x65\x3d\x35')
É uma primeira versão modificada. Eu fiz isso para poder colocá-lo em $ PYTHONSTARTUP no / etc / profile como equipe vermelha nas competições de hackers.JavaScript:
Verifique em http://jsfiddle.net/qhRJY/
fonte
Javascript
Você pode vê-lo em uma calculadora diferente aqui .
fonte
PHP
Qual produz:
fonte
PHP
exemplo:$a=2;echo "2+2=".$a++ + $a++;
Javascript
fonte
=
em vez de==
fácil de ver e francamente sem inspiração.=
apenas como um assigment mas um operador de comparação (por exemplo, Pascal, SQL, VB)C #
fonte
;
depois, o que era perfeitamente intencional, pois eu estava usando o loop vazio para avançar um cursor. Tirei acidentalmente o ponto-e-vírgula, tudo explodiu e não consegui descobrir o porquê.É perigoso decorar seu Javascript com arte ASCII.
fonte
--
operador era aceitável, pois deveria ter erroInvalid left-hand side expression in prefix operation
; no entanto, percebi que há um caractere de espaço em branco entre eles.Bater
Resultado:
Aqui está outro:
fonte
set a to {1, 2, 3, 4, 5, 6, 7, 8}
item 4 of a
zsh
usa matrizes indexadas a 1 (e$arr[0]
é simplesmente não definido ou indefinido ou algo assim), a menos que aKSH_ARRAYS
opção esteja definida; nesse caso, as matrizes são indexadas com 0.Perl
fonte
R
resultado:
5
fonte
Java
resultado:
Provavelmente funciona em qualquer idioma que use o mesmo tipo de duplas.
fonte
_2_56 + _2_56 = _5_12
), mas parece mais provável que você quer dizer256.000000000000_2_ + 256.000000000000_2_ = 512.000000000000_5_
(nota:. Sublinhados usado para "negrito" os dígitosBefunge
Isso está escrito no Befunge, mas foi projetado para se parecer com Python.
Quando executado (com o intérprete correto), o programa será impresso
5
.Explicação:
fonte
Javascript
Código:
Resultado:
Você pode testá-lo no seu console ou verificar este Fiddle
fonte
U+0431
,, é quase 6!C (Linux, gcc 4.7.3)
Imprime 2 + 2 = 5
Então a = 2, certo?
fonte
FORTRAN 77
fonte
2=3
Pitão
O código imprime 5, que é a resposta correta para esta tarefa.
Edit: Aqui está a versão alternativa, que adiciona números inteiros, e não a dois.
fonte
~eval(`a`)
invés de apenas~a
?int()
funcionalidade eeval()
faz o trabalho se a entrada for um número inteiro stringified :)Rubi
Os efeitos colaterais disso são ainda piores que a versão Java.
fonte
Rubi
Ruby tem ambientes de primeira classe. Isso significa muitas coisas. Isso também significa que muitas coisas podem ser feitas que ... talvez não devam.
A saída disso é:
Se você quiser entender mais sobre as alegrias e os perigos disso, Ruby Conf 2011 Mantendo o Ruby Razoável e leia Ambientes de primeira classe no blog Abstract Heresies.
fonte
class Fixnum; def +(n) 5 end end; 2 + 2 # => 5
class Fixnum; alias_method :orig_plus, :+; protected :orig_plus; def +(n) self == 2 && n == 2 ? 5 : self.orig_plus(n) end end
Esquema
fonte
2+2
não é assim que você faz adição no lisp!((((2))(()()))()()(()((((+))))()(((()(())((((2)))))()))(())))
.C #
Para alguém não familiar, parece que estou recebendo um intervalo começando e terminando em 2. Na realidade, ele começa em 2 e passa por dois números. Então 2 + 3 = 5.
fonte
{ 2 }
, não é?Enumerable.Range
não inicia nem termina, mas inicia e conta (de elementos que serão enumerados).F #
Vamos colocar na seguinte declaração fsi:
Resultado:
fonte
C
O
5
medo não está muito bem escondido. Não funciona com otimização.fonte