Escreva um programa disfarçado [fechado]


14

O desafio é criar um programa que resolva qualquer um dos problemas do HQ9 +, parecendo outro idioma.

Nota : Este não é um desafio de golfe.

Regras:

  • O programa deve executar uma das seguintes tarefas ao executar.
    • Imprimir "Olá, mundo!"
    • Imprima toda a fonte.
    • Imprima a letra de "99 garrafas de cerveja na parede" (como pode ser visto aqui ).
  • À primeira vista, o programa deve se parecer com outro idioma.

Classificação

  • Programa de trabalho que satisfaz as regras. +3
  • Pontos de bônus se o "outro idioma" puder ser executado (sintaxe válida). +1
  • Ainda mais pontos se o "outro idioma" puder fazer algo útil. +3
  • Muitos pontos de bônus para o programa serem válidos (e úteis) em ainda mais idiomas. +5 para cada idioma acima de 2.

1
Como eles são classificados? Você precisa de um critério objetivo. Confira aqui: codegolf.stackexchange.com/help/on-topic
MrZander

Ok, estou adicionando um sistema de pontos.
Kevin Cox

1
Então ... você está procurando um poliglota ?
Iszi

Sim. Mas com ênfase em "ocultar" os recursos de todos, exceto um idioma, até certo ponto.
Kevin Cox

4
print ("Hello, World");por si só será executado em um monte de línguas
marinus

Respostas:



18

Espaço em branco Ruby + C +.

Este programa é C, mas parece (e é executado) como Ruby. Eu também consegui colocar algum espaço em branco lá.

C imprime sua própria fonte (infelizmente não é um problema). Ruby imprime 99 garrafas de cerveja e o espaço em branco diz olá.

#include <stdio.h>  
#define def int          
#define beer main(int i){char b[1024];          
#define print(v) print(int v){            
#define end ;}                
#define if(x) fputs(b,stdout); fgets(b,1024,f); if(x){               
#define else ;} else{                       
#define puts                    
#define print        
#define open(fn) FILE *f = fopen(fn,"r");             
#define while(x) fgets(b,1024,f); while(!feof(f)){                      


def beer                
    # define beer      

    open("test.c")

   i=100;


    while ( i >= 0 )
        if ( i > 0 )
            print "#{i} bottle#{i==1&&''||'s'} of beer on the wall, "
            puts  "#{i} bottle#{i==1&&''||'s'} of beer."
            print "Take one down and pass it around, "
            puts  "#{i-1} bottle#{i==2&&''||'s'} of beer on the wall."
            puts
        else
            puts "No more bottles of beer on the wall, no more bottles of beer."
            puts "Go to the store and buy some more, 99 bottles of beer on the wall."
        end
        i -= 1
    end

    return 0      
end

beer

E como o SO não é muito bom para o ws, aqui está um link .


15

Golfscript / HQ9 +

9

Um quine Golfscript que funciona como um programa HQ9 + que imprime a letra em 99 garrafas de cerveja.

Eu sei que isso não é um desafio de golfe, mas não pude resistir ao desejo de responder a isso com um personagem.


1
E eu era o bastante tola para assumir HQ9 + não poderia ser semelhante a uma outra língua: D
Kevin Cox

5
Sim! E loucamente parece mentir o número "9".
Pierre Arlaud 27/11/2013

7

Perl, 7 pontos

