Escreva um trecho, uma função, um programa, ... que seja ofuscado de uma maneira que pareça claro à primeira vista que ele faz outra coisa.
Por exemplo: escreva um pouco de código que adicione dois números, mas quando você perguntar a alguém "o que ele faz?", Ele informará que ele exibe "Olá, Mundo!".
Regras
- O código deve ser legível para quem conhece aproximadamente o idioma que você usa (evite o idioma ofuscado intrínseco como APL, no seu próprio interesse).
- O código deve fazer algo inesperado que o leitor inicialmente não pôde prever.
- Quando você pergunta a leitores diferentes, eles devem ter a mesma opinião (errada) sobre o que o código faz.
Avaliação
- Leia os códigos de outros concorrentes durante um período máximo de 10 a 20 segundos, apenas para ter uma boa idéia do que acontece lá.
- Adicione um comentário à resposta dizendo o que você acha que o código faz. Se a resposta que você deseja dar já estiver lá, basta marcar o comentário com +1 . (se você perder essa resposta e adicionar outro comentário, não se preocupe, ela não será contabilizada como outra resposta).
- Os pontos serão mostrados desta maneira: (
maxFalseOpinion
-goodGuess
) /totalOpinion
(veja o exemplo abaixo). - Classifique outros competidores com fairplay e não comente seu próprio código.
- Adicione apenas comentários úteis. Evite "eu não sei" e "bom!", Eles não são levados em consideração para a classificação, mas é o código e não as classificações que devem ser ofuscadas.
Exemplo de classificação
O trecho adiciona dois números. Os comentários dizem:
(3) Ele exibe "Olá, mundo!"
(1) Substrata 2 números.
(2) Adiciona 2 números.
A quantidade total de pontos é o número máximo de opiniões (3) - o número de boas suposições (2) dividido pela quantidade total de suposições (3 + 1 + 2 = 6). Resultado: (3 - 2) / 6 = 1/6 = 16,67% .
MAIS SOBRE PONTOS
As pessoas parecem ter algum problema para descobrir os pontos.
Aqui está uma pontuação perfeita:
printf('Hello World');
comentários:
exibe o número de vezes que você clicou em um botão. (17 comentários).
TOTAL: 17 comentários
Pontuação: (17-0) / 17 = 1 = 100%
Aqui está uma pontuação ruim:
printf('Hello World');
comentários:
Imprime "Olá Mundo". (13 comentários).
TOTAL: 13 comentários
Pontuação: (0 - 13) / 13 = -1 = -100%
Aqui está uma pontuação não tão ruim:
printf('Hello World');
comentários:
Imprime o nome do usuário. (2 comentários).
Ele exibe a hora atual (15 comentários).
Retorna o que você inseriu sem modificação. (3 comentários).
Imprime "Hello World" (1 comentário).
TOTAL: 21 comentários
Pontuação: (15 - 1) / 21 = 0,6667 = 66,67%
Explicando:
15 é o principal palpite, o que as pessoas mais disseram. 1 é o número correto de suposições. 21 é a soma de todos os comentários.
fonte
Respostas:
Javascript
Resposta: Emite
1
. Os comentários abaixo explicam muito bem - existem duas variáveis diferentes aqui, a - 'LETRA PEQUENA LATINA A' e 'CARTA PEQUENA CIRILICA A' .Houve 1 resposta correta, 50 pessoas pensaram que produz 2, e com um total de 52 respostas, a pontuação é (50 - 1) / 52 = 49/52 = 94,23%
fonte
2
ou pelo menos é isso que eu espero :)C, pontuação 33,3%
Corre
./prog 'Hello & goodbye, world!'
Ponto
A resposta correta é
H\n
(issowhile
faz parte do comentário, graças à linha que termina com\
, então não há loop), dada por 6 pessoas.O erro mais popular foi
Hello goodbye, world\n
dado por 25 pessoas.(25 - 6) / 57 = 33,3%.
Agradecemos a Olivier Dulac por se preocupar em calcular.
fonte
H\n
.Hello goodbye, world!
(no \ n) (2 espaços após o Hello)Pitão
Avaliação
Boa resposta: Imprime
0 1 4 9 16 25 36 49 64 64
cada número em uma linha.Explicação: Apesar de ninguém obter a resposta certa, considero essa tentativa principalmente falhada, porque ninguém cometeu o erro que eu pretendia. (Acrescentarei uma explicação real mais tarde, se mais ninguém o fizer.)
Número de boas respostas: 0
Número de pessoas com a mesma resposta errada: 7
Número total de respostas: 11
Pontuação: 63,64% (arredondado para duas casas decimais)
Explicação
Primeiro, uma lista
a
é criada e preenchida com valoresi * ++i
. Não há++
operador no Python, mas há um+
operador unário , que não faz nada para números inteiros, e aplicá-lo duas vezes ainda não faz nada. Portanto,a
contém os quadrados dos números inteiros de0
a9
.Eu tinha colocado isso
++
como uma distração e esperava que a maioria dos eleitores continuasse, pensando que haviam encontrado a armadilha e cair na armadilha real. Não deu certo. Alguns achavam que++
era um erro de sintaxe, e os outros ainda procuravam a armadilha.A armadilha A armadilha estava no segundo for loop:
Eu tinha certeza de que a maioria das pessoas pensaria que isso imprime todos os
a[i]
, ou seja0 1 4 9 16 25 36 49 64 81
, cada número em uma linha. É o que você obtém com essa variação, por exemplo:x
recebe os valores ema
ex
é impresso. Na primeira versão,a[i]
são atribuídos os valores ema
e, em seguida,a[i]
são impressos. A diferença é que, no nosso caso, temosi == 9
e, portanto, o valor dea[9]
é alterado a cada vez no loop. Quando finalmentea[9]
é impresso, tem o valor dea[8]
e, portanto,64
é impresso novamente.fonte
++
no Python).SyntaxError
no segundofor
.81
dez vezesSyntaxError
no segundofor
. Isso é incrível. Isso realmente deveria ganhar. Levei 5 minutos para entender o que estava acontecendo lol!JavaScript , pontuação de -100%
Eu não inventei isso, Gary Bernhardt, mas é um dos meus favoritos
fonte
-100%
...?Python, -54,8%
Resposta: Aumenta
SyntaxError: not a chance
Explicação:
from __future__ import braces
é um dos ovos de páscoa em Python. É uma piada, dizendo que o Python nunca usará chaves para escopo no futuro.fonte
SyntaxError: not a chance
Perl, 26,67%
Resultados:
Isso mostra "Eu sou ambivalente em dizer qualquer coisa."
my $num1,$num2 = @_;
está faltando parênteses. Portanto, é equivalente amy $num1; $num2 = @_;
.$num1
não é definido para nada.Assim,
$num1
nunca é maior que zero. O pouco sobre o mundo secreto dos peixes escondido na tela é, err, um arenque vermelho, para que as pessoas pensem que encontraram o "truque".Além disso, o operador ternário é um valor l em Perl:
1 ? $a = 1 : $b = 2
na verdade significa(1 ? $a = 1 : $b) = 2
. O que significa($a = 1) = 2
é avaliado, configurando$a
para2
. Ao contrário das aparências, a segunda sequência é atribuída$num1
.Caso você esteja se perguntando,
//
é o operador definido ou. Se o sub retornasse um valor indefinido, a sequência"Stuff did not happen."
seria impressa. Mas isso realmente não acontece. Era apenas para dar às pessoas outra opção.Pontuação:
Total correto: 5
Total de suposições: 30
Pontuação: (13-5) / 30 = 26,67%
fonte
This is a secret fish world. Carp cannot be repressed!
.Hello, world!
.1 ? $a = 1 : $b = 2
na verdade significa(1 ? $a = 1 : $b) = 2
. O que significa($a = 1) = 2
é avaliado, configurando$a
para 2. Além disso, como Primo apontou,my $num1, $num2 = @_;
não faz o que você espera, porque os parênteses estão ausentes.PHP 52%
(Copiado literalmente daqui )
Explicação e Pontuação
fonte
train
.C ++ 28,9%
Solução
Ponto
Cortesia de Alvin Wong
HelloWorld
(considerando que minitech e zeel são iguais)Hello\nworld
3 pensou em outra coisa.fonte
cout
se chamado sem parâmetros.HelloWorld
.Rubi, 100%
Resposta correta:
Pontuação: 3 da mesma resposta errada, sem outras respostas.
fonte
Python, -28,13%
Isso é impresso
11
porque oelse
bloco, que pertence aowhile
, é executado depois que o loop é encerrado.Pontuação: (8-17) / 32 = -28,13%
fonte
else:
11
em uma linha.Python: Classificação: -27%
O programa imprime:
Classificação: Total de opiniões: 22 12 correto 3 + 1 + 6 errado [para a resposta de Bakuiru, eu diria que estava próxima, mas ainda incorreta, pois os.name é uma string (os.uname é uma função)]
Classificação com base nessa premissa e no meu entendimento do sistema de classificação: Máximo errado = 6 Correto = 12 Pontuação = (6-12) / 22 = -27%
fonte
What is your name: [operating system name]
,What is your quest: Seek and find the holy grail
,What is your favourite color: blue
em linhas separadas. Obviamente,[operating system name]
é substituído pelo nome real.name = "Robin"
,seek = "Seek and find holy grail"
efavorite_color = "red"
, oh, não.blue
! (AAARRGGGHHH!)What is your name: <function os.name at 0x....>
etc.What is your name: Robin
,What is your quest: Seek and find holy grail
e,What is your favorite color: blue
em linhas separadas.Pitão
editar:
pontuação (8-1) / 9 == 77,7%
a saída correta é '2 é empresa' no python 2, '3 é uma multidão' no python 3.
fonte
2 is a crowd
(em Python 2, 3 em Python 3).2 is company
(no Python 2) ou3 is a crowd
(no Python 3).JavaScript, -46,7%
Você pode executá-lo aqui quando estiver pronto (adivinhe primeiro!). Se você rolar para baixo o suficiente no painel JS, verá o código com uma breve explicação.
Resposta correta:
Pontuação:
fonte
Please enter a number:
e retorna a resposta seguida portrue
.That's a big number
após um atraso igual ao número digitado em ms.Javascript
Resposta: Alertas
Hello
. Oconcat
método não modifica a matriz - ele retorna uma matriz que contém a concatenação da matriz na qual ela é chamada e quaisquer outros argumentos fornecidos.15 corretas, 26 erradas, 41 respostas no total e a pontuação é (26-15) / 41 = 11/41 = 26,83%
fonte
Hello, world!
Hello
Python 33,3%
Nota: Suponha que este seja o Python 2.xe não o Python 3.
Quando executado, esse código produz um
UnboundLocalError: local variable 'True' referenced before assignment
.fonte
SyntaxError
False, True = True, False
?True
.UnboundLocalError
.Java
Primeira tentativa de codegolf ...
boa resposta: impressões
Some ungodly gibberish and then some more.
e uma nova linhaAvaliação:
Pontuação: 9% (55% no modo pedante)
fonte
Some ungodly gibberish and then some more.
Some ungodly gibberish
com uma nova linhaC # 62,5%
Este é o meu primeiro código de golfe.
A resposta correta foi: "algo entre 55 e 110". Isso porque sempre que a instrução "sum + = i" for executada, ela usará o valor atual de i. Esse código pode até ser executado depois que o loop for for concluído , no ponto em que eu tenho o valor 11. Isso cria o valor mais alto possível 110 (e você pode ver isso se desacelerar o lambda em seus testes). O menor valor possível é sum (1..10), que é 55.
pontuação: a rigor, ninguém acertou, então a pontuação deve ser (5-0) / 8 = 62,5%. Se quisermos contar "aproximadamente bom" como resposta correta, a pontuação será (5-5) / 8 = 0%
fonte
Python, -83,3%
Resposta: Imprime
a < b
se as entradas forem iguais,a = b
se a primeira for maior ea > b
se a segunda for maior.Explicação:
cmp(a, b)
retorna0
se os dois argumentos forem iguais,1
se o primeiro for maior e-1
se o primeiro for menor, e é por isso que o símbolo de comparação incorreto será impresso.fonte
a = b
para entrada a == b,a < b
para a entrada a> b, ea > b
para a entrada de um <ba = b
se a> b,a < b
se a == b,a > b
se a < b. (Este é provavelmente o que @Foon significava.)PHP, 100%
Primeira postagem no código do golfo, espero que isso não seja ruim.
saída correta é 'hellohelloworld'
a pontuação é (10 - 0) / 10 = 1 = 100%
fonte
hello world
.'one' == 0
=>true
. Bastante inteligente.Perl: 100% (4-0) / 4
Este programa imprime "3" sem uma nova linha. Perl analisa esta instrução como
então apenas o
(1+2)
é passado como argumento paraprint
.fonte
9
seguidas por uma nova linhaC #
fonte
CPython
saída correta é 'Olá'
pontuação (14-3) / 19 == 57,9%
fonte
Hello\nWorld!
.Hello
. (Dependente da implementação.)C (Pontuação: 4.45%)
Boas suposições: 7
Máximo de suposições erradas: 6 + 2 = 8
Total de suposições: 6 + 7 + 3 + 2 + 4 = 22
Solução:
??/
é um trigrafo para\
, portanto, a nova linha é escapada e ascanf
linha é comentada. Portanto, o programa funciona para sempre, imprimindoGuess a number between 1 and 10:
. Os comentários são uma citação de Mozart (viafortune
).Spoiler, como compilar e executar:
fonte
"Guess a number between 1 and 10: Guess a number between 1 and 10: Guess a number between 1 and 10: " (and so on)
sem pedir entradaJava
A resposta
Imprime
Padded value:
(com uma nova linha).O
format
método da string éstatic
, com o formato sendo passado como o primeiro parâmetro. Ou seja, a chamada acima é equivalente a:Número de boas respostas: 2 Respostas erradas: 9
Pontuação : (9-2) / 11 = 63%
fonte
Padded value: - 0012\n
C
Pontuação = (3-16) / 19 == -68,4%
Não esqueça sua toalha.
fonte
C ++
Pontuação = (1 - 6) / 7 = -0,71428571428571 = -71,428571428571%
fonte
Javascript
fonte
Z = false
.Pitão
a saída correta é 'hell0 w0rld'
pontuação (8-14) / 22 == -27,3%
fonte
hell0 w0rld
R: 100%
Não é tão imaginativo, mas pode confundir algumas pessoas:
O que você acha que é o resultado?
Editar :
A resposta foi 20. Devido à falta
s
destringAsFactors
( em vez destringsAsFactors
), o argumento não é reconhecido, portanto a função cria uma nova coluna chamadastringAsFactors
. Devido à reciclagem de vetores, a coluna contém 10 vezesTRUE
que são convertidas em1
s na soma, portanto, um total de 20 e não 10.Esta resposta não foi dada nos comentários. Foram dadas 3 respostas (todas dizendo
10
mais ou menos). Daí uma pontuação de 100%, eu acho.fonte
10
.Tcl
Inspirado por ugoren
Desculpe, esqueci uma sequência de exemplo. Ok, corra como
Editar solução certa: não filtra nada. ( 6x )
Máxima resposta errada: 4x
Total de respostas: 10
Pontuação: -0.2
fonte
" "
,"&"
,"\"
.