99 <?php
for($i='no more',$_="`\2l\";7hF'`-{9\17p\t\2ZY\14fE\25T\133J`\35l\"76~\x3";
99>${2}="$i bottle".(${$i+=1}<'))'?+s?:s:!'((').' of beer';
${3}="
Take one down and pass it around, ${1}.

".ucfirst("${1}, ${2}.${3}"))${1}=$i||${2}?"${2} on the wall":'?;\'';
print substr("${1}, ${2}.${3}".
($_^"jE\3\2OXH2O\5\15\10M$_").", ${2} on the wall.",3,13*$i*$i);

Este é um programa Perl que imprime Hello, World!.

Classificação da pontuação:

  • Segue todas as regras: +3
  • A sintaxe é válida em outro idioma: +1
  • Faz algo interessante no outro idioma: +3

Nota:

Uma vez que você saiba o que faz, pode parecer "óbvio" onde está, mas isso é uma bobagem.

Os seguintes:

$_="`\2l\";7hF'`-{9\17p\t\2ZY\14fE\25T\133J`\35l\"76~\x3";
print$_^"jE\3\2OXH2O\5\15\10M$_"

irá produzir:

Go to the store and buy some moreET[J`l"76~

7

JavaScript, 7 pontos

<!--
h='Hello, World!'
-->

/******<br>

<b>Hello, World!</b><br>

*******<br>

This is my <i>awesome</i> Hello World page<br>

*******<br>

Look I can make images I'm so good at HTML:<br>
<img src='http://pieisgood.org/images/slice.jpg' alt='awwww you cannot see my amazing image' /><br>
<hr>

These are the things this page has:<br>
<ul>
<li>Bold</li>
<li>Italics</li>
<li>Images</li>
<li>Lists</li>
</ul><br>

I like random characters! That's what this page will finish with:<br>
;37!&$89]"]0(!)89^!&8*/81+-0;h

Quando executado em JavaScript, produz "Olá, Mundo!"

Quando visualizado como HTML, fica assim:

captura de tela

Pontuação

  • Programa de trabalho que satisfaz as regras +3
  • A sintaxe de outro idioma é válida com +1
  • Outra linguagem faz algo útil (você pode colocar qualquer HTML que desejar) +3

Sutil! Isso pressupõe que a implementação que a avalia imprime o valor de conclusão da última instrução em stdout.
FireFly

@ FireFly sim, é isso que evaltodos os consoles fazem.
Maçaneta

evalnão imprime no stdout; retorna como resultado da expressão de chamada de função. Mas sim, estou apenas procurando; Desculpe. : p
FireFly

6

C ++ / Python

#include <iostream>

#define print(a) int main() {std::cout << a << std::endl;}

print("Hello, World!")

Será executado em Python (2.xe 3.x) e compilado em C ++ para imprimir (com retorno de carro):

Olá Mundo!


5

O seguinte imprime "Olá, Mundo" (e uma tabela aleatória) em HTML e "Olá, Mundo!" no espaço em branco .

<html>             
<head>  
<title>                     
Hello,World!    
</title>                      
<body>  
<p>                       
Hello,World!    
</p>                            
<table> 
<caption>                 
Summary 
</caption>           
<tbody> 
<tr>                            
<th>Year</th>   
<th>Revenue</th>                            
</tr>   
<tr>                     
<td>2012</td>   
<td>$100,000</td>                     
</tr>   
</tbody>                  
</table>    
<footer>                
HTML5!  
</footer>  
<!--Comment-->
</html>

Você pode encontrar uma versão do "99 Bottles" aqui 99-bottles-of-beer.net/language-whitespace-154.html
Davio

5

PHP, HQ9 +, Brainfuck e Bash (23 pontos, eu acho)

Parece PHP, mas ...

Abuso de redirecionamento e citações de STDERR.

what the >&_@ is a "<?php
//Boring, really ( ;[ ). This just prints Hello World!"
echo "Hello, World!"; //]&> are random characters that I like putting in"
?>" program?

Isso roda e executa as coisas em todas as línguas listadas, mas parece com o código PHP (um pouco estranho).

No Bash, apenas imprime "Olá, mundo!" (criando arquivos indesejados ao longo do caminho).

No HQ9 +, ele imprime Hello World algumas vezes (uma vez para cada ocorrência de Hou h).

No Brainfuck, é um "programa de gato" - ele lê da entrada padrão e envia sua entrada para a saída padrão ( ><,[.,]>>).

No PHP, ele imprime algum texto:

o que o> & _ @ é um "Olá, mundo!" programa?

Explicação do Bash

>&_@é disfarçado como texto inofensivo que substitui uma maldição, mas na verdade é um redirecionamento do STDERR para o arquivo _@, para que o Bash não reclame que whatnão é um programa válido. Ele também come o is a <?phppouco e o primeiro comentário.

O primeiro comentário possui uma citação no final (as aspas existem para impedir a <?phpexecução). echo "Hello, World!";roda normalmente nos dois idiomas. O próximo comentário serve para ocultar outra citação e há um redirecionamento de saída de STDERR para o arquivo are, para exibir a mensagem "//: É um diretório".

Como o fechamento ?>está entre aspas, ele não é executado e é comido junto com o segundo comentário e pouco depois.


4

JavaScript, 3p

<!--
$res = Array();
$ks  = Array("", "", "");

function convert($x) { return $x["toString"](36); }
for ($i=0; $i < 1000000; $i++) {
  this[convert($i)] = $i;

  if ($i == 626 || $i == 777 || $i == 865 || $i == 1176 || $i == 35761)
    $res[$res.length] = convert($i);

  if ($i == 381  || $i == 19145) $ks[0] += convert($i);
  if ($i == 19   || $i == 31775) $ks[1] += convert($i);
  if ($i == 1033 || $i == 27893) $ks[2] += convert($i);
}
this[$ks[0]]($res[$ks[1]]("")[$ks[2]](1)[$ks[1]](" "));
-->

yay

<h1>hi</h1>   /// heading
<p>lol</p>    /// content

Mascara a saída de um servidor da Web configurado incorretamente, como (algo que à primeira vista parece) confusão PHP + HTML .

Isso começou pequeno, mas cresceu à medida que eu tentava tornar menos óbvio o que faz (quando avaliado como JS) ... pode ter ficado mais ofuscado do que a tarefa pretendida, desculpe-me por isso. Enfim, a principal coisa que eu queria incluir era o meu truque para incorporar (um subconjunto de) HTML, de modo que também seja um código JavaScript válido, que é o que você vê no final do código.

Edit: oh, devo mencionar, quando executado no contexto de um site, o código alerta "olá mundo" .


Aha, eu amo os vários cifrões. O html javascript também é muito legal.
Kevin Cox

Hehe, o truque com o HTML javascript é que <e> são comparações, /.../ é um literal de regex (daí as barras triplas para comentários ..) e JS não se importa nem um pouco com os tipos.
FireFly

2

Python / PHP / Lua / Perl / Perl 6 / Ruby / JavaScript / HQ9 + (37 pontos)

print("Hello, World!")

Parece "Olá, Mundo" em Python, mas na verdade é um quine escrito em PHP. Também funciona em JavaScript (SpiderMonkey), Lua, HQ9 +, Perl, Perl 6 e Ruby, para pontos de bônus.


2

JavaScript / Python 3 / PHP / Lua / Brainfuck / bash

Isso parece ... Umm ... PHP ofuscado?

#!,[.,]
echo = --[[0] ] [0][0] //1#>/dev/null;echo Hello, World!;exit # ]]0
--[[0] ] [0][0] //1#<?php for ($i = 99; $i > 1;) { printf("%d bottles of beer on the wall, %d bottles of beer.\nTake one down and pass it around. %d bottle%s of beer on the wall.\n\n", $i, $i, --$i, ($i != 1 ? "s" : "")); } print("1 bottle of beer on the wall, 1 bottle of beer.\nTake on e down and pass it around. No more bottles of beer on the wall.\n\nNo more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more. 99 bottles of beer on the wall.\n"); die(); ?>
2//2; print("Hello world!"); exit();"""
console.log("Hello, World!");/*]]
f = io.open(arg[0])
print(f:read("*a"))
--[[*///]]--"""
  • Se você executá-lo no bash, JavaScript ou Python, ele imprimirá "Olá, mundo!"
  • Se você executá-lo em Lua, ele imprimirá o código-fonte do script (se fornecido como o primeiro argumento para lua).
  • Se você executá-lo em PHP, imprimirá a letra de 99 garrafas de cerveja
  • Se você executá-lo como Brainfuck, funcionará como cat.

Pontuação: 27

  • Segue as regras: 3
  • Outro idioma pode ser executado: 1
  • Faz algo útil: 3 (programa para gatos)
  • Também funciona em JS / Python 3 / Lua / bash: 20

Espero não estar dobrando muito as regras :)


0

Java escrito em C ++

#include <stdio.h>

typedef char* String;

class P{
public:
    static void println(String s){
        puts(s);
    }
};

class S{
public:
    P out;
};


int main()
{
    S System;
    System.out.println("Hello world!");
    return 0;
}

Marque 3 pontos.


0
print`open(__file__).read()`, 1000 // len('''
/* Calculate code conciseness score for some random JavaScript */

function print() {
    console.log('Hello, world!');
}

<!--''') # ASCII submarine

Isso se parece com o Python 2 e é executado como Python 2, imprimindo sua própria fonte na forma literal de string do Python, bem como uma pontuação de concisão de código de algum tipo! Quando executado como ES6, no entanto, ele imprime "Olá, mundo!".

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